2009-12-04 Geoff Norton <gnorton@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2
3         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
4         if the delegate class is dynamic.
5
6         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
7         in gshared code too using the new rgctx info type
8         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
9
10 2009-12-04  Geoff Norton  <gnorton@novell.com>
11
12         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime, 
13         we need to track the original suspend count so the thread properly
14         wakes up in resume_thread.
15
16 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
17
18         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
19         code.
20
21         * generics.cs: Add a test.
22
23         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
24         is 0. Simplify a lot of code using this.
25
26         * mini-trampolines.c (mono_delegate_trampoline): Call
27         mono_create_static_rgctx_trampoline () before saving the final address in
28         delegate->method_code, to avoid calling it each time a delegate is first called.
29
30         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
31         which need static rgctx trampolines.
32
33         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
34         keyed on the method+addr pair, since addr could be either the method addr or
35         an unbox trampoline in the AOT case. Fixes #560246.
36
37 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
38
39         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
40         place it was called before too.
41
42 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
43
44         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
45         if no security manager is present, to speed up the AOT case. Call
46         mono_class_vtable () full with raise_on_error == TRUE instead.
47
48 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
51         the local optimization passes can take its result into account. Fixes
52         #559876.
53
54         * exceptions.cs: Add a test.
55
56 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
57
58         This patch is contributed under the terms of the MIT/X11 license
59
60         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
61
62 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
63
64         * mini.h (MonoInst): Remove unused 'ssa_op' field.
65
66         * debugger-agent.c: Rework the handling of stack traces of running threads to
67         avoid crashes if compute_frames () tries to walk the stack of running thread.
68
69         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
70
71         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
72
73         * mini.h (StackFrameInfo): Add an 'lmf' field.
74
75 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
76
77         * debugger-agent.c (suspend_current): Always set really_suspended.
78
79         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
80
81         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
82
83 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
84
85         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
86         really suspended.
87
88 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
89
90         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
91
92 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
93
94         * mini-trampolines.c: Fix MSVC build.
95
96 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
97
98         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
99
100 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
101
102         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
103         the instruction following an OP_FCOMPARE is optimized away.
104
105 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
106
107         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
108         emit_autoreg () into this arch-specific function.
109
110         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
111         code, it is no longer needed.
112
113         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
114
115         * mini.h: Bump AOT file format version.
116
117         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
118         using the sorted_code_offsets array, instead of reading it from the
119         exception debug info.
120         (load_method): Call mono_aot_find_jit_info instead of
121         decode_exception_debug_info ().
122
123         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
124         LLVM compiled as a flag.
125
126 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
127
128         * debugger-agent.c (resume_thread): Fix a warning.
129
130         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
131         generated.
132
133 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
134
135         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
136         contents to MonoAotFileInfo.
137
138 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
139
140         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
141         Put all binary data into a giant blob, similarly to the way .net assemblies
142         store binary data. Emit offset tables in a compact form to reduce their size.
143
144         * mini.h: Bump AOT file format version.
145
146         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
147         places.
148
149         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
150         avoid linear searches at runtime.
151
152         * aot-runtime.c (find_symbol): Update this to use the hash.
153
154         * mini.h: Bump AOT file format version.
155
156 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
157
158         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
159         container.
160
161         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
162         too.
163
164         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
165         the distribution of got slot types.
166
167         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
168
169         * method-to-ir.c: Add support for generating explicit null checks.
170
171 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
172
173         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
174         on a random thread if possible.
175
176         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
177         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
178         correctly.
179
180         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
181         regs. Pass the real size of the regs array to mono_unwind_frame ().
182
183         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
184         ones instead.
185
186 2009-11-24  Geoff Norton  <gnorton@novell.com>
187
188         * mini-darwin.c: Work around apple bug rdar://7209349  See
189         http://openradar.appspot.com/7209349 for details.  Synopsis,
190         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
191         never been initialized before.
192
193 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
194
195         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
196
197         * mini-arm.c (mono_arm_thumb_supported): New helper function.
198
199 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
200
201         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
202         OP_SHL_IMM is not 32 bit.
203
204 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
205
206         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
207
208 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
209
210         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
211         encountered.
212
213         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
214         > 0 since some threads can resume if their resume_count is > 0.
215         (invoke_method): Avoid reading freed memory.
216
217         * debugger-agent.c (process_suspend): Extract the suspend code from
218         process_single_step_inner () to a separate function. Rework the code to prevent
219         races between this function and thread interrupts.
220
221         * debugger-agent.c (suspend_current): Check the resume_count field instead
222         of resume_one so suspends+resumes during single threaded invokes work
223         correctly.
224
225 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
226
227         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
228         to make the generated code smaller.
229
230         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
231         sequence generated by recent LLVM versions.
232
233         * mini-llvm.c: Add support for a few simple cases which weren't supported
234         before.
235
236         * mini-trampolines.c (mono_magic_trampoline): Don't call
237         mono_arch_get_vcall_slot () when llvm is enabled.
238
239         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
240
241         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
242         into a new function called common_call_trampoline () which is used by the
243         llvm vcall trampoline as well.
244
245         * debugger-agent.c: Implement single threaded invokes.
246
247         * debugger-agent.c: Revert change which broke the agent on linux.
248
249         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
250         #557606.
251
252         * generics.cs: Add a test.
253
254 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
255
256         * debugger-agent.c: Fix the cygwin build.
257
258 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
259
260         * cprop.c: Remove this unused file.
261
262 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
263
264         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
265         #557262.
266
267         * basic.cs: Add a test.
268
269 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
270
271         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
272         in one more place.
273
274 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
275
276         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
277         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
278         it. Use this flag to control llvm related code paths instead of #ifdef
279         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
280         AOT code.
281
282         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
283
284         * mini.h: Bump AOT file format version.
285
286         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
287         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
288
289         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
290         was used as an assembly filter.
291
292 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
293
294         * unwind.c: Fix support for ppc.
295
296         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
297         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
298
299 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
300
301         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
302         port.
303         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
304         added by the ps3 changes.
305
306 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
307
308         * mini-gc.c: Resurrect this, so at least it compiles.
309
310         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
311
312 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
313
314         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
315         create_event_list () so assembly filters can be used.
316
317         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
318         from the LMF.
319
320 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
321
322         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
323         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
324         is disabled.
325
326         * aot-compiler.c (add_generic_instances): Emit instances of common generic
327         classes for char/bool too.
328
329         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
330
331         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
332         used.
333
334         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
335         Fix warnings.
336
337 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
338
339         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
340         
341         Code contributed under MIT/X11 license.
342
343 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
344
345         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
346         threads in native code work.
347
348         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
349         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
350         version.
351
352 2009-11-13 Jonathan Chambers <joncham@gmail.com>
353
354         * debugger-agent.c: Implementation for Windows platform.
355
356         * mini-x86.c: Add support for Windows. Use mono-* synchronization
357         primitives. Use SEH to implement breakpoints and single stepping.
358
359         * mini-x86.h: Enable soft debugger on Windows.
360
361         Code contributed under MIT/X11 license.
362
363 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
364
365         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
366         under XEN. Fixes #522894.
367
368         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
369
370         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
371         interface calls in LLVM AOT code.
372
373         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
374         is found.
375
376         * mini-llvm.c: Add support for OP_VPHI.
377
378         * objects.cs: Add a test.
379
380 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
381
382         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
383         this is called on the debugger thread.
384
385 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
386
387         * mini-llvm.c: Add soft-float support.
388
389         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
390         FCALL which returns an R4.
391
392         * driver.c (mono_main): Add a missing '\n'.
393
394         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
395         platforms which doesn't support the LLVM IMT trampoline.
396
397 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
398
399         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
400
401         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
402
403         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
404         virtual calls.
405
406         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
407
408 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
409
410         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
411         Instead of emitting a method_order table, sort the contents of the code_offsets
412         table and do a binary search in the sorted table. The previous approach doesn't
413         work with LLVM which emits methods in a arbitrary order.
414
415         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
416         in the .eh_frame section in ELF files.
417
418         * mini.h: Bump corlib file format version.
419
420         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
421
422         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
423         LDMIA->LDM macro name change.
424
425 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
426
427         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
428         x86.
429
430         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
431         SVN.
432
433         * aot-compiler.c: Ditto.
434
435         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
436         &align to mini_type_stack_size_full ().
437
438         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
439
440         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
441
442 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
443
444         * mini-arm.c: Compute the stack space used by arguments using
445         mini_type_stack_size_full ().
446
447 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
448
449         * optflags-def.h: Remove dead TREEPROP optimization.
450
451 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
452
453         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
454
455         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
456
457 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
458
459         * driver.c (mono_jit_parse_options): New public API function to parse options
460         as done by the runtime executable.
461
462         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
463         when handling named arguments.
464
465 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
466
467         * mini-arm.c: Implement support for returning vtypes in registers, fix support
468         for passing small vtypes in registers, make the CallInfo structures more
469         similar to the code on the other platforms.
470
471         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
472         the code in the prolog requires it.
473
474 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
475
476         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
477         (koush@koushikdutta.com).
478
479         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
480         where the thunk memory should be allocated from. Fixes appdomain unloading
481         on arm.
482
483 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
484
485         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
486         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
487
488 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
489
490         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
491         AOT, as it is not implemented yet.
492
493         * mini-x86.c (mono_arch_output_basic_block): Ditto.
494
495 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
496
497         * debugger-agent.c: Fix windows build.
498
499 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
500
501         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
502         after the client connects/disconnects.
503
504         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
505         when an exception of a given type is thrown.
506
507         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
508         only on an uncaught exception.
509
510         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
511
512         * debugger-agent.c: Add a 'launch' option.
513
514 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
515
516         * debugger-agent.c: Add a 'timeout' option.
517
518 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
519
520         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
521         the JDWP agent.
522
523 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
524
525         * debugger-agent.c (set_breakpoint): Emit a log message.
526
527 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
528
529         * mini-arm.c: Fix the arm build.
530
531 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
532
533         * aot-compiler.c: don't leak the value returned from
534         mono_type_full_name().
535
536 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
537
538         * debugger-agent.c: defer including mono-mutex.h until we know the
539         agent is supported.
540
541 2009-11-04 Jonathan Chambers <joncham@gmail.com>
542
543         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
544         of pthreads directly.
545
546         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
547         exception handlers. Pass info argument.
548
549         * mini.h: Adjust signatures of soft debugger functions to pass void*
550         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
551
552         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
553         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
554         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
555         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
556
557         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
558
559         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
560         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
561         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
562         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
563
564         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
565
566         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
567
568         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
569
570         * mono-semaphore.h: Skeleton implementation for Windows.
571
572         Code contributed under MIT/X11 license.
573
574 2009-11-04 Jonathan Chambers <joncham@gmail.com>
575
576         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
577
578         Code contributed under MIT/X11 license.
579
580 2009-11-04 Jonathan Chambers <joncham@gmail.com>
581
582         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
583
584         Code contributed under MIT/X11 license.
585
586 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
587
588         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
589         debug info to 100 because 10 still slows down gdb too much.
590
591         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
592         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
593         them in the wrappers.
594
595 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
596
597         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
598
599         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
600
601         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
602         function mono_aot_get_array_helper_from_wrapper ().
603
604         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
605         array helper methods.
606
607 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
608
609         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
610         the value was loaded from memory.
611
612         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
613         the value was loader from there.
614
615         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
616         without constant swizzle.
617
618 2009-11-02 Jonathan Chambers <joncham@gmail.com>
619
620         * mini-amd64.c: Put soft debugger functions behind a
621         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
622
623         * mini-amd64.h: disable the soft debugger in windows.
624
625         Code contributed under MIT/X11 license.
626
627 2009-11-02 Jonathan Chambers <joncham@gmail.com>
628
629         * mini-x86.c: Put soft debugger functions behind a
630         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
631
632         Code contributed under MIT/X11 license.
633
634 2009-11-02 Jonathan Chambers <joncham@gmail.com>
635
636         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
637         to mono_arch_find_jit_info_ext.
638
639         Code contributed under MIT/X11 license.
640
641 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
642
643         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
644
645         * debugger-agent.c: Add support for filtering events by assemblies.
646
647         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
648         the agent is not enabled.
649
650 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
651
652         * exceptions-x86.c: hopefully last change to fix the windows build.
653         This one courtesy of Jonathan Chambers.
654
655 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
656
657         * debugger-agent.c: remove unused function.
658
659 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
660
661         * debugger-agent.c: add #ifdefs for a few header files.
662         * mini-x86.h: disable the soft debugger in windows.
663         Step 1 of 2 to make this compile on windows with gcc.
664
665 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
666
667         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
668         as it breaks the build.
669
670 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
671
672         Merge the soft debugger branch.
673
674         * debugger-agent.h debugger-agent.c: New files containing the soft
675         mode debugger module.
676
677         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
678         at the appropriate locations.
679
680         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
681         opcode.
682
683         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
684         enable/disable single stepping.
685
686         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
687         which returns all information in a StackFrameInfo structure, and can handle the
688         LMF frames added by the debugger.
689
690         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
691         about an LMF frame.
692
693         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
694         walker function which works on a specific thread and passes a StackFrameInfo
695         structure to its callback.
696
697         * mini.c (mini_init): Initialize the debugger agent.
698
699         * aot-compiler.c aot-runtime.c: Add soft-debug support.
700
701         * mini-ops.h: Add OP_SEQ_POINT opcode.
702
703         * driver.c (mono_main): Add new '--debugger-agent' option for passing
704         arguments to the debugger agent.
705
706 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
707
708         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
709         speed things up.
710
711         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
712
713         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
714
715         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
716
717         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
718         if needed.
719         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
720         sets the IMT argument and makes a virtual call.
721
722         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
723
724 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
725
726         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
727         the windows build.
728
729 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
730
731         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
732         runtime. Fixes #551228.
733
734 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
735
736         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
737
738         * basic.cs: Add a test.
739
740         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
741         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
742         CONSTRAINED. Fixes #550964.
743
744         * generics.cs: Add a test.
745
746 2009-10-28  Mark Probst  <mark.probst@gmail.com>
747
748         * mini-posix.c (add_signal_handler): Use
749         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
750
751 2009-10-28 Jerry Maine <crashfourit@gmail.com>
752
753         Contributed under the terms of the MIT/X11 license by
754         Jerry Maine <crashfourit@gail.com>.
755
756         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
757         sse4a for simd intrinsics.
758
759         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
760         sse4a for simd intrinsics.
761
762 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
763
764         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
765         instead of inst_p1 which is not the same on ILP32 platforms.
766
767 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
768
769         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
770         not the mscorlib one before calling mono_get_lmf_addr.
771
772         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
773         of the ip to the LMF.
774
775         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
776         immediate in the op->op_imm optimization.
777
778         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
779         understand. VTypes now work, but are not abi compliant, as they are
780         split into 4 byte parts instead of 8.
781         (emit_memcpy): Fix the unrolled case to work on the PS3.
782
783         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
784
785         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
786         the default when static linking.
787
788         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
789
790         * aot-compiler.c: Add an autoreg option to automatically register
791         statically linked aot modules using ELF .ctors.
792
793         * genmdesc.pl: Add __ppc64__ to allowed defines.
794
795 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
796
797         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
798         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
799
800 2009-10-24  Mark Probst  <mark.probst@gmail.com>
801
802         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
803
804 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
805
806         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
807         which will contain the domain where the method was found.
808
809         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
810         mini_jit_info_table_find ().
811
812         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
813
814         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
815
816 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
817
818         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
819         set, its not supported yet.
820
821 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
822
823         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
824         iface wrapper is not found.
825         (mono_aot_get_method): Ditto for GetGenericValueImpl.
826
827 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
828
829         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
830         which have a different name.
831
832         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
833         wrappers and Array.GetGenericValueImpl ().
834
835         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
836         because of the change above.
837
838         * generics.cs: Add a test for full aot + generic array ifaces.
839
840 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
841
842         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
843         that hides the previous one.
844
845 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
846
847         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
848         marshalled. Fixes #541623.
849
850 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
851
852         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
853
854 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
855
856         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
857
858 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
859
860         * mini-posix.c (sigprof_signal_handler):
861         Implemented support for building stat call chans in different ways.
862
863 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
864
865         * mini-exceptions.c (mono_find_jit_info):
866         Also check that a jit info has been found (fixes a profiler crash).
867
868 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
869
870         * mini.c (mono_codegen):
871         Call mono_profiler_code_buffer_new with correct code address.
872
873 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
874
875         * driver.c (mono_main): Change the date in the copyright.
876
877 2009-10-14  Mark Probst  <mark.probst@gmail.com>
878
879         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
880         allocator in shared generic code for open classes, because we
881         can't get those classes' vtables.  We need to make managed
882         allocators not depend on the vtable at compile-time to solve this.
883
884 2009-10-13  Martin Baulig  <martin@ximian.com>
885
886         * debug-mini.c (mono_debugger_trampoline_compiled): Add
887         `const guint8 *trampoline' argument; send both the old and the new
888         notification.
889
890 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
891
892         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
893         mono_runtime_capture_context () without calling mono_runtime_invoke ().
894         (can_marshal_struct): Skip structures with auto layout.
895
896         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
897
898 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
899
900         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
901         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
902         a variable to hold the stack slot used by the int<->float conversion opcodes.
903
904         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
905
906 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
907
908         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
909         when using full-aot.
910
911 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
912
913         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
914         each instance of Comparer<T>.
915
916         * generics.cs: Add a new test.
917
918 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
919
920         * driver.c (parse_debug_options): Add a 'gdb' option.
921
922         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
923
924         * image-writer.c: Add support for emitting the image into a memory buffer.
925
926         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
927
928         * aot-compiler.c: Add support for registering debug info with GDB using the
929         new JIT debugging interface in GDB 7.0. It can be turned on by setting
930         MONO_XDEBUG to 'gdb'.
931
932 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
933
934         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
935         gdb mode.
936
937 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
938
939         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
940         can be used to set breakpoints in gdb.
941
942         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
943         segment to an absolute address.
944
945 2009-10-13  Mark Probst  <mark.probst@gmail.com>
946
947         * method-to-ir.c: Use the managed array allocator method if
948         available.
949
950 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
951
952         * aot-compiler.c : Fix the MSVC builds
953
954         Code is contributed under MIT/X11 license.
955
956 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
957
958         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
959         avoid registering 1 symbol file per method with gdb.
960
961 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
962
963         * mini-sparc.c: Fix the handling of enums with base type long.
964
965         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
966
967         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
968         instead of using type->data.klass as the later doesn't work with generics.
969
970 2009-09-25  Mark Probst  <mark.probst@gmail.com>
971
972         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
973         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
974         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
975         works differently now and we don't handle it in the JIT anymore.
976
977         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
978         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
979         the Thread class split.
980
981 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
982
983         * driver.c: Don't run tests with the obsolete treeprop optimization.
984
985         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
986         variable volatile. Fixes #541577.
987
988         * basic-calls.cs: Add a new test.
989
990         * basic-long.cs: Remove tests which are now in basic-calls.cs.
991
992 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
993
994         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
995         work/required with recent iphone sdk versions.
996
997         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
998         structures.
999
1000         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1001         in the VCALL decomposition code.
1002
1003 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1004
1005         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1006
1007         * basic.cs: Add a test.
1008
1009         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1010         generic invokes.
1011
1012         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1013         searches all the domains of the current thread.
1014
1015         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1016
1017 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1018
1019         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1020         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1021
1022         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
1023         for non-jit trampolines.
1024
1025         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
1026
1027         * aot-compiler.c (add_wrappers): Ditto.
1028
1029         * mini-arm.c: Implement support for passing vtypes and floats, and increase
1030         the size of the param area used by dyn_call to 6 which covers the majority of
1031         methods.
1032
1033         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
1034
1035         * mini-arm.c: Implement support for passing/receiving
1036         longs and receiving floats in the dyn_call code.
1037
1038         * mini-amd64.c: Implement support for receiving vtypes in registers in
1039         the dyn_call code.
1040
1041         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
1042         the dyn_call code.
1043
1044 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
1045
1046         * mini-arm.c (get_call_info): Return more precise information in
1047         ArgInfo->regtype.
1048         (dyn_call_supported): Use the information in CallInfo.
1049
1050         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
1051
1052         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
1053         code.
1054
1055         * mini-arm.c: Update after the dyn_call api changes.
1056
1057         * mini.c (mini_create_jit_domain_info): Register a destructor function
1058         for the runtime_invoke_hash.
1059
1060         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
1061         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
1062         this function.
1063         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
1064         (dyn_call_supported): Simplify this by using get_call_info ().
1065         (mono_arch_dyn_call_free): New destructor function.
1066
1067         * generics.cs: Remove a printf.
1068
1069         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
1070
1071         * mini-arm.c: Add support for enum return values and passing a few arguments
1072         on the stack.
1073         
1074         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
1075         dyn invoke.
1076
1077         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
1078
1079         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
1080         the dynamic invoke wrappers.
1081
1082         * mini-arm.c: Implement OP_DYN_CALL for arm.
1083
1084         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
1085         supported by the dynamic runtime invoke wrapper.
1086
1087         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
1088         runtime invoke wrapper.
1089
1090         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
1091         if possible when running with full-aot.
1092
1093         * mini-ops.h: Add OP_DYN_CALL opcode.
1094
1095         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
1096         with dynamic arguments lists similar to libffi.
1097
1098 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * method-to-ir.c: Fix the previous change on 64 bit platforms.
1101         
1102         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
1103         to NEWARR.
1104
1105         * iltests.il.in: Add a new test.
1106         
1107 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
1108
1109         * aot-compiler.c (add_generic_instances): Add more instances of
1110         GenericEqualityComparer.
1111
1112 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1113
1114         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
1115
1116 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1117
1118         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
1119         comments on some functions that now can fail.
1120
1121 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
1122
1123         * Makefile.am: Add Info.plist to EXTRA_DIST
1124
1125 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
1128         static synchronized wrappers. Fixes #539500.
1129
1130 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
1131
1132         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
1133         properly.
1134
1135 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1136
1137         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
1138         lmf before calling filter clauses as well. Fixes #539550.
1139
1140         * exceptions.cs: Add a test.
1141         
1142 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * aot-compiler.c (add_generic_class): Add instances of
1145         Array.GetGenericValueImpl as well.
1146
1147         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
1148         can be tested too.
1149
1150         * generics.cs: Add a fullaot linq test.
1151
1152 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
1155         reg r1 on arm.
1156
1157 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
1158
1159         * mini-trampolines.c (mono_delegate_trampoline) : Call
1160           mono_cominterop_get_invoke if the delegate target object
1161           is a COM object.
1162
1163         Code is contributed under MIT/X11 license.
1164
1165 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
1166
1167         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
1168         internal call is defined outside platform code. Reduce code 
1169         duplication with existing [Method|Field]AccessException
1170
1171 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
1172
1173         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
1174         if the return value is a small struct passed on regs.
1175
1176 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * cpu-arm.md mini-arm.c: Remove unused opcodes.
1179
1180         * mini-codegen.c: Enable the cpu description validation for arm.
1181
1182 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
1185         test which depends on structs to objects.cs.
1186         
1187         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
1188         require object model related stuff working.
1189
1190         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
1191
1192         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
1193
1194         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
1195         against the instruction metadata in mini-ops.h. amd64 only for now.
1196
1197         * mini-ops.h: Fix some instruction descriptions.
1198
1199         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
1200         unused instructions.
1201
1202 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1203
1204         * exceptions.cs: Add a new test.
1205
1206 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
1207
1208         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
1209
1210 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
1213         skip empty phi opcodes.
1214         
1215         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
1216         correctly by zero extending after loads. Skip methods containing calls
1217         to the monitor enter/exit trampolines.
1218
1219         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
1220         when calling mono_thread_force_interruption_checkpoint ().
1221
1222         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
1223
1224         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
1225         64 bit thunks.
1226         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
1227
1228         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
1229         bootstrap could run.
1230
1231 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
1232
1233         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
1234
1235 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1236
1237         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
1238         of the method to
1239         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1240         LLVM might be very short.
1241
1242         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
1243         in OP_THROW/RETHROW.
1244
1245         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
1246         alignment on osx.
1247
1248 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1249
1250         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
1251         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1252         LLVM might be very short.
1253
1254 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
1255
1256         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
1257         the alignment for the value of sp.
1258
1259 2009-09-01  Geoff Norton  <gnorton@novell.com>
1260
1261         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
1262         managed wrappers in full aot.
1263
1264 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
1267
1268 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
1271
1272 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
1275
1276         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
1277         saved info.
1278
1279         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1280
1281         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
1282         depend on the info MonoMethodHeader which could be missing in IL stripped
1283         assemblies.
1284
1285 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
1288         they are only 4 byte aligned.
1289
1290 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
1291
1292         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
1293         was done previously, since using SP causes too many problems.
1294
1295         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
1296         frames without a frame pointer works.
1297
1298         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
1299         global register in methods with calls, since the calls can go through
1300         a static rgctx trampoline which doesn't save it.
1301
1302 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
1305
1306 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
1309
1310 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1311
1312         * method-to-ir.c: Fix warnings for uninitialized variables.
1313
1314 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1315
1316         * mini-exceptions.c:
1317         * aot-compiler.c: Fix printf warnings.
1318
1319 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1320
1321         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
1322         Add GetGenericValueImpl<string>.
1323         
1324         * aot-compiler.c (add_generic_instances): Add instances of
1325         GenericEqualityComparer<T> for primitive types. Only emit the array
1326         wrappers into the mscorlib image.
1327
1328 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
1329
1330         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
1331         the methods_loaded array using amodule->info->nmethods.
1332
1333         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
1334         (MONO_AOT_FILE_VERSION): Bump this.
1335
1336         * aot-compiler.c: Emit more generic instances allowing some parts of linq
1337         to work.
1338
1339         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
1340         MonoJitInfo doesn't belong to its methods aot image.
1341
1342 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
1343
1344         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
1345
1346         * mini-arm.c: Fix warnings.
1347         
1348         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
1349
1350         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
1351         supports it.
1352
1353 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
1356         avoid clobbering IP.
1357
1358         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
1359         hold the trampoline argument, so its initial value is available during
1360         debugging.
1361
1362 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1363
1364         * exceptions-arm.c:
1365         * exceptions-hppa.c:
1366         * mini.c:
1367         * exceptions-s390x.c:
1368         * exceptions-mips.c:
1369         * exceptions-ppc.c:
1370         * exceptions-sparc.c:
1371         * exceptions-alpha.c:
1372         * aot-runtime.c:
1373         * mini-trampolines.c:
1374         * exceptions-x86.c:
1375         * exceptions-s390.c: add and use #define's instead of sizeof()
1376         for MonoJitInfo and MonoJitInfoTable.
1377
1378 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1379
1380         * tramp-arm.c:
1381         * tramp-amd64.c:
1382         * tramp-ppc.c:
1383         * tramp-x86.c: use a #define instead of sizeof() for a few
1384         structures that use a zero-length array.
1385
1386 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1387
1388         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1389         case when the method is dynamic. Fixes #529238.
1390
1391 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1392
1393         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1394         of asserting when a method is JIT compiled in full-aot mode.
1395
1396 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1397         
1398         Contributed under the terms of the MIT/X11 license by
1399         Jerry Maine <crashfourit@gail.com>.
1400         
1401         * fixed wrong dates in changelog.
1402
1403 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1404         
1405         Contributed under the terms of the MIT/X11 license by
1406         Jerry Maine <crashfourit@gail.com>.
1407
1408         * basic-simd.cs: added test for packed double square root.
1409         * cpu-amd64.md: added opcode info for packed double square root.
1410         * cpu-x86.md: added opcode info for packed double square root.
1411         * mini-ops.h: added IR opcode for packed double square root.
1412         * mini-x86.c: added IR to native translation code for packed double square root.
1413         * mini-amd64.c: removed todo for packed double square root.
1414         * simd-intrinsics.c: added method to IR opcode converstion for
1415         packed double square root.
1416
1417 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1418
1419         Contributed under the terms of the MIT/X11 license by
1420         Jerry Maine <crashfourit@gail.com>.
1421
1422         * mini-amd64.c: Added a change to help tell the difference as 
1423         to what perpose the xmm register is being used--mainly to help
1424         with debuging.
1425         * mini-amd64.h: Changed callee regs to use 15 out of 16 
1426         (one used for special cases) xmm registers for both fp
1427         and simd ops. Added define to turn on new feature in the regalloc
1428         that allows fp and simd ops to share the xmm regs happily.
1429         * codegen.c: Added code to detect for which perpose an xmm reg is
1430         being used (fp or simd) and to translate back and forth to the
1431         correct logical reg bank (fp or simd) for 'spill load's.
1432
1433 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1434
1435         Contributed under the terms of the MIT/X11 license by
1436         Jerry Maine <crashfourit@gail.com>.
1437
1438         * basic-simd.cs: Added tests for stressing the regalloc when running with
1439         16 simd regs and when simd and fp ops share the same reg bank.
1440
1441 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1442
1443         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
1444         in shared generic code, we might have to look up the class in the
1445         RGCTX.  If we use the class directly, compute its GC descriptor.
1446
1447 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1448
1449         * mini.c (mono_jit_runtime_invoke): Fix a warning.
1450
1451 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1452
1453         * mini.c (mono_jit_runtime_invoke): Initialize the class and
1454         check for errors. Fixed the case when the class with the Main
1455         method is broken.
1456
1457 2009-07-31 Jerry Maine <crashfourit@gmail.com>
1458
1459         Contributed under the terms of the MIT/X11 license by
1460         Jerry Maine <crashfourit@gail.com>.
1461
1462         * cpu-amd64.md: Fixed simple bug in machine discrition file.
1463
1464 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
1467
1468 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1469
1470         * method-to-ir.c: Fix naming of stelem and ldelem.
1471
1472 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1473
1474         * driver.c (main_thread_handler): Check that the assembly loaded
1475         matches the filename when doing AOT.
1476
1477 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1478
1479         * mini.c: get_ip_from_sigctx installer has been removed, so don't
1480         call it anymore.
1481
1482         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
1483         utils/mono-sigcontext.h).
1484
1485         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
1486         #ifdef.
1487
1488 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1489
1490         * mini.c (mono_codegen):
1491         Call profiler hook to keep track of method code buffers.
1492
1493 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1494
1495         * method-to-ir.c: Invoke write barriers for the
1496         Interlocked.(Compare)Exchange JIT intrinsics.
1497
1498 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
1499
1500         * Makefile.am (version.h): Fix issues when built out of tree.
1501         Remove some redundant 'grep's piped through 'sed's.
1502
1503 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1504
1505         This patch is contributed under the terms of the MIT/X11 license
1506
1507         * mini-ppc.c (mono_arch_output_basic_block):
1508         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
1509         for bits 32-47 with signed load/store diplacements for bits
1510         48-63.  Use prefered base/offset order for indexed form.
1511         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
1512         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
1513         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
1514         OP_LOADI2_MEMBASE): Same.
1515         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
1516         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
1517         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
1518         indexed form.
1519         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
1520         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
1521         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
1522         OP_LOADI1_MEMINDEX): Same
1523         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
1524         OP_STORER8_MEMINDEX): Same
1525         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
1526         computations.
1527         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
1528         for bits 32-47 with signed load/store diplacements for bits
1529         48-63.  Use prefered base/offset order for indexed form.
1530
1531 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1532
1533 This patch is contributed under the terms of the MIT/X11 license
1534
1535         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
1536         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
1537         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
1538         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
1539         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
1540         cfg->stack_usage to avoid size warnings.
1541         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
1542         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
1543         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
1544         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
1545         to convert.
1546         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
1547         after code varible is initialized.
1548         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
1549         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
1550         (mono_arch_emit_epilog): 
1551         Move Use ppc_load32 for cfg->stack_usage to avoid size
1552         warnings.
1553
1554 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1555
1556         * method-to-ir.c: The write barrier doesn't do the store anymore,
1557         so we have always to emit it.  Also, emit the wbarrier after the
1558         store.
1559
1560 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
1563         for argument count 3 too.
1564
1565 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
1566
1567         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
1568         the caller handle the exceptions.
1569         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
1570         method. Fixes #524498.
1571
1572 2009-07-22  Geoff Norton  <gnorton@novell.com>
1573
1574         * mini-exceptions.c: Fix build on ia64.
1575
1576 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1577
1578         * mini-exceptions.c (ves_icall_get_frame_info): Use write
1579         barriers.
1580
1581 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
1584         code.
1585
1586 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * basic-simd.cs (Main): Pass args to the test driver.
1589
1590 2009-07-20  Geoff Norton  <gnorton@novell.com>
1591
1592         * mini-x86.h: Fix the x86 version guards to use Apple's
1593         properly defined macros.
1594
1595 2009-07-20  Geoff Norton  <gnorton@novell.com>
1596
1597         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
1598         aligned access.
1599
1600 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1601
1602         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
1603         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
1604         the information which is needed for invokes, so only one locking+hash table
1605         lookup is needed.
1606
1607         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
1608         
1609         * aot-compiler.c (add_generic_instances): Emit instances of 
1610         GenericComparer<T> for primitive types.
1611
1612 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
1613
1614         * mini-posix.c: Fix linux build.
1615
1616 2009-07-19  Geoff Norton  <gnorton@novell.com>
1617
1618         * mini.h: Add prototypes for mono_runtime_syscall_fork and
1619         mono_gdb_render_native_backtraces
1620         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
1621         so we implement the sane semantics to the runtime here
1622         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
1623         so we need to call it differently (mono_gdb_render_native_backtraces)
1624         * mini-posix.c: Move the old semantics from mini.c to the prototypes
1625         here for default implementations.
1626         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
1627         support Apple's weird syscall (SYS_fork) implementation and not busy
1628         loop in abort() on native crashes on OSX anymore.
1629
1630 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * aot-runtime.c (load_method): Change the handling of the
1633         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
1634         are used.
1635
1636         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
1637
1638 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
1639
1640         * mini.c (mono_patch_info_equal): Revert the last change for now as it
1641         seems to break the aot tests.
1642         
1643         * mini.c (mono_patch_info_equal): Fix the handling of 
1644         MONO_PATCH_INFO_RGCTX_FETCH.
1645
1646 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
1649
1650         * mini.c (mono_patch_info_hash): Fix the handling of 
1651         MONO_PATCH_INFO_INTERNAL_METHOD.
1652         (mono_patch_info_equal): Ditto.
1653
1654 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1655
1656         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
1657         in a few places.
1658         
1659         * mini-llvm.c: Add some infrastructure for AOT support.
1660
1661 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1662
1663         * mini-llvm-cpp.c: Update to the latest llvm api.
1664         
1665         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
1666         option to false to prevent llvm from installing signal handlers which
1667         trip up the gc.
1668         
1669 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1670
1671         * cpu-x86.md:
1672         * cpu-amd64.md: Revert previous change as those instructions
1673         take 2 separate arguments. Remember to read the arch docs more
1674         carefully next time.
1675
1676 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1677
1678         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
1679
1680 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
1681
1682         * mini-ppc.c: exploit multiple load/store units if available (rest of
1683         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
1684         http://bugzilla.novell.com/show_bug.cgi?id=487846).
1685
1686 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
1687
1688         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
1689         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
1690
1691 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1692
1693         * cpu-x86.md: Fix missing clobbering from trancendental simd
1694         ops.
1695
1696         * cpu-amd64.md: Same.
1697
1698 2009-07-14 Jerry Maine <crashfourit@gmail.com>
1699
1700         Contributed under the terms of the MIT/X11 license by
1701         Jerry Maine <crashfourit@gail.com>.
1702
1703         * basic-simd.cs: Added tests for single and doulble indexers.
1704
1705         * cpu-amd64.md: Added simd opcode information.
1706
1707         * mini-amd64.c: Added IR to native simd generation code.
1708         Added simd register names and function that returns them.
1709
1710         * mini-amd64.h: Added marcos to turn on simd code compilation in
1711         amd64. Added max simd register count marco. Added caller/callee
1712         register mask marcos. Added marcos to use simd register bank.
1713
1714         * mini.h: Added helper marco for shufling dwords and simple
1715         floats.
1716
1717 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
1718
1719         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
1720
1721         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
1722
1723         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
1724         the length of the native code as well.
1725
1726         * basic-simd.cs: Add a test for #521662.
1727
1728 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
1729
1730         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
1731
1732 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1733
1734         * mini.c: Register function for getting the IP from a signal
1735         context with metadata.
1736
1737 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
1738
1739         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
1740         call a generic class init trampoline if needed. Fixes #519336.
1741
1742         * generics.cs: Add a test.
1743         
1744 2009-07-09  Mark Probst  <mark.probst@gmail.com>
1745
1746         * method-to-ir.c: When doing a call which might be remote from
1747         shared generic code to other shared code with open type arguments,
1748         get the remoting invoke wrapper from the RGCTX and do an indirect
1749         call to it.
1750
1751 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
1752
1753         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
1754         after the unbox trampoline in the full-aot case.
1755
1756 2009-07-02  jonas echterhoff <jonas@unity3d.com>
1757         
1758         * mini.c: Move initialization of jit_mutex before debugger initialization
1759         
1760         to avoid crashes.
1761         
1762         
1763         * Info.plist: added Info.plist and link flag to enable the mono executable
1764         to access other processes. Requires codesigning of the executable to work.
1765         
1766         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
1767         
1768         compile on OS X.
1769         
1770
1771 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
1774
1775 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
1776
1777         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
1778         when the generic instance is an instantiation of a subclass of the
1779         methods class. Fixes #517166.
1780
1781 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
1782
1783         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
1784         code.
1785
1786         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
1787         AOTed code.
1788
1789         * CMakeLists.txt: Add minimal support for installation.
1790
1791 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
1792
1793         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
1794         determine whenever a method is directly callable to a separate function.
1795
1796         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
1797         needed ones as a result of the previous change.
1798
1799         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
1800         type of register arrays.
1801
1802         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
1803         type of register arrays.
1804
1805 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
1806         
1807         Contributed under the terms of the MIT/X11 license by
1808         Jerry Maine <crashfourit@gail.com>.
1809
1810         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
1811
1812 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
1815
1816 2009-06-24  Neale Ferguson <neale@sinenomine.net>
1817
1818         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
1819         dump of structure return value. Fix some formatting.
1820         * cpu-s390x.md: Fix lengths of instruction sequences.
1821         * mini-s390.c: Minor formatting changes.
1822
1823 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
1826         Use sigaction on freebsd as well.
1827
1828 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
1831         uses #ifdef on it.
1832         
1833         * mini.c (mini_init): Revert a change which breaks cross-compilation.
1834
1835 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1836
1837         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
1838
1839 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1840
1841         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
1842
1843 2009-06-20  Martin Baulig  <martin@ximian.com>
1844
1845         * debug-mini.c
1846         (MonoDebuggerThreadFlags): New enum typedef.
1847         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
1848         (mono_debugger_thread_created): Added `gpointer func' argument;
1849         initialize the new `thread_flags' field.
1850
1851 2009-06-18  Martin Baulig  <martin@ximian.com>
1852
1853         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
1854         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
1855
1856         * debug-debugger.c
1857         (mini_debugger_set_attach_ok): New function; sets the attach-ok
1858         flag in `MONO_DEBUGGER__info.runtime_info'.
1859
1860         * driver.c
1861         (mono_main): Call mini_debugger_set_attach_ok() if generics
1862         sharing is disabled.
1863
1864 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * aot-compiler.c (add_wrappers): Fix a warning.
1867
1868         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
1869         the ppc load/store macro changes.
1870
1871 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
1872
1873         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
1874
1875         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
1876         not just the got symbol.
1877
1878         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
1879         on ppc.
1880
1881         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
1882         ppc.
1883         
1884         * aot-compiler.c: Remove some fixmes.
1885
1886         * driver.c (mono_main): Print a helpful message when cross-compiling.
1887
1888         * mini.c (mini_init): Disable signal handlers when cross-compiling.
1889
1890         * method-to-ir.c (initialize_array_data): Do the optimization if the
1891         target byte order is little endian, instead of the host byte order.
1892
1893         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
1894         wrappers into the mscorlib image, Emit a unique plt symbol for each
1895         image, emit symbols for plt entries.
1896
1897         * image-writer.c (img_writer_emit_symbol_size): New function to emit
1898         a .size directive.
1899         
1900 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * aot-compiler.c (add_wrappers): Avoid calling 
1903         mono_marshal_get_type_info () since it can assert for some types.
1904
1905         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
1906         ldtoken are used inside wrappers.
1907
1908         * helpers.c: Add support for prefixing tools with the arch name.
1909
1910         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
1911         quantities when using ilp32.
1912
1913         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
1914         spill slots. Use sizeof(mgreg_t) for the spill slot size.
1915
1916         * image-writer.c: Use .long on ilp32.
1917
1918         * aot-compiler.c: Use 32 bit loads on ilp32.
1919         
1920 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1921
1922         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1923
1924         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1925
1926         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1927
1928         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1929         second got slot of every aot image.
1930         
1931         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1932         aot on platforms with function pointers.
1933
1934         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1935         support for aot/full aot on ppc/ppc64.
1936         
1937         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1938         arguments which are needed on ppc.
1939
1940         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1941         argument.
1942
1943         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1944         
1945         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1946
1947         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1948
1949         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1950
1951         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1952
1953 2009-06-17  Geoff Norton  <gnorton@novell.com>
1954
1955         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1956
1957 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1958
1959         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1960         to control whenever the dwarf writer is in xdebug or aot mode.
1961         (emit_class_dwarf_info): Use a separate abbrev for structures without
1962         children.
1963
1964         * aot-compiler.c: Pass the appending parameter to 
1965         mono_dwarf_writer_create ().
1966
1967         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1968         falls through to its next bblock. Fixes #513931.
1969
1970         * iltests.il: Add a test.
1971
1972         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1973         infor even if emit_line is FALSE, as the apple linker seems to require it.
1974
1975         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1976
1977         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1978         gcc does.
1979         (emit_fde): Ditto.
1980
1981 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1982
1983         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1984         mips build.
1985
1986 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1987
1988         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1989         'has_call_handler' fields.
1990
1991         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1992
1993         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1994         first bblock if not needed. Fixes #512790.
1995         
1996 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1999         
2000         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2001         wrappers.
2002
2003         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2004         remoting-invoke-with-check wrappers, which are not needed when running with
2005         full-aot, since it doesn't support remoting.
2006         
2007 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2010
2011         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2012         method info, it is not used anymore.
2013
2014         * mini.h: Bump AOT file format version.
2015         
2016         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2017         word smaller.
2018
2019         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2020         change above.
2021         
2022         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
2023
2024         * mini.h: Bump AOT file format version.
2025         
2026 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2027
2028         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
2029         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
2030         iphone.
2031
2032         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
2033         of CKFINITE and FBGE for VFP.
2034
2035 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
2036
2037         * aot-compiler.c: Don't align code to 16 bytes on arm.
2038         
2039         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
2040         before the methods they belong to.
2041
2042         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
2043         the full-aot case if possible, since the trampoline will be called right 
2044         away.
2045
2046         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
2047         trampolines to 1024 after the change above.
2048
2049         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
2050         trampoline to save 8 bytes per trampoline.
2051
2052         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
2053         change above.
2054
2055 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2056
2057         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
2058
2059 2009-06-08  Martin Baulig  <martin@ximian.com>
2060
2061         * debug-mini.c
2062         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2063         (_mono_debugger_throw_exception): Don't make this static.
2064         (_mono_debugger_unhandled_exception): Likewise.
2065         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2066
2067         * debug-mini.c
2068         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2069         (_mono_debugger_throw_exception): Add function prototype.
2070         (_mono_debugger_unhandled_exception): Likewise.
2071
2072         * mini-exceptions.c
2073         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2074         arg; return the first exception handler if the exception is caught
2075         and we're running inside the debugger.
2076         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2077         improve exception handle inside runtime-invoke, check whether the
2078         exception is actually caught in the method being invoked and not
2079         by the runtime-invoke-wrapper.
2080
2081 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2082
2083         * image-writer.c: Improve support for the osx assembler.
2084
2085         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
2086         support them.
2087
2088 2009-06-08  Martin Baulig  <martin@ximian.com>
2089
2090         * debug-mini.c
2091         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2092         (_mono_debugger_throw_exception): Don't make this static.
2093         (_mono_debugger_unhandled_exception): Likewise.
2094         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2095
2096         * debug-mini.c
2097         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2098         (_mono_debugger_throw_exception): Add function prototype.
2099         (_mono_debugger_unhandled_exception): Likewise.
2100
2101         * mini-exceptions.c
2102         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2103         arg; return the first exception handler if the exception is caught
2104         and we're running inside the debugger.
2105         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2106         improve exception handle inside runtime-invoke, check whether the
2107         exception is actually caught in the method being invoked and not
2108         by the runtime-invoke-wrapper.
2109
2110 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * image-writer.c (append_subsection): Don't align subsections of the
2113         debug_line section as a workaround.
2114
2115         * dwarfwriter.c: Emit line number info in the AOT case as well.
2116
2117 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
2118
2119         This patch is contributed under the terms of the MIT/X11 license
2120
2121        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
2122        code_len <= code_size
2123
2124 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
2127
2128 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
2131         invoke wrappers, we now use trampolines instead.
2132
2133 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2134
2135         * mini-darwin.c: The exception thread must not be registered with
2136         the GC.
2137
2138 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2139
2140         * mini-gc.c: Disable the code because it makes SGen crash.
2141
2142 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
2145         instead of asserting.
2146
2147 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * aot-compiler.c (mono_compile_assembly): Move the creation of the
2150         output file after the code has been compiled.
2151
2152 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
2153
2154         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
2155
2156 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2157
2158         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
2159         entries distinction to simplify the code.
2160
2161         * mini.h: Bump AOT file format version.
2162         
2163 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * objects.cs: Fix the signature of one of the tests.
2166
2167         * mini.c (mini_create_ftnptr): New helper function, moved here from
2168         object.c.
2169         (mini_get_addr_from_ftnptr): Ditto.
2170         (mini_init): Install the new helpers.
2171
2172 2009-05-28  Martin Baulig  <martin@ximian.com>
2173
2174         Correctly initialize the debugger when embedding Mono.
2175
2176         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
2177         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
2178         see documentation in mini_debug_running_inside_mdb().
2179
2180         * debug-debugger.c
2181         (mini_debug_running_inside_mdb): New function to check whether
2182         we're running inside mdb.
2183
2184         * mini.c (mini_init): Call mini_debugger_init() if we're running
2185         inside the debugger.
2186
2187         * driver.c (mono_main): Moved the call to mini_debugger_init()
2188         into mini_init() to make this work when embedding Mono.
2189
2190         * debug-debugger.c (mini_debugger_init): Warn about duplicate
2191         calls to mini_debugger_init().
2192
2193         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
2194         mono_debugger_main() -> mini_debugger_main() and put them inside a
2195         `MONO_DEBUGGER_SUPPORTED' conditional.
2196
2197 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
2198
2199         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
2200         this is no longer in use.
2201         * mini.h: Same.
2202
2203 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * mini-sparc.c (add_outarg_load): Fix the sparc build.
2206
2207         * aot-compiler.c (emit_method_code): Always write out C style symbols for
2208         methods.
2209
2210 2009-05-27  Martin Baulig  <martin@ximian.com>
2211
2212 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2213
2214         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
2215         long_conv_to_r_un to 64 bits.
2216
2217         * cpu-x86.md: Increase the instruction size due to the changes.
2218
2219         * iltests.il.in: Add regression test.
2220
2221         Fixes #467201.
2222
2223 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2224
2225         * objects.cs: Move the previous test from basic.cs to here.
2226
2227 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2228
2229         * basic.cs: Add regression test for #506915.
2230
2231 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2232
2233         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
2234         optimization we must check the bb of the first byte of stobj as
2235         it's the only one set in cil_offset_to_bb.
2236
2237         Fixes #506915.  
2238
2239 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
2240
2241         * image-writer.c: Fix pointer directive on ppc64.
2242
2243 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
2244
2245         * image-writer.c (asm_writer_emit_section_change): Avoid using
2246         .bss subsections on ppc too.
2247
2248 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * image-writer.c: Fix the definition of TARGET_ASM_....
2251         
2252         * image-writer.c: Fix the emission of assembler directives in the last
2253         change.
2254
2255         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
2256         exception throwing code to accomodate ppc64.
2257
2258         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
2259         size to work on ppc64 too.
2260
2261         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
2262         too.
2263
2264         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
2265         the assembler dialect instead of using platform specific defines.
2266
2267 2009-05-22  Geoff Norton  <gnorton@novell.com>
2268
2269         * mini-arm.c (get_call_info): If a structure is split between the stack
2270         and argument registers, we should not advance the stack pointer by the entire
2271         native size, but just by the amount that spilled.
2272
2273 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
2274
2275         * mini-arm.c (get_call_info): Handle structures with alignment requirements
2276         correctly.
2277
2278 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
2281         wrappers normally.
2282         
2283         * aot-compiler.c (add_extra_method): Fix up the collection of extra
2284         methods so wrapper don't get added twice.
2285         (add_generic_instances): Don't add methods of arrays.
2286
2287         * generics.cs: Mark one test as !FULLAOT.
2288
2289 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2290
2291         * mini-x86.c (emit_move_return_value): Remove unused vars.
2292
2293 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2294
2295         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
2296         decomposing 8 bytes structs into a LCALL.
2297
2298         * mini-x86.c (emit_move_return_value): We no longer push the vtype
2299         pointer for where to store the returned regs.
2300
2301         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
2302         state the concern.
2303
2304         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
2305
2306 2009-05-20  Miguel de Icaza  <miguel@novell.com>
2307
2308         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
2309         without getenv.
2310
2311 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
2314
2315         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
2316         generics.
2317
2318 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
2319
2320         * local-propagation.c (mono_local_cprop): Avoid local propagation
2321         across paired add/sub if the first instruction dest reg is it's
2322         source reg. For example:
2323
2324         int_add_imm R12 <- R12 [1] clobbers: 1
2325         int_sub_imm R42 <- R12 [1] clobbers: 1
2326
2327         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
2328         maintain the math identify.
2329
2330         Fixes #505375.
2331
2332 2009-05-20  Andreia Gaita  <avidigal@novell.com>
2333
2334         * Makefile.am: avoid going on the network just to get the revision,
2335         use git log instead
2336
2337 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
2338
2339         Fixed estimate for short branches on amd64 (they were off mark, and
2340         enabling call prolog-epilog instrumentations caused assertions).
2341         * mini.h (struct MonoBasicBlock): added max_length field to hold the
2342         estimate for the maximum length of this basic block.
2343         * mini-amd64.c:
2344         - mono_arch_emit_prolog: compute max_length for each basic block
2345           (instead of max_offset), and inflate size estimate also for entry bb
2346           in case of code instrumentation.
2347         - mono_arch_output_basic_block: get rid of "cpos" (the current
2348           estimated "position" in the code), and always use "offset" instead,
2349           which is accurate; at the beginning of the function quickly recompute
2350           max_offset for all the remaining blocks, starting from the current
2351           cfg->code_len (which is correct, and not estimated) and using the
2352           estimated block lengths computed previously.
2353
2354 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2355
2356         * exceptions-ppc.c: Remove the caching from the trampoline creation 
2357         functions, it is already done in the caller.
2358
2359         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
2360
2361         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
2362         MONO_ARCH_GSHARED_SUPPORTED define.
2363
2364         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
2365
2366         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
2367         function.
2368
2369 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2370
2371         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
2372         call to mono_marshal_get_rgctx_invoke ().
2373
2374         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
2375         mono_marshal_get_static_rgctx_invoke (), all platforms which support
2376         gshared use the static rgctx trampolines now.
2377         
2378         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2379         platform supports it.
2380
2381 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2382
2383         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2384
2385         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2386
2387 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2390
2391         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2392         for ppc.
2393
2394 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2395
2396         Made it possible for mono_arch_instrument_epilog to preserve
2397         argument registers, otherwise instrumenting the "epilogue" before
2398         a tail call would clobber them.
2399         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2400         if like mono_arch_instrument_epilog but with an additional parameter
2401         that states if argument registers must be preserved.
2402         * mini.c: implemented mono_arch_instrument_epilog as a call to
2403         mono_arch_instrument_epilog_full without asking to preserve argument
2404         registers (this makes the existing code work as usual).
2405         * mini-amd64.c:
2406         - mono_arch_instrument_epilog: add parameter to transform it into
2407         mono_arch_instrument_epilog_full, and preserve argument registers
2408         when required.
2409         - mono_arch_output_basic_block, OP_TAILCALL case: call
2410         mono_arch_instrument_epilog_full.
2411         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2412         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2413         only transformed mono_arch_instrument_epilog into
2414         mono_arch_instrument_epilog_full.
2415
2416 2009-05-15  Geoff Norton  <gnorton@novell.com>
2417
2418         * mini-darwin.c: This works on arm now.
2419
2420 2009-05-14  Geoff Norton  <gnorton@novell.com>
2421
2422         * jit.h, driver.c: Allow full-aot to be decided programatically by the
2423         embedding api.
2424
2425 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
2428         label names.
2429
2430         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
2431         wrappers during full aot mode correctly.
2432
2433         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
2434         methods correctly.
2435
2436         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
2437         mono_metadata_type_hash ().
2438
2439 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
2440
2441         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
2442         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
2443         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
2444         Removed MONO_INST_BRLABEL from the instruction flags, and the
2445         remaining code that used it, because we do not support branches inside
2446         basic blocks (and branch target labels) anymore.
2447         * Makefile.am: As part of the above cleanup, remove reference to
2448         BURG files which don't exist anymore.
2449
2450 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
2453         osx.
2454
2455         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
2456         to use mono_arch_throw_corlib_exception.
2457
2458         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
2459         mono_arch_throw_corlib_exception for throwing corlib exceptions.
2460
2461         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
2462         domain mempool.
2463
2464         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
2465
2466         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
2467         for the got to make debugging easier and to avoid confusing it with the
2468         system got.
2469         
2470         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
2471         method so a breakpoint can be set when using gdb.
2472
2473 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
2476         on mono_method_get_imt_slot ().
2477
2478         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
2479         num_decodes variables.
2480
2481         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
2482         change as it doesn't seem to work.
2483         
2484         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
2485         wrappers.
2486
2487 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
2490         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
2491
2492         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
2493         builder when using full aot.
2494
2495         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
2496         here, it is already handled.
2497         
2498         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
2499         correctly for IMT.
2500
2501         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
2502
2503         * mini-arm.h: Enable IMT for full aot.
2504         
2505         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
2506         arch doesn't support it.
2507
2508         * mini.c (mini_init): Don't disable IMT for full aot if the
2509         architecture supports it.
2510
2511         * mini.h (MonoAotTrampoline): New enum containing the different types
2512         of 'numerous' trampolines.
2513         (MONO_AOT_FILE_VERSION): Bump this.
2514
2515         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
2516         static rgctx trampolines. Add support for full-aot IMT thunks.
2517
2518         * mini-amd64.h: Enable IMT for full aot.
2519
2520         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
2521         to exclude tests belonging to a category.
2522
2523         * generics.cs: Mark some tests with a !FULLAOT category.
2524
2525         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
2526         generics tests.
2527
2528 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
2531         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
2532         (emit_plt): Fix a warning.
2533
2534 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
2537         back into aot-compiler.c to a place where the other functions shared by
2538         the runtime and aot compiler are.
2539         
2540         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
2541         as done previously, instead of in MonoAotFileInfo, since pointers might have
2542         alignment requirements.
2543
2544         * mini.h: Bump AOT file format version.
2545
2546 2009-05-10  Miguel de Icaza  <miguel@novell.com>
2547
2548         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
2549         that is used at runtime from the aot-compiler.c, this makes it
2550         work on setups that remove the AOT compiler from the output
2551         image. 
2552
2553 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
2554
2555         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
2556         PPC.
2557
2558         * mini-ppc.h: Enable static rgctx trampolines for ppc.
2559
2560         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
2561
2562         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
2563         stuff to mono_arch_decompose_long_opts ().
2564         (mono_decompose_opcode): Remove some dead code.
2565
2566 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2567
2568         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
2569         cmethod can be null for quite a some reasons.
2570
2571 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2572
2573         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
2574
2575 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2576
2577         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
2578
2579 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2580
2581         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
2582         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
2583         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
2584         calls returning structures by addr on amd64.
2585
2586         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
2587
2588         * iltests.il.in: Restructure the tail call tests a bit.
2589         
2590 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
2593         for virtual methods too.
2594
2595 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
2596
2597         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
2598         due to regression in verifying System.dll.
2599
2600 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
2603         in dynamic methods.
2604
2605         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
2606         instances.
2607
2608         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
2609         g_str_hash () which can change.
2610
2611         * driver.c (mini_regression): Disable optimizations not supported by
2612         the cpu. Fixes #500019.
2613
2614         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
2615         build.
2616
2617 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2618
2619         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
2620         to the latest LLVM code.
2621
2622 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
2623
2624         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
2625
2626 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
2629         x86/amd64.
2630
2631         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
2632         no longer saving offsets, so just save the patch types along with the other
2633         info.
2634         * aot-runtime.c (load_patch_info): Update after the changes to 
2635         encode_patch_list ().
2636         (decode_got_entry): Removed, merged into load_patch_info ().
2637         (is_shared_got_patch): Removed, call the same function from
2638         aot-compiler.c.
2639
2640         * mini.h: Bump aot file format version.
2641         
2642         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
2643         half-finished no-dlsym code.
2644
2645         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
2646         option.
2647
2648         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
2649         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
2650
2651 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
2654         buffer length to work with AOT code.
2655
2656         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
2657         ldfld/stfld opcodes.
2658
2659         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
2660         as it is not used.
2661
2662         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
2663
2664         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
2665
2666         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
2667         LLVM API.
2668
2669         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
2670         if needed. Don't decompose long operations when using llvm.
2671
2672 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
2675         PAGESIZE constant.
2676
2677         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
2678
2679 2009-05-03  Martin Baulig  <martin@ximian.com>
2680
2681         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
2682         mono_debugger_insert_method_breakpoint() since the class init
2683         handler we're inserting at the top of the method already gives us
2684         a notification.
2685
2686 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
2687
2688         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
2689         to mono_arch_decompose_long_opts () for x86 and arm.
2690
2691 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
2692
2693         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
2694         TARGET_AMD64 here.
2695
2696 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
2699         JIT code.
2700
2701 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2702
2703         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
2704         number of trampolines used in full-aot mode.
2705
2706         * aot-compiler.c: Add an ntrampolines option to set the number of 
2707         trampolines emitted in full-aot mode.
2708
2709 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
2712         a volatile load. Get rid of get_tempname (), llvm assigns names
2713         automatically.
2714
2715         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
2716         builder function.
2717
2718         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
2719         a value.
2720
2721         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
2722         level 1.
2723
2724         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
2725         to the same register as a fixed sreg2. Fixes #497271.
2726
2727         * iltests.il.in: Add a new test.
2728
2729 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2730
2731         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
2732         stack, since pushes complicate exception handling.
2733
2734         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
2735         the stack if they are passed using moves.
2736
2737         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2738
2739         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
2740         when using llvm.
2741
2742         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
2743         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
2744         of FMOVE if it is an R4.
2745
2746 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
2747
2748         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
2749
2750         * mini.h (LLVMCallInfo): New structure to store calling convention 
2751         information for the LLVM back end similar to the CallInfo structures in 
2752         the back-ends.
2753
2754         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
2755         call information in a format usable by LLVM.
2756         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
2757
2758         * method-to-ir.c (mono_emit_call_args): Emit calls using 
2759         mono_llvm_emit_call () when compiling using LLVM.
2760
2761         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
2762         comments to all functions. Fix memory leaks. Add a public init/cleanup
2763         function.
2764
2765         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
2766
2767         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
2768         mono_array_new_va () jit icall.
2769         
2770 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
2771
2772         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
2773         multiple machine description files to be specified.
2774         * mini-ops.h: fixes for cross-compilation.
2775
2776 2009-04-22  Miguel de Icaza  <miguel@novell.com>
2777
2778         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
2779         some porting work.
2780
2781 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
2782
2783         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
2784         to prevent asserts in various passes. Fixes #497220.
2785
2786 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
2789         a racy assert.
2790
2791         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
2792         table to avoid duplicates.
2793
2794         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2795         
2796         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
2797         option is used.
2798
2799 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2800
2801         * mini.c (mini_method_verify): Fail fulltrust code if the exception
2802         is for method or field access.
2803
2804 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
2805
2806         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
2807         a Value to stdout.
2808
2809         * mini-llvm.c (mono_llvm_emit_method): Use it.
2810         
2811         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
2812         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
2813         on volatile values.
2814
2815         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
2816         synchronized methods.
2817
2818         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
2819
2820         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
2821
2822         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
2823         OP_LOADI8_MEM.
2824
2825         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
2826         allowing some options to be set dynamically.
2827
2828 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
2829
2830         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
2831         unconditional branch.
2832
2833         * mini.h (MonoTrampolineType): Add new trampoline type 
2834         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
2835         compiled code.
2836
2837         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
2838         function.
2839
2840         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
2841         creation function.
2842
2843         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
2844         is enabled. Instead, use the llvm vcall trampoline.
2845         
2846         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
2847
2848         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
2849         
2850         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
2851         functions.
2852
2853         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
2854         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
2855
2856         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
2857         OP_IA64_CSET opcode.
2858
2859         * mini.c: Fix a warning.
2860
2861         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
2862         THROW to the appropriate llvm type.
2863
2864 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * mini.c (mini_method_compile): Add statistics for methods JITted
2867         with/without LLVM.
2868
2869 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2870
2871         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
2872         OP_IA64_CMP_<cond>_IMM opcodes.
2873
2874 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2875
2876         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
2877         corlib exceptions.
2878
2879         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
2880         correctly.
2881
2882         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
2883         GENERICINST.
2884
2885 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
2886
2887         * mini-exceptions.c : add thread id to EXCEPTION trace message.
2888
2889 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2890
2891         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
2892         support.
2893
2894         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
2895         rgctx invoke trampolines for x86.
2896
2897         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
2898         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
2899         (mono_arch_get_vcall_slot): Simplify this.
2900
2901 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
2902
2903         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
2904         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
2905
2906 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
2909         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
2910
2911         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
2912
2913         * liveness.c (visit_bb): Remove a needless assert.
2914
2915 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
2918         full aot support to the arch specific code.
2919
2920         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
2921
2922         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2923
2924         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2925         
2926         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2927         collect information about the delegate invoke impl trampolines.
2928
2929         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2930         to save trampolines during full-aot mode.
2931
2932         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2933         creation function which returns a trampoline which sets the rgctx
2934         argument.
2935         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2936         wrapper if possible.
2937         (mono_delegate_trampoline): Ditto.
2938
2939         * mini.c (mono_jit_runtime_invoke): Ditto.
2940
2941         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2942         
2943         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2944
2945         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2946         
2947 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2948
2949         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2950         just setting the opcode to OP_NOP.
2951
2952 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2953
2954         * mini.c (mini_method_compile): Put the last change inside an 
2955         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2956         
2957         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2958         and extend live ranges to cover the whole method when using xdb.
2959
2960         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2961         do it in the trampolines.
2962
2963         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2964         needed.
2965
2966         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2967         
2968         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2969         call code in full-aot mode since IMT is disabled there.
2970         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2971         new JIT no longer has that restriction.
2972
2973         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2974
2975         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2976         a more compact format.
2977         (mono_aot_wrapper_name): New function to return a unique name for a
2978         wrapper method, also used by the AOT runtime.
2979
2980         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2981         aot-compiler.c.
2982
2983         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2984         when a ICollection<T> etc is encountered.
2985         (add_generic_instances): Process method arguments/locals too.
2986         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2987         trampoline names.
2988
2989         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2990         
2991 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2992
2993         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2994
2995         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2996
2997         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2998         representing the result of the decomposition. Nullify instructions
2999         instead of setting them to OP_NOP since nops can't have registers
3000         set.
3001
3002 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3003
3004         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3005         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3006         info. Strip 'mapping symbols' on ARM.
3007
3008         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3009         
3010         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3011         this with the native genmdesc.
3012
3013 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3014
3015         * aot-runtime.c:  Fixing the MSVC build.
3016
3017         Code is contributed under MIT/X11 license.
3018
3019 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3020
3021         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
3022         JITted code depends on it.
3023
3024 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3025
3026         * aot-compiler.c: Use new MonoGenericParam accessors.
3027
3028 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3029
3030         Reduce memory usage and improve correctness wrt MonoGenericParam
3031         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
3032         handing.  Avoid allocating MonoGenericParams, but use the ones in
3033         the container itself.
3034
3035 2009-04-07  Miguel de Icaza  <miguel@novell.com>
3036
3037         * tasklets.c: Return exceptions in the out argument.
3038
3039 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
3042         opcode. Use pointer types in more places instead of casting them to 
3043         integers.
3044
3045         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
3046         optimizations.
3047         (mono_llvm_optimize_method): New helper function to optimize a method.
3048
3049         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
3050         widening code so it could be called from more places.
3051         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
3052         code paths in the call opcodes.
3053
3054 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
3055
3056         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
3057
3058 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * dwarfwriter.c: Use _ to separate class name 
3061         components as gdb can't handle '.'. Represent reference variables
3062         as 'class <NAME>&'.
3063         
3064         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
3065
3066         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
3067         
3068         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
3069
3070         * gc-test.cs: New file with GC stack marking tests.
3071         
3072         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
3073         negative numbers for vfp.
3074
3075         * basic-float.cs: Add a test.
3076         
3077 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
3078
3079         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
3080
3081 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
3082
3083         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
3084         part of tasklet/continuation support.
3085
3086 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
3087
3088         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
3089         amd64 opcodes inside an ifdef.
3090
3091         * dwarfwriter.c: Emit inheritance information for classes, emit fields
3092         of complex types.
3093         
3094         * dwarfwriter.c (emit_type): Emit the class info for classes.
3095
3096 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
3097
3098         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
3099
3100         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
3101
3102         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
3103
3104         * ssa.c (mono_ssa_compute): Fix some memory leaks.
3105
3106 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
3107
3108         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
3109
3110         * mini-llvm.c: Update comments.
3111
3112         * mini.h (COMPILE_LLVM): New macro.
3113
3114         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
3115
3116         * ssa.c (mono_ssa_compute): Ditto.
3117         
3118         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
3119         the unwind ops from a DWARF FDE.
3120
3121         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
3122         methods by extracting the dwarf unwind ops from the unwind info generated
3123         by LLVM.
3124         
3125         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
3126         calls.
3127
3128         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
3129         addressing modes.
3130
3131 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
3132
3133         * Makefile.am (llvm_sources): Enable this.
3134
3135         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
3136         failing back to the JIT if something cannot be handled.
3137
3138         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
3139         compiling with LLVM.
3140
3141         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
3142         compiling with LLVM.
3143
3144         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
3145         compiling with LLVM.
3146
3147         * mini-ops.h: Add a few opcodes needed by LLVM.
3148
3149         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
3150         has no unwind info.
3151
3152         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
3153         backend.
3154
3155         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
3156
3157         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
3158
3159 2009-04-01  Mark Probst  <mark.probst@gmail.com>
3160
3161         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
3162         ridiculously large methods.
3163
3164 2009-03-31  Martin Baulig  <martin@ximian.com>
3165
3166         * debug-debugger.c (debugger_remove_breakpoint): Call
3167         mono_debugger_remove_class_init_callback ().
3168
3169 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
3170
3171         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
3172         right before emitting code, not at the start.
3173
3174         * mini.c (mono_postprocess_patches): Extract this into a separate function
3175         from mono_codegen ().
3176
3177         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
3178         byref types correctly.
3179
3180 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
3183         by the last change.
3184
3185 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
3186
3187         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
3188         indirect calls, this avoids problems where get_vcall_slot () would get
3189         confused by the native code for the instruction preceeding the call.
3190         (mono_arch_get_vcall_slot): Simplify this.
3191         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
3192
3193         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
3194         register allocator now seems to depend on them instead of the data in
3195         cpu-<ARCH>.md.
3196
3197         * mini.c (mini_method_compile): Throw the correct type of exception if
3198         mono_method_get_header () fails because of a loading error.
3199
3200 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
3201
3202         * mini.c (mini_method_compile): Clear the loader error if the method
3203         header cannot be decoded.
3204
3205         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
3206         interface methods on proxies correctly.
3207
3208         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
3209         this argument for vtype methods. Add precise liveness info for arguments.
3210
3211         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
3212         LIVERANGE_START/END opcodes.
3213
3214         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
3215         for arguments and values in registers.
3216
3217 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
3218
3219         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
3220         return a valuetype. Fixes #487518.
3221
3222         * iltests.il: Add a test.
3223         
3224         * aot-compiler.c: Use mono_thread_create () to create helper threads.
3225
3226         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
3227         closed over a null reference correctly.
3228
3229 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
3232
3233 2009-03-25  Mark Probst  <mark.probst@gmail.com>
3234
3235         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
3236         allocated to the same registers as fixed sregs.
3237
3238 2009-03-24  Mark Probst  <mark.probst@gmail.com>
3239
3240         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
3241         ATOMIC_CAS_IMM ops.
3242
3243         * method-to-ir.c: Handle more cases for
3244         Interlocked.CompareExchange.
3245
3246         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
3247         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
3248         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
3249
3250 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * aot-runtime.c (decode_method_ref): Fix a warning.
3253
3254         * unwind.c (mono_unwind_frame): Ditto.  
3255
3256 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3257
3258         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
3259         (mono_compile_assembly): Enable the binary writer for full-aot as well.
3260
3261         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
3262         fix the handling of large values in the ALU_PC_G0_NC relocation.
3263
3264 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
3267
3268 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3269
3270         * method-to-ir.c (mono_spill_global_vars): Support for ternary
3271         ops.
3272
3273 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3274
3275         * method-to-ir.c: MINI_OP3 needs a comma.
3276
3277         * method-to-ir.c, mini.h, mini.c: Remove
3278         mono_init_op_sreg_counts ().
3279
3280 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3281
3282         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
3283         OP_JMP.
3284         
3285         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
3286         assertion.
3287
3288         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
3289
3290         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
3291         code somewhat.
3292
3293 2009-03-21  Mark Probst  <mark.probst@gmail.com>
3294
3295         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
3296         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
3297         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
3298         operations.
3299
3300 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
3301
3302         * driver.c: Change location of gc_wrapper.h.
3303
3304         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
3305         inside finally clauses correctly. Fixes #485721.
3306
3307         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
3308         after the change above.
3309
3310         * exceptions.cs: Add a test.
3311         
3312 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
3315
3316         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
3317         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
3318         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
3319
3320         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
3321         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
3322
3323 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
3324
3325         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
3326         Simplify logic for ensure_method_is_allowed_to_call_method. 
3327         Handle wrappers on callers.
3328
3329 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3330
3331         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
3332         them don't run yet.
3333
3334         * basic-simd.cs: Fix the names of some test methods.
3335
3336 2009-03-18  Geoff Norton  <gnorton@novell.com>
3337
3338         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
3339
3340 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
3341
3342         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
3343
3344 2009-03-17  Jb Evain  <jbevain@novell.com>
3345
3346         * driver.c: remove now uneeded call to mono_gc_base_init before
3347         mono_profiler_load.
3348
3349 2009-03-17  Jb Evain  <jbevain@novell.com>
3350
3351         * dwarfwriter.c (token_handler): handle more cases.
3352
3353 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
3354
3355         * method-to-ir.c: Remove more dead code (that was required only
3356         because of method_is_safe). Fix compiler warnings.
3357
3358 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3359
3360         * method-to-ir.c: Remove unneeded/useless method_is_safe
3361         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
3362
3363 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3364
3365         * mini.c (mini_method_compile): Print the method been compiled with
3366         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
3367         for people not familiar with the runtime.
3368
3369 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3370
3371         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
3372         a managed object which is later put into a GList. Return its class instead.
3373
3374         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
3375         stack slots when using sgen.
3376
3377 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
3378
3379         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3380
3381 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3382
3383         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3384         > so it works on the first vreg as well.
3385
3386 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3387
3388         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3389         trigger randomly.
3390
3391         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3392         
3393         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3394         implement GArray.
3395
3396 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3397
3398         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3399         native->IL offset mapping.
3400
3401 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3402
3403         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3404
3405         * basic.cs: Add a test.
3406
3407 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3408
3409         * mini-x86.c (mono_arch_output_basic_block): Use different
3410         registers in case the ones we want to overwrite are used by the
3411         other operand.  Fixes regression in #480807.
3412
3413 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
3416
3417         * dwarfwriter.c (emit_line_number_info): The line number info for
3418         IL code was off by one. Fix that.
3419
3420         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
3421         stack.
3422
3423 2009-03-09  Mark Probst  <mark.probst@gmail.com>
3424
3425         Contributed under the terms of the MIT/X11 license by Steven
3426         Munroe <munroesj@us.ibm.com>.
3427
3428         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
3429         Fixes #483462.
3430
3431 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3432
3433         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
3434         as well.
3435
3436 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3437
3438         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
3439         the delegate ctor handling code. Fixes #482638.
3440         
3441         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
3442         #481458.
3443
3444         * iltests.il.in: Add a test.
3445         
3446         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
3447         mini-posix.c.
3448
3449 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3450
3451         * mini-trampolines.c (mono_create_jump_trampoline): If the method
3452         is shared generic code, return the trampoline, even if the method
3453         has already been compiled.  Fixes #479763.
3454
3455         * mini.c, mini.h: New function
3456         mono_jit_find_compiled_method_with_jit_info() which is the same as
3457         mono_jit_find_compiled_method() but also returns the jit info.
3458
3459 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3460
3461         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
3462         for methods which actually have one.  For all other methods, make
3463         sure the this argument var is live the whole method.
3464
3465         * mini.c (mini_method_compile): Every shared method has a
3466         this/vtable/mrgctx info.  Fixes #480807.
3467
3468 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3469
3470         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
3471         generic/imt thunks where some entries branch through the vtable,
3472         while other entries branch directly.
3473
3474 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3475
3476         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
3477
3478         * mini-windows.c: Ditto.
3479         
3480         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
3481         ctors.
3482
3483 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
3484
3485         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
3486         down an assert.
3487
3488 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3489
3490         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
3491         #481403.
3492
3493 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3494
3495         * exceptions-x86.c: Include debug-mini.h - fixes build.
3496
3497 2009-03-04  Martin Baulig  <martin@ximian.com>
3498
3499         * debug-mini.c: Clean up the exception API and add documentation.
3500         (mono_debugger_handle_exception): New public method; this is
3501         called when throwing an exception or encountering an unhandled one.
3502         (mono_debugger_call_exception_handler): Formerly known as
3503         mono_debugger_handle_exception(); this is used to tell the
3504         debugger that we're about to invoke an exception handler.
3505
3506 2009-03-04  Martin Baulig  <martin@ximian.com>
3507
3508         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
3509         ../metadata/mono-debug-debugger.c; save and reset exception state.
3510
3511 2009-03-02  Martin Baulig  <martin@ximian.com>
3512
3513         * debug-mini.c: Moved the debugger exception handling here from
3514         ../metadata/mono-debug-debugger.c.
3515
3516         * debug-mini.h
3517         (MonoDebuggerExceptionAction): New exception typedef.
3518
3519         * debug-mini.c
3520         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
3521
3522         * exceptions-amd64.c
3523         (mono_amd64_throw_exception): Use the new debugger exception
3524         handling code.
3525
3526         * mini-exceptions.c
3527         (mono_handle_exception_internal): Don't call
3528         mono_debugger_unhandled_exception() here.
3529
3530 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3531
3532         * mini.c aot-compiler.c: Update after the changes to 
3533         mono_marshal_get_runtime_invoke ().
3534
3535         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
3536         Virtual generic methods might not have method->slot set, work around
3537         that.
3538
3539         * generics.cs: Add a test.
3540
3541 2009-03-02  Geoff Norton  <gnorton@novell.com>
3542
3543         * mini.c:
3544         * driver.c: Allow signal chaining of SIGFPE as well.
3545
3546 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
3549         this since it now receives the method not its generic context in the
3550         IMT reg.
3551
3552         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
3553         generic/imt thunks where some entries branch through the vtable, while
3554         other entries branch directly.
3555
3556         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
3557
3558         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
3559         support for interface methods as well.
3560
3561         * mini-trampolines.c: Add support for virtual generic methods in interfaces
3562         using the normal IMT thunks.
3563
3564         generics.cs: Add new tests.
3565         
3566         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
3567         the generic inst to the generic imt thunks. This fixes AOT support, 
3568         improves consistency with the normal IMT thunks, and makes it easier to
3569         add support for interface generic virtual methods later.
3570
3571         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
3572         
3573 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
3574
3575         * driver.c (mono_set_signal_chaining): New public API function to enable
3576         signal chaining on POSIX platforms.
3577
3578         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
3579         (si@lindenlab.com) to implement signal chaining. The original patch was
3580         contributed under the MIT X/11 license:
3581         https://bugzilla.novell.com/show_bug.cgi?id=318894
3582
3583 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
3584
3585         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
3586         too until it can be made to run on amd64.
3587
3588 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
3589
3590         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
3591         to  get_generic_context_from_code () + get_call_info () if possible.
3592
3593 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
3594
3595         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
3596         suspend-on-sigsegv functionality.
3597
3598         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
3599         to suspend when a native SIGSEGV is received. This is useful for debugging
3600         crashes which don't happen under gdb, since a live process contains more
3601         information than a core file.
3602
3603         * mini-exceptions.c (mono_print_thread_dump): Use 
3604         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
3605
3606         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
3607
3608         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
3609         
3610         * basic-float.cs: Disable the tests which currently fail on amd64.
3611
3612         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
3613         value to mono_arch_patch_callsite () to fix crashes.
3614         
3615         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
3616
3617 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
3620         nop code by patching the call address to point to the nullified class init
3621         trampoline, as the former does not seem to be safe on SMP machines.
3622
3623 2009-02-23  Mark Probst  <mark.probst@gmail.com>
3624
3625         * mini-ops.h: Fix the argument types for a few x86 opcodes where
3626         they were wrong.
3627
3628 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3629
3630         * basic-float.cs basic-calls.cs: Fix warnings.
3631
3632 2009-02-22  Mark Probst  <mark.probst@gmail.com>
3633
3634         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
3635         correct frame pointer in the LMF.  Should fix #478394.
3636
3637 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3638
3639         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
3640
3641         * image-writer.c: Make the binary writer less verbose.
3642
3643 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
3644
3645         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
3646         are called from runtime invoke wrappers.
3647
3648 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * cpu-ppc.md (store_memindex): Increase the size of this.
3651
3652 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3653
3654         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3655
3656         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
3657
3658         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
3659         OP_LCONV_TO_R_UN.
3660
3661         Last fix for of #467201.
3662
3663
3664 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3665
3666         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3667
3668         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
3669         and long_conv_to_r8_2:
3670
3671         Fixed part of #467201.
3672
3673 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3674
3675         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3676
3677         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
3678         conversion to 32 bits.
3679
3680         * cpu-x86.md: Increase the size of int_conv_to_r4.
3681
3682         * basic-float.cs: Add a test for this.
3683
3684         Fixed part of #467201.
3685
3686 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3687
3688         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3689
3690         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
3691         conversion to 64 bits.
3692
3693         * basic-float.cs: Add a test for this.
3694
3695         Fixed part of #467201.
3696
3697 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3698
3699         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3700
3701         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
3702         This behavior is compatible with MS.
3703
3704         * iltest.il.in: Add a test for this.
3705
3706         Fixed part of #467201.
3707
3708 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3709
3710         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3711
3712         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
3713         change the precision of the value.
3714
3715         * cpu-x86.md: Define len for float_conv_to_r4.
3716
3717         * basic-float.cs: Add a test for this.
3718
3719         Fixed part of #467201.
3720
3721 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3722
3723         * mini.c: Adjust locking order to the new semantics where the loader lock
3724         comes first.
3725
3726 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
3727
3728         * aot-runtime.c:
3729         * mini-amd64.c:
3730         * mini-arm.c:
3731         * mini-ia64.c:
3732         * mini-mips.c:
3733         * mini-ppc.c:
3734         * mini-sparc.c:
3735         * mini-trampolines.c:
3736         * mini-x86.c:
3737         * mini.c:
3738         * tramp-alpha.c:
3739         * tramp-amd64.c:
3740         * tramp-arm.c:
3741         * tramp-hppa.c:
3742         * tramp-ia64.c:
3743         * tramp-mips.c:
3744         * tramp-ppc.c:
3745         * tramp-s390.c:
3746         * tramp-s390x.c:
3747         * tramp-sparc.c:
3748         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
3749
3750 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3751
3752         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
3753         as it is incorrect.
3754
3755 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3756
3757         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
3758         for cctors if needed.
3759
3760 2009-02-17  Mark Probst  <mark.probst@gmail.com>
3761
3762         * mini-ppc.c: Fix build on Darwin.
3763
3764 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3765
3766         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
3767         version instead of 3 as valgrind doesn't like version 3.
3768
3769         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3770
3771         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
3772         usable for hashing methods.
3773         (emit_extra_methods): Use the new hash to avoid putting every method in the
3774         same hash bucket.
3775
3776         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
3777
3778         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
3779         whenever a method ref could match a method.
3780         
3781         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
3782         test to fail.
3783         
3784         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
3785         methods refs.
3786
3787         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
3788
3789         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
3790         the encoding buffer.
3791
3792         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
3793         mono_method_get_header () on inflated methods as an optimization.
3794
3795 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3796
3797         * ssa.c (fold_ins): Fix another crash if the instruction following the
3798         switch was optimized away.
3799
3800 2009-02-16  Mark Probst  <mark.probst@gmail.com>
3801
3802         Contributed under the terms of the MIT/X11 license by Steven
3803         Munroe <munroesj@us.ibm.com>.
3804
3805         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
3806
3807 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3808
3809         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
3810         around the mono_domain_alloc calls, it is now done by the functions
3811         themselves.
3812
3813         * aot-compiler.c (compile_method): Only add wrappers referenced by
3814         the method if compiling with full AOT.
3815         (mono_compile_assembly): Error out if --aot=full is specified on
3816         a platform where it is not supported.
3817
3818         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
3819         on ARM too.
3820
3821         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
3822         AOT support.
3823
3824         * aot-runtime.c (load_named_code): Handle 
3825         mono_arm_throw_exception_by_token.
3826
3827         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
3828
3829         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
3830         unaligned.
3831
3832         * Makefile.am (fullaotcheck): Exit if a test fails.
3833
3834         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
3835         on ARM.
3836         (mono_compile_assembly): Handle the assembler failing.
3837
3838         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
3839         accepting subsections of .bss.
3840
3841         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
3842         was optimized away.
3843
3844         * aot-compiler.c: Remove some unused includes.
3845         
3846         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
3847         now in MonoImageWriter.
3848
3849         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
3850         code sequence which matches a non-virtual call. Fixes #472654.
3851
3852 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
3853
3854         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
3855         xdebug code.
3856         
3857         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
3858         use the image/dwarf writers directly.
3859
3860         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
3861         field.
3862
3863         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
3864         MonoDwarfWriter.
3865
3866         * image-writer.h: Fix some typos.
3867
3868         * dwarfwriter.h dwarfwriter.c: New files.
3869         
3870         * aot-compiler.c: Extract the DWARF info writing functionality into a 
3871         separate module.
3872
3873         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
3874         argument to return unwind info.
3875
3876         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
3877
3878         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
3879         
3880         * aot-runtime.c (decode_method_ref): Add a case for 
3881         MONO_AOT_METHODREF_WRAPPER_NAME.
3882
3883         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
3884         for AOT.
3885
3886         * aot-compiler.c (encode_method_ref): Use the new constants.
3887
3888         * aot-runtime.c (decode_method_ref): Ditto.
3889
3890         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
3891         be compiled, not the icall itself.
3892
3893 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
3896         using decode_method_ref ().
3897
3898         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
3899         convert it to an in32. Fixes #475859.
3900
3901         * arrays.cs: Add a test.
3902
3903 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3904
3905         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
3906         OP_LCONV_TO_U2.
3907
3908         * basic-long.cs: Add a test.
3909
3910 2009-02-12  Mark Probst  <mark.probst@gmail.com>
3911
3912         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
3913         remove the frame pointer in leaf methods which don't receive any
3914         arguments, don't throw exceptions and don't do dynamic stack
3915         allocations.
3916
3917 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3918
3919         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
3920         the fail_tramp changes. Hopefully fixes #475132.
3921
3922 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3923
3924         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3925         instead of mono_metadata_signature_dup_full.
3926
3927 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3928
3929         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3930         for processing jump tables. Fixes #473787.
3931
3932 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3933
3934         * mini-generic-sharing.c: mini_method_get_context() just calls
3935         mono_method_get_context_general() now.
3936
3937         * mini.c, mini.h: Moved get_object_generic_inst(),
3938         construct_object_context_for_method() and
3939         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3940
3941 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3942
3943         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3944         basic block fell through to its successor bblock without a branch. Fixes
3945         #474718.
3946
3947         * iltests.il.in: Add a test.
3948         
3949         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3950         (can_encode_patch): We can now handle arrays of generic parameters and
3951         array methods.
3952
3953         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3954
3955         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3956         the AOT file to avoid some #ifdefs in aot-runtime.c
3957
3958         * mini.h: Bump AOT file format version.
3959
3960 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * Makefile.am (fullaotcheck): Make this run the tests.
3963
3964         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3965
3966 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3967
3968         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3969         individually.  Fixes #473482.
3970
3971 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3972
3973         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3974
3975 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3976
3977         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3978         (mono_compile_assembly): Hush compile warnings about
3979         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3980         code path.
3981
3982 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3983
3984         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3985
3986         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3987
3988         * aot-compiler.c: Fix arm support.
3989
3990         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3991         img_writer_emit_unset_mode () function.
3992
3993         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3994         (mono_unwind_get_dwarf_pc_reg): Ditto.
3995
3996         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3997         Move almost all platform specific code to a set of arch_ functions, 
3998         and document them to ease porting.
3999         
4000         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4001
4002         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4003
4004         * aot-compiler.c: Extract the image writing functionality into a separate
4005         module to reduce the size of this file.
4006
4007 2009-02-09  Geoff Norton  <gnorton@novell.com>
4008
4009         * mini-s390.c: Fix the signature of emit_sig_cookie.
4010
4011 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4012
4013         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4014
4015         * aot-runtime.c (is_shared_got_patch): Ditto.
4016
4017         * aot-runtime.c (load_named_code): Cope with the fact that 
4018         decode_got_entry () won't decode the patch fully if its corresponding got
4019         entry is already filled.
4020         
4021         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
4022         Initialize *ji.
4023         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
4024
4025         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
4026         as the moving pointer instead of 'buf' for consistency with the rest of the
4027         codebase.
4028         (mono_arch_create_monitor_exit_trampoline): Ditto.
4029
4030         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
4031         generic_class_init trampolines.
4032         (add_generic_class): Extract some code from add_generic_instances () into a
4033         separate function so it can be called from other places too.
4034         (compile_method): Call add_generic_class () for the classes of inflated methods
4035         referenced by the method.
4036         (can_encode_patch): Allow references to generic parameters.
4037
4038         * aot-runtime.c: Add support the patches required by the new trampolines.
4039         
4040         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
4041         support.
4042
4043         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
4044         full-aot support.
4045
4046         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
4047         this from get_throw_pending_exception, make the signature full aot compatible.
4048
4049         * Makefile.am (fullaotcheck): New target to run full-aot tests.
4050
4051         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
4052
4053         * exceptions.cs: Add a test.
4054
4055 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4056
4057         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
4058         use the DWARF_DATA_ALIGN constant instead.
4059
4060         * exception-<ARCH>.c: Update after the above change.
4061
4062         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
4063         dwarf unwinder.
4064
4065         * mini-arm.c: Enable the dwarf unwinder.
4066
4067         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
4068         instead of mono_class_setup_vtable ().
4069
4070 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4071
4072         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
4073         dwarf unwinder.
4074
4075         * mini-x86.h: Enable the dwarf unwinder.
4076
4077 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
4078
4079         Fix mcs/tests/test-7.cs
4080         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
4081         2009-02-03.
4082
4083 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * mini.c (print_jit_stats): Remove some unused statistics.
4086
4087 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4088
4089         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
4090
4091 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4092
4093         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
4094         the method we get from mono_object_get_virtual_method() because
4095         that function does it properly, now.
4096
4097 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4098
4099         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
4100         opcodes. Fixes #472775.
4101
4102 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4103
4104         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
4105         fact that mono_find_jit_info() sometimes returns the context
4106         corresponding to the jit info in new_ctx.  Fixes #472600.
4107
4108 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
4111         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
4112         klass->enum_basetype directly.
4113
4114         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
4115         enum subtypes.
4116
4117         * unwind.c: Avoid 0 sized arrays.
4118
4119 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4120
4121         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
4122         size on systems with 64k pages. Fixes #471389.
4123
4124 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4125
4126         Contributed under the terms of the MIT/X11 license by Steven
4127         Munroe <munroesj@us.ibm.com>.
4128
4129         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
4130         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
4131         necessary.
4132
4133 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4134
4135         Contributed under the terms of the MIT/X11 license by Steven
4136         Munroe <munroesj@us.ibm.com>.
4137
4138         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
4139         comparison fix.
4140
4141         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
4142         The trampoline can be longer on PPC64.
4143
4144 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4145
4146         Contributed under the terms of the MIT/X11 license by Steven
4147         Munroe <munroesj@us.ibm.com>.
4148
4149         * mini-ppc.c: Compiler warning fixes and trivial code
4150         simplifications.
4151
4152 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4153
4154         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
4155         ins->dreg which could be a hardware register, not a vreg.
4156
4157         * aot-compiler.c (emit_method_dwarf_info): Ditto.
4158         
4159         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
4160         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
4161
4162         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
4163         
4164         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
4165         ->dreg, that is not the vreg we are looking for.
4166
4167         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
4168
4169         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
4170         LIVERANGE_END.
4171
4172         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
4173         strange crashes.
4174
4175 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
4176
4177         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
4178
4179         * aot-compiler.c (emit_line_number_info): Fix line number emission when
4180         the line diff is 0.
4181
4182         * aot-compiler.c: Add xdebug support on x86.
4183
4184         * unwind.c: Add x86 support.
4185         
4186         * aot-compiler.c (emit_exception_debug_info): Control the emission of
4187         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
4188
4189         * mini.c (mini_method_compile): Ditto.
4190         
4191         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
4192         the variable index.
4193
4194         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
4195         which mimic .push_section/.pop_section in GAS.
4196         
4197         * aot-compiler.c: Emit precise live range information for variables.
4198
4199         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
4200
4201         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
4202         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
4203         them.
4204
4205         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
4206         the live ranges of variables.
4207
4208         * mini.h (struct MonoMethodVar): Add two fields containing the live range
4209         of the variable in terms of native offsets.
4210
4211 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
4212
4213         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
4214         
4215 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4216
4217         Contributed under the terms of the MIT/X11 license by Steven
4218         Munroe <munroesj@us.ibm.com>.
4219
4220         * exceptions-ppc.c (restore_regs_from_context): Correct operand
4221         order (offset then base reg) for ppc_load_multiple_regs.
4222         (emit_save_saved_regs) Correct operand order for
4223         ppc_store_multiple_regs.
4224         (mono_arch_get_call_filter): Correct operand order for
4225         ppc_load_multiple_regs.
4226
4227         * mini-ppc.c (emit_memcpy): Fix operand order for
4228         ppc_load_reg_update and ppc_store_reg_update.
4229         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
4230         (mono_arch_emit_epilog): Correct operand order for
4231         ppc_load_multiple_regs.
4232
4233         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
4234         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
4235
4236 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4237
4238         * cpu-ppc64.md: Fixed storer4_memindex length.
4239
4240 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4241
4242         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
4243         line number info.
4244         
4245         * aot-compiler.c (emit_line_number_info): Optimize this.
4246
4247 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * aot-compiler.c: Disassemble tokens in the IL disassembly.
4250         
4251         * aot-compiler.c: Add debug info for methods without debug info by
4252         emitting an IL file and having the line number info referencing that file.
4253
4254         * aot-compiler.c: Optimize the size of the generated line number info.
4255
4256         * aot-compiler.c: Emit line number info in xdebug mode.
4257
4258         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
4259         million arguments.
4260
4261 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
4264
4265         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
4266         is used.
4267
4268 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4269
4270         * basic-calls.cs: Test for the weird crash found on arm.
4271         
4272 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4273
4274         * cpu-arm.md: Increase the size of storer8_membase_reg and
4275         loadr8_membase_reg to 24 bytes to accomodate the extra add.
4276
4277         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
4278         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
4279         reg to LR otherwise we'll be loading/storing from just the offset.
4280
4281 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4282
4283         Question: if we are storing gint32's inside the "*native_offset",
4284         should we change the signature to "gint32 *native_offset" to
4285         ensure that we do not have type definition problems?
4286         
4287         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
4288         an int * as this is what the other function expects, causes
4289         problems with Freescale's compiler that defined int32_t to be a
4290         long and makes int incompatible 
4291
4292 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4293
4294         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
4295         filename conflict with bjam.
4296
4297 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4298
4299         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
4300         as it might use decomposed ops.
4301
4302 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4303
4304         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
4305
4306         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
4307         is defined.
4308
4309         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
4310
4311         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
4312         offsets.
4313
4314         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
4315         way registers are stored in MonoContext on arm.
4316
4317         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
4318         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
4319
4320         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
4321
4322         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
4323
4324         * mini.c (mini_init): Register mono_isfinite.
4325
4326         * jit-icalls.c (mono_isfinite): New jit icall.
4327
4328         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
4329         
4330         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
4331         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
4332         the parent frame.
4333
4334 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4335
4336         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
4337         separate frame and stack pointers, so we must use FP to find the register
4338         spill area.
4339         The FP reg is retrieved from the MonoContext::regs array.
4340
4341 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4342
4343         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
4344         as FPA requires it.
4345
4346 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4347
4348         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
4349         return R4 and R8 when not running under softfloat.
4350
4351         Fixes basic-calls.exe
4352
4353 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4354
4355         * mini-arm.c: Implement some overflow opcodes.
4356
4357 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4358
4359         * ssa.c: handle another alloca.h
4360
4361         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
4362         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
4363         MONO_ARCH_USE_SIGACTION. 
4364
4365         * aot-runtime.c, mini-exceptions.c: Replace platform define with
4366         capability defines.
4367
4368         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
4369
4370         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
4371         PPC targets as sigaction does not exist on all platforms, define
4372         this on a per-platform basis.
4373
4374         Instead of erroring out if the platform is not defined, include
4375         mini-ppc-os.h, and expect that the OS specific setting provides
4376         the required information.   
4377
4378 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * aot-compiler.c: Fix --enable-minimal=aot.
4381
4382 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4383
4384         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4385         previous change.
4386
4387 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4388
4389         * exceptions-arm.c: Fix warnings.
4390
4391         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4392         ARM.
4393
4394         * mini-x86.c: Fix --enable-minimal=jit build.
4395
4396         * mini.c: Really fix --enable-minimal=jit build.
4397         
4398         * mini.c (construct_object_context_for_method): Move this outside
4399         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4400
4401         "Backported" of r124984 from 2.0 branch.
4402         
4403         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4404
4405         "Backport" of r124977 + r124978 from 2.0 branch.
4406         
4407         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4408         to avoid calling mono_exception_from_token () from the throw trampoline.
4409         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4410         for throwing corlib exceptions, this fixes full-aot support for corlib
4411         exceptions.
4412
4413         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
4414
4415 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4416
4417         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
4418         part of the changes to split the code in mini into operating
4419         system specific files.
4420
4421         This patch was done by copying mini.c to the respective files to
4422         preserve SVN history.
4423
4424 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4425
4426         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
4427
4428 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4429
4430         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
4431         remoting-invoke-with-check wrappers of shared methods.
4432
4433         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
4434
4435 2009-01-27  Mark Probst  <mark.probst@gmail.com>
4436
4437         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
4438         optimization if the top of stack is the last instruction in the
4439         bblock.  Otherwise it might have been used after its definition.
4440         Fixes #469742.
4441
4442 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
4445         method as well when get_vcall_slot () fails to match a code sequence.
4446
4447         * mini-arm.c: Fix the android build, which doesn't have
4448         __aeabi_read_tp.
4449
4450 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4451
4452         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
4453         the s390x build.
4454
4455 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
4456
4457         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
4458
4459 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4460
4461         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
4462         and put its id into jinfo->used_regs. This is only used on amd64,
4463         which is currently the only platform generating unwind info.
4464
4465         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
4466         the dwarf unwinder. This is required to correctly handle async exceptions
4467         like thread abort and stack overflows, which can happen while a method
4468         is in the middle of its prolog or epilog.
4469         
4470         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
4471         the unwind info belonging to an AOTed method.
4472
4473         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
4474         into cfg->unwind_ops.
4475         
4476         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
4477
4478         * mini.c (mini_init): Call mono_unwind_init ().
4479         (mini_cleanup): Call mono_unwind_cleanup ().
4480
4481         * unwind.c: Add functions for managing a set of unwind info entries, allowing
4482         unwind info to be shared between methods.
4483
4484         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
4485         saved in the LMF.
4486
4487         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
4488         get_throw_pending_exception () to avoid initialization races.
4489
4490         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
4491         mono_arch_exceptions_init () function.
4492
4493         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
4494
4495 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
4496
4497         * mini.c (mono_get_domain_intrinsic): New helper function.
4498         (mono_get_thread_intrinsic): Ditto.
4499
4500         * mini-arm.c mini-ia64.c: Use the new helper functions.
4501         
4502         * method-to-ir.c (mono_method_to_ir): Fix the comment for
4503         the last constrained_call change, since it is needed in the non-AOT
4504         case as well.
4505
4506         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
4507         
4508         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
4509         mono_get_lmf_addr () on arm eabi linux.
4510
4511 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
4512
4513         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
4514         code sequence which matches a non-virtual call.
4515
4516 2009-01-23  Mark Probst  <mark.probst@gmail.com>
4517
4518         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
4519         stack pointer (r1).
4520
4521 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
4522
4523         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
4524         runtime-invoke wrappers, since they are also shared based on signature.
4525
4526 2009-01-22  Mark Probst  <mark.probst@gmail.com>
4527
4528         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
4529         info from the (correct) context.
4530
4531 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
4534         
4535         * unwind.c (mono_unwind_frame): New function to unwind through a frame
4536         using dwarf unwinding info. Not yet used.
4537
4538         * mini.c (mini_init): When using xdebug, disable freeing of domains.
4539
4540 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4541
4542         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
4543         descriptors.
4544
4545         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
4546         special case and handle mono_arch_delegate_invoke_impl() returning
4547         function descriptors.
4548
4549         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
4550         trampolines return function descriptors, too.
4551
4552 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4553
4554         * method-to-ir.c (handle_alloc): Avoid generic instances in the
4555         out_of_line optimization.
4556
4557 2009-01-21  Martin Baulig  <martin@ximian.com>
4558
4559         * mini.h
4560         (MonoCompile): Added `disable_deadce_vars' to disable removing
4561         unused variables.
4562
4563         * mini.c
4564         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
4565         inside the debugger.
4566
4567         * liveness.c (mono_analyze_liveness): Don't remove any unused
4568         variables if `cfg->disable_deadce_vars' is set.
4569
4570 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4571
4572         * method-to-ir.c: Only apply exception constructor optimization if
4573         the the method actually belongs to an exception class.  Fixes
4574         #467456.
4575
4576 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4577
4578         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
4579         change inside a #ifdef __mono_ppc64__.
4580
4581         * aot-compiler.c (compile_method): Remove the previous limitation.
4582
4583         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
4584         on type variables in AOTed code.
4585         
4586         * aot-compiler.c (compile_method): Skip generic methods having type 
4587         constraints on their generic parameters.
4588
4589         * aot-compiler.c (compile_method): Check for methods which cannot be
4590         encoded inside RGCTX_FETCH patches as well.
4591
4592         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
4593         build.
4594
4595 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4596
4597         * method-to-ir.c: Force the vtable variable in shared generic code
4598         for the case that they might show up on a stack trace where they
4599         are needed.
4600
4601         * mini-exceptions.c: Save and use generic sharing info as well as
4602         IP in stack traces to resolve shared generic instantiations.
4603
4604 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
4605
4606         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
4607         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
4608
4609 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4610
4611         * method-to-ir.c: Do generic sharing for array constructors.
4612
4613 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
4614
4615         * mini-exceptions.c (mono_print_thread_dump): Add information
4616         about the thread state using wapi_current_thread_desc.
4617
4618 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         * basic-simd.cs: Tests for the new constructors. 
4621
4622 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4623
4624         * mini-ops.h: Added OP_EXPAND_*
4625
4626         * cpu-x86.md: Same.
4627
4628         * mini-x86.c (mono_arch_output_basic_block): Same.
4629         
4630         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
4631
4632 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4633
4634         * iltests.il.in: Add a test for #467385.
4635
4636 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
4639         thread been cleaned up is not the same currently in execution.
4640
4641         Fixes appdomain-unload crashes on windows, osx and linux variants
4642         without the __thread keyword.
4643
4644 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4645
4646         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
4647         (koush@koushikdutta.com). Implement this for android.
4648
4649         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
4650         begins with a digit.
4651
4652         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
4653         mono_marshal_get_write_barrier ().
4654
4655 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4656
4657         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
4658         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
4659         that pass them on a register pair.
4660
4661         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
4662         test was crashing due to that.
4663
4664 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
4665
4666         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
4667         trampoline code. Include ucontext.h only if available.
4668
4669 2009-01-15  Mark Probst  <mark.probst@gmail.com>
4670
4671         * mini.c: mono_domain_lookup_shared_generic() takes an open method
4672         and doesn't check whether it's sharable, like it was before
4673         removing the shared generics hash.  This brings IronPython
4674         performance back to what it was before that change.
4675
4676 2009-01-14  Mark Probst  <mark.probst@gmail.com>
4677
4678         * method-to-ir.c: Handle delegate invocation optimization earlier,
4679         otherwise it would be handled (much more slowly) by the
4680         final/sealed optimization.
4681
4682 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4683
4684         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
4685         domain is not set. Fixes #465864.
4686
4687 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4688
4689         * method-to-ir.c: Don't stop sharing of generic methods with catch
4690         clauses - we already handle those.
4691
4692 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4693
4694         * mini.c, mini.h: lookup_generic_method() is now
4695         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
4696         making the shared_generics_hash obsolete.
4697
4698 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4699
4700         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
4701         use the red zone.  Make room on the stack first and then use it,
4702         not the other way around.
4703
4704 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
4705
4706         * mini.c (mini_init): Call mono_xdebug_init ().
4707
4708         * aot-compiler.c (mono_xdebug_init): Make this non-static.
4709
4710 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
4711
4712         * TestDriver.cs: Add an --iter argument to run tests multiple times.
4713
4714         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
4715         trampolines.
4716
4717         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
4718         debug+unwind info for trampolines.
4719
4720         * mini.c (mono_create_unwind_op): New helper function.
4721
4722         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
4723
4724 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
4725
4726         * aot-compiler.c: Fix the build.
4727
4728 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4729
4730         * Makefile.am: Update dtrace-prelink.sh location.
4731
4732 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
4733
4734         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
4735         optimization. Fixes #464520.
4736
4737 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
4738
4739         * mini-amd64.c : Adding code to save/restore non-volatile registers
4740            on Winx64.
4741
4742         * exceptions-amd64.c : Adding code to save/restore non-volatile 
4743           registers on Winx64.
4744
4745         Contributed under MIT/X11 license.
4746
4747 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
4748
4749         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
4750         __GNUC_MINOR__ which can break when the major version changes.
4751
4752 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
4753
4754         * basic-simd.cs: Add tests for usage of the sizeof opcode.
4755
4756 2009-01-07  Geoff Norton  <gnorton@novell.com>
4757
4758         * helpers.c:  Allow mono -v -v -v to work on darwin.
4759
4760 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
4761
4762         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
4763           pattern. 
4764
4765         Contributed under MIT/X11 license.
4766
4767 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
4770         instead of directly accessing type->data.klass. Fixes #462016.
4771         (mono_allocate_stack_slots_full): Ditto.
4772
4773         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
4774         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
4775
4776         * aot-compiler.c (emit_plt): Fix ARM build.
4777
4778 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
4779
4780         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
4781         
4782         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
4783         change.
4784
4785         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
4786         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
4787         #463357.
4788
4789         * iltests.il.in: Add a regression test.
4790
4791 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4792
4793         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
4794
4795 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4796
4797         * basic-simd.cs: Add a regression test for #462457.
4798
4799 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4800
4801         * mini-ops.h: Add a definition of XPHI.
4802
4803         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
4804
4805         * ssa.c (op_phi_to_move): Handle XPHI.
4806
4807         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
4808
4809         Fixes #462457
4810
4811 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4812
4813         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
4814
4815 2008-12-31  Geoff Norton  <gnorton@novell.com>
4816
4817         * mini-ppc.c: The prolog size allocated can be too small for darwin
4818         ppc32 under certain circumstances.  Also fix a small logic bug.
4819
4820 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
4821
4822         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
4823         while loading AOT methods.
4824
4825         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
4826         since only the former is nulled out after a successful cast. This prevents
4827         crashes with rethrown exceptions when using --debug=casts.
4828
4829 2008-12-24  Mark Probst  <mark.probst@gmail.com>
4830
4831         * mini.h: New macro for checking whether a method is final,
4832         i.e. whether the method or its class is marked final.
4833
4834         * method-to-ir.c: Use the new macro for all final-checks
4835         consistently.  Fixes the crash in the System.ServiceModel tests.
4836
4837 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4838
4839         * mini-exceptions.c (get_exception_catch_class): Corrected another
4840         overly strict assertion.
4841
4842 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4843
4844         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
4845         Clobbering it is not allowed because the caller might use it as
4846         the vtable register in the interface call.
4847
4848 2008-12-19  Mark Probst  <mark.probst@gmail.com>
4849
4850         * mini-exceptions.c (get_exception_catch_class): Corrected an
4851         overly strict assertion.
4852
4853 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
4854         
4855         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
4856
4857         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
4858
4859         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
4860
4861         * cpu-mips.md: correct lengths for certain long_ opcodes.
4862
4863         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
4864
4865         * 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().
4866         
4867 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4868
4869         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
4870         
4871 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4872         
4873         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
4874         
4875 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
4876
4877         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
4878         next basic block.
4879         
4880 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
4881
4882         * 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
4883
4884         * 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)
4885         
4886 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
4887         
4888         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
4889         
4890 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
4891
4892         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
4893         gshared code. Fixes #458947.
4894
4895         * generics.cs: Add a test.
4896
4897 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4898         
4899         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4900         
4901         * mini-mips.c: first pass n32 code generation.
4902
4903         * mini-mips.h: datatypes and defines for n32 support.
4904
4905         * exceptions-mips.c: first pass n32 code generation.
4906         
4907         * tramp-mips.c: first pass n32 code generation.
4908         
4909         * cpu-mips.md: add long_ opcodes.
4910         
4911 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4912
4913         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4914
4915         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4916         
4917         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4918         
4919         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4920
4921         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4922
4923         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4924
4925         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4926
4927         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4928
4929         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4930
4931 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4932
4933         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4934
4935 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4936
4937         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4938
4939 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4940
4941         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4942         descriptors for helper functions directly in front of the code.
4943
4944 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4945
4946         * method-to-ir.c: Removed an unnecessary assertion.
4947
4948 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4949
4950         * method-to-ir.c: Merge SGEN changes from the old JIT.
4951
4952 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4953
4954         * driver.c (compile_all_methods_thread_main): Handle failure of
4955         mono_get_method ().
4956
4957 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4958
4959         * mini-ppc.c: Merged with mini-ppc64.c.
4960
4961         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4962
4963         * Makefile.am: Use the same sources for PPC and PPC64.
4964
4965         * mini-ppc64.c: Removed.
4966
4967 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4968
4969         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4970         code to mono_bb_is_fall_through.
4971         
4972         * branch-opts.c (mono_remove_critical_edges): Same.
4973
4974 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4975
4976         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4977         expect that an OP_BR_REG will be there.
4978
4979 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4980
4981         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4982         for the many branch ops. The original check miss OP_BR_REG.
4983
4984         Fixes #457574.
4985         
4986 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4987
4988         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4989
4990 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4991
4992         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4993         while holding the aot lock.
4994
4995 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4996
4997         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4998         
4999 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5000
5001         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5002           to release all runtime callable wrappers held by the runtime.
5003
5004         Contributed under MIT/X11 license.
5005
5006 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5007
5008         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5009           for Winx64.
5010
5011         Contributed under MIT/X11 license.
5012
5013 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5014
5015         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5016         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5017
5018 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5019
5020         * cpu-mips.md: fix ckfinite length
5021
5022         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
5023         (mono_arch_lowering_pass): cleanup, rearrange for clarity
5024         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
5025         
5026 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
5027
5028         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
5029         
5030 2008-12-08  Geoff Norton  <gnorton@novell.com>
5031
5032         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
5033         size by 8 bytes as well.
5034
5035 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5036
5037         * basic-simd.cs: Fix method names for Vector16b.
5038         
5039 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5040
5041         * basic-simd.cs: Fix method names for Vector16sb.
5042
5043 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5044
5045         * basic-simd.cs: Fix method names for Vector8us.
5046         
5047 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5048
5049         * basic-simd.cs: Fix method names for Vector8s.
5050         
5051 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5052
5053         * basic-simd.cs: Fix method names for Vector4ui.
5054
5055 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5056
5057         * basic-simd.cs: Fix method names for Vector2l.
5058
5059 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5060
5061         * basic-simd.cs: Fix method names for Vector2d.
5062
5063 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5064
5065         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
5066         that are extension methods.
5067
5068 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5069
5070         * basic-simd.cs: Fix method names for Vector4f.
5071
5072 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
5073
5074         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
5075         as such. Fixes #456669.
5076
5077 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5078
5079         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
5080         
5081 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5082
5083         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
5084         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
5085         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
5086         (mips_adjust_stackframe): handle FP spills
5087                 
5088         * mini-ops.h: add mips_mtc1_s2
5089         
5090         * cpu-mips.md: add mips_mtc1_s2
5091         
5092 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
5093
5094         * unwind.c: New file, move the unwind info encoding functions here from
5095         aot-compiler.c, so they could be used at runtime too.
5096
5097 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5098
5099         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
5100         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
5101         
5102 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5103
5104         * mini-mips.c: cleanup warnings
5105         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5106         (mips_adjust_stackframe): handle case of taking the address of stack locals
5107         
5108 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5109
5110         * aot-compiler.c: Implement a few functions missing from the asm writer.
5111         (emit_method_code): Only write symbols for methods when using the bin
5112         writer, since the assembler can't deal with the characters in our method
5113         names.
5114
5115         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
5116
5117         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
5118         call.
5119
5120         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
5121         a bit to also restore %rax.
5122
5123 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5124
5125         * mini-ppc.c: Some simple merges from mini-ppc64.c.
5126
5127 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5128
5129         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
5130         arguments.
5131
5132 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5133
5134         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
5135
5136         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
5137         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
5138
5139         * exceptions-ppc64.c: Removed.
5140
5141         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
5142
5143 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5144
5145         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
5146         tramp-ppc64.c.
5147
5148         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
5149
5150         * tramp-ppc64.c: Removed.
5151
5152 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5153
5154         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
5155         the TYPESPEC table.
5156
5157 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5158
5159         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
5160
5161         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
5162         mini-ppc.h instead of mini-ppc64.h.
5163
5164         * mini-ppc64.h: Removed.
5165
5166 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5167
5168         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
5169         
5170         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
5171         
5172 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5173
5174         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
5175         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
5176         code easier.
5177
5178 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5179
5180         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
5181
5182 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5183
5184         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
5185
5186 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5187
5188         * basic-simd.cs: Tests for operator == and != on Vector4f.
5189
5190 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5191
5192         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
5193
5194         * simd-intrinsics.c: Kill useless enum.
5195
5196 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5197
5198         * cpu-mips.md: add long_conv_to_ovf_i4_2
5199         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
5200
5201 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5202
5203         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
5204         
5205         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
5206
5207 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5208
5209         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
5210         
5211 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5212
5213         * basic-simd.cs: Add tests for new methods.
5214
5215 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5216
5217         * simd-intrinsics.c: Add support for operator == and !=
5218         on Vector4(u)i.
5219
5220         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
5221
5222 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5223
5224         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
5225
5226 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
5227
5228         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
5229
5230         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
5231         MONO_PATCH_INFO_ICALL_ADDR.
5232
5233         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
5234
5235         * aot-compiler.c: Resurrect full-aot support.
5236
5237 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5238
5239         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
5240         
5241 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5242
5243         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
5244         
5245 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
5246
5247         * basic-simd.cs: Fix tests to work under ppc.
5248         Remove tests for methods that will be removed.
5249
5250 2008-12-03  Mark Probst  <mark.probst@gmail.com>
5251
5252         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
5253         generic type (via a typedef or typeref) correctly.
5254
5255 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
5256
5257         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
5258         diagnose an assertion failure.
5259
5260 2008-12-02  Mark Probst  <mark.probst@gmail.com>
5261
5262         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
5263         Fix trampoline size.
5264
5265         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
5266         conversion opcodes are implemented natively instead via emulation.
5267
5268 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5269
5270         * cpu-mips.md: remove mips_xori
5271
5272         * mini-ops.h:  remove mips_xori
5273
5274         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
5275
5276         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
5277         
5278         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
5279         
5280 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5281
5282         * cpu-mips.md: fix instruction lengths.
5283
5284         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
5285
5286         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
5287
5288         * mini-ops.h: fix slti / sltiu op profiles.
5289         
5290 2008-12-02  Martin Baulig  <martin@ximian.com>
5291
5292         * method-to-ir.c (mono_method_to_ir): Disable debugging
5293         information for the init locals block to make the debugger stop
5294         after all locals have been initalized.
5295
5296 2008-12-02  Martin Baulig  <martin@ximian.com>
5297
5298         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
5299         running inside the debugger.
5300
5301 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
5302
5303         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
5304         is enabled.
5305
5306         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
5307         alu->alu imm optimization which only shows if deadce is disabled.
5308
5309         * aot-compiler.c: Rename the function names for the binary and asm writers
5310         so they can coexist in the same process. Rework the xdebug code to use the
5311         asm writer. This avoids the need to call into the runtime to dump the
5312         debugging info. Add more debugging info for types.
5313
5314         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
5315
5316         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
5317         cpu description tables, they can't occur in cpu-<ARCH>.md.
5318
5319         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
5320         the stack in CEE_LDFLDA. Fixes #450542.
5321
5322         * generics.cs: Add a new test.
5323
5324 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5325
5326         * mini-ops.h: updated MIPS opcodes
5327         * mini-mips.c: decompose long opts
5328         * mini-mips.h: decompose long opts
5329         
5330 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
5331
5332         * cpu-mips.md: fix length on int_rem_un
5333         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
5334         
5335 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
5336
5337         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
5338
5339         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
5340
5341 2008-11-29  Martin Baulig  <martin@ximian.com>
5342
5343         * mini-exceptions.c (mono_handle_native_sigsegv): Check
5344         mono_debug_using_mono_debugger() in addition to the
5345         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
5346
5347 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5348
5349         * mini-ops.h: updated more MIPS opcodes
5350         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
5351         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
5352         
5353 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5354
5355         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
5356
5357 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5358
5359         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
5360         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
5361         * mini-ops.h: correct selected mips opcode entries
5362         
5363 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5364
5365         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
5366         make them work.
5367
5368 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5369
5370         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
5371
5372 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5373
5374         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
5375         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
5376         * mini-mips.h: disable IMT
5377         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
5378         
5379 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5380
5381         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5382
5383 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5384
5385         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5386
5387 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5388
5389         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5390         consistency.
5391
5392 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5393
5394         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5395         for Set/GetVector aligned versions.
5396
5397 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5398
5399         * basic-simd.cs: Add tests for Get/SetVector.
5400
5401 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5402
5403         * mini.c: Removed g_slist_append_mempool().  Now in
5404         metadata/mempool.c.
5405
5406 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5407
5408         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5409         size properly and make the bounds check optional.
5410
5411         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5412         for SetVector and IsAligned.
5413
5414 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
5415
5416         * mini.c: Remove unused mono_normalize_opcodes () function.
5417
5418 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5419
5420         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
5421         using the new atomic add ops now.
5422
5423         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
5424         add.
5425
5426 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5427
5428         * mini-ppc64.c: Several fixes.
5429
5430 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5431
5432         * cpu-mips.md: added jump_table
5433         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
5434
5435 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5436
5437         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
5438
5439 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5440
5441         * mini-ops.h: corrected a handful of MIPS opcodes.
5442
5443 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5444
5445         * aot-compiler.c: MIPS to use ELF writer
5446
5447 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5448
5449         * mini-codegen.c: remove MIPS specific assert.
5450
5451 2008-11-25  Mark Probst  <mark.probst@gmail.com>
5452
5453         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
5454         fixes.  PPC64 now passes most of the runtime regressions.
5455
5456 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
5459         volatile intervals a bit.
5460
5461 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5462
5463         * basic-long.cs: New test case.
5464
5465 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5466
5467         * mini.c (mini_method_compile): Disable globalra for large methods for 
5468         now.
5469
5470         * regalloc2.c (order_moves): Add fp support.
5471
5472         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
5473         source bblock ends with an OP_BR_REG.
5474
5475         * ratests.cs: Add a new test.
5476
5477 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5478
5479         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
5480         sharing.  PPC64 now passes generics.exe.
5481
5482 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5483
5484         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
5485
5486 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5487
5488         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
5489         memory when mono_jit_info_table_find () can't find the method in the
5490         LMF case.
5491
5492         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
5493         AOTed code too.
5494         
5495         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
5496         writer too.
5497
5498 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5499
5500         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
5501         Several fixes.  PPC64 now runs exceptions.exe and
5502         devirtualization.exe.
5503
5504 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5505
5506         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
5507         arrays.exe and basic-math.exe.
5508
5509 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5510
5511         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
5512         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
5513
5514 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5515
5516         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
5517
5518 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5519
5520         * method-to-ir.c: Move bounds checking macros to ir-emit.h
5521
5522         * ir-emit.h: Move macros from method-to-ir.c to here.
5523
5524 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5525
5526         * mini-ops.h: Correct the long simd ops to use LREG.
5527
5528 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
5531         
5532         * mini-ops.h: Correct the dreg type of a few long opcodes.
5533
5534         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
5535         Add netbsd support.
5536
5537 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
5538
5539         * mini-ppc.c: remove negative stack references in epilog
5540         for platforms that don't support the red zone.
5541
5542 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5543
5544         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
5545         point regs.  Now PPC64 passes basic-calls.exe.
5546
5547 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5548
5549         * basic-simd.cs: Add tests for accessors of Vector2l.
5550
5551 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5552
5553         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
5554
5555         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
5556         
5557         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
5558
5559 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5560
5561         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
5562         PPC64 passes basic-long.exe.
5563
5564 2008-11-20  Mark Probst  <mark.probst@gmail.com>
5565
5566         * decompose.c: Decompose carry and overflow add on PPC64 like on
5567         other 64 bit archs.  Don't decompose sub at all on PPC64.
5568
5569         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
5570         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
5571         basic-long.exe.
5572
5573 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * basic-simd.cs: Add tests for accessors of Vector2d.
5576
5577 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5578
5579         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
5580
5581         * cpu-x86.md: Same.
5582
5583         * mini-x86.c (mono_arch_output_basic_block): Same.
5584         
5585         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
5586
5587 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5588
5589         * basic-simd.cs: Add tests for accessors of Vector4f.
5590
5591 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5592
5593         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
5594
5595         * cpu-x86.md: Same.
5596
5597         * mini-x86.c (mono_arch_output_basic_block): Same.
5598         
5599         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
5600
5601 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5602
5603         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
5604
5605 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5606
5607         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
5608
5609         * cpu-x86.md: Same.
5610
5611         * mini-x86.c (mono_arch_output_basic_block): Same.
5612         
5613         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
5614
5615 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5616
5617         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
5618
5619 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5620
5621         * simd-intrinsics.c: Enable setters for Vector16sb.
5622
5623 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5624
5625         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
5626
5627         * cpu-x86.md: Same.
5628
5629         * mini-x86.c (mono_arch_output_basic_block): Same.
5630         
5631         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
5632
5633 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
5634
5635         * simd-intrinsics.c: Implement setter for Vector8us.
5636
5637 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5638
5639         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
5640         for dead variables.
5641
5642 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5643
5644         * mini-ppc.c: remove references to the red zone in the prolog
5645         (for systems that don't support it).
5646
5647 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5648
5649         * cpu-ppc64.md: Fixed a few instruction lengths.
5650
5651         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
5652         now.
5653
5654 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5655
5656         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
5657         basic.exe now.
5658
5659 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5660
5661         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
5662
5663 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
5664
5665         * mini-ops.h: Added OP_INSERT_I2.
5666
5667         * cpu-x86.md: Same.
5668
5669         * mini-x86.c (mono_arch_output_basic_block): Same.
5670         
5671         * simd-intrinsics.c: Implement setter for Vector8s.
5672
5673         * simd-methods.h: Add the names of get setters of Vector8s.
5674
5675 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5676
5677         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
5678         
5679         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
5680         parameters.
5681
5682         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5683
5684 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5685
5686         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
5687         for PPC64.  An empty program runs now.
5688
5689 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5692
5693         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
5694         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
5695         info for JITted code is emitted into a shared library, loadable into gdb.
5696
5697 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5698
5699         * Makefile.am: Changes to build PPC64.
5700
5701         * mini-arch.h: Include mini-ppc64.h on PPC64.
5702
5703 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5704
5705         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
5706         in PPC code up to r119147.
5707
5708 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5709
5710         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5711         cpu-ppc64.md: Changes for PPC64.
5712
5713         Based on code submitted by andreas.faerber@web.de at
5714         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
5715         X11/MIT license.
5716
5717 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5718
5719         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5720         cpu-ppc64.md: Copied from the corresponding PPC files from
5721         r118846.
5722
5723 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
5724
5725         * mini-ops.h: Added OP_ROUND.
5726
5727         * cpu-x86.md: Added round.
5728
5729         * mini-x86.c: Added support for intrinsicing Math.Round (double).
5730
5731         * basic-math.cs: Added test_0_round to test rounding.
5732
5733         Contributed under MIT/X11 license.
5734
5735 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5736
5737         * aot-compiler.c : Fix the Winx64 build.
5738
5739         Contributed under MIT/X11 license.
5740
5741 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5742
5743         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
5744         in OP_EXTRACT_R8 to avoid possible stack corruption.
5745
5746 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5747
5748         * mini-ops.h: Added OP_EXTRACT_R8/I8.
5749
5750         * cpu-x86.md: Added extract_r8.
5751
5752         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
5753         
5754         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
5755         a couple of OP_EXTRACT_I4.
5756
5757         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
5758
5759         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
5760
5761 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5762
5763         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
5764         and not 4.1. 
5765
5766 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5767
5768         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
5769         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
5770
5771         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
5772         are not needed any more.
5773
5774         * mini.h: Remove the unused INS_LIST macros.
5775
5776         * mini.c (mini_method_compile): Remove a disable globalra case which is no
5777         longer needed.
5778
5779         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
5780         ir-emit.h.
5781
5782         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
5783         mono_alloc_ireg () instead.
5784
5785         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
5786         macros.
5787
5788         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
5789         on amd64.
5790
5791         * aot-runtime.c (load_aot_module): Disable AOT when running under
5792         CAS.
5793
5794         * mini-amd64.h: Change the monitor fastpath defines to check for
5795         !PLATFORM_WIN32 so they work on *bsd too.
5796
5797         * mini.h mini.c mini-hhpa.c: Remove more unused code.
5798
5799         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
5800
5801         * mini.h (MonoCompile): Remove new_ir flag.
5802
5803         * regalloc.h regalloc.c: Remove unused code.
5804
5805         * cpu-*.md: Remove more unused opcodes.
5806
5807         * simple-cee-ops.h simple-mini-ops.h: Removed.
5808
5809         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
5810         
5811 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5812
5813         * aliasing.h: Removed.
5814
5815         * *.c: Remove references to aliasing.h and inssel.h.
5816
5817         * mini.c: Remove additional unused functions.
5818
5819         * mini-ops.h cpu-*.md: Remove unused opcodes.
5820
5821 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5822
5823         Remove the old JIT code.
5824
5825         * inssel*.brg: Removed.
5826
5827         * ssa.c abcremoval.c aliasing.c: Removed.
5828
5829         * ssa2.c: Renamed to ssa.c.
5830
5831         * abcremoval2.c: Renamed to abcremoval.c.
5832
5833         * *.c: Removed all !cfg->new_ir code.
5834
5835         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
5836         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
5837
5838         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
5839         
5840 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5841
5842         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
5843         to simplify the code and cut back on the number of global symbols in the AOT
5844         file.
5845         
5846         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
5847
5848 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
5849
5850         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
5851         with the got/got_info tables.
5852
5853         * mini.h: Bump AOT file format version.
5854         
5855         * unwind.h: New file, contains definitions for stack unwinding.
5856
5857         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
5858         to cfg->unwind_ops.
5859         
5860         * aot-compiler.c: Generalize the emitting of unwind information to use the
5861         information in cfg->unwind_ops.
5862
5863         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
5864
5865         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
5866         AOT method frames. Enable writing symbols for methods by default.
5867
5868 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
5869
5870         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
5871         and make it work with vectors of element sizes 1, 2 and 4.
5872
5873         * simd-intrinsics.c: Enable getter for all vectors with element size
5874         1, 2 or 4.
5875
5876         * simd-methods.h: Add the names of other getters.
5877
5878         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
5879
5880         * cpu-x86.md: Same.
5881
5882         * mini-x86.c: Same.
5883
5884 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
5885
5886         * mini-ppc.h: portability fix.
5887
5888 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5889
5890         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
5891         buggy and will overwrite it.
5892
5893 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5894
5895         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
5896         Use it to emit local symbols for all methods so AOTed methods show up with
5897         their full name in gdb/valgrind output.
5898
5899 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5900
5901         * mini-ppc.c: portability fixes.
5902
5903 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5904
5905         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
5906         entries out of the if (!generic_shared...) code so it is always done.
5907         (mono_class_init_trampoline): Do the patching when running under valgrind
5908         too, newer versions of valgrind have no problems with it.
5909
5910 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5911
5912         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
5913         further sections.
5914
5915 2008-11-13  Mark Probst  <mark.probst@gmail.com>
5916
5917         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
5918         filters.
5919
5920 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5921
5922         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5923
5924 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5925
5926         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5927
5928         * cpu-x86.md: Same.
5929
5930         * mini-x86.c: Same.
5931
5932         * simd-intrinsics.c: Same.
5933
5934 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5935
5936         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5937
5938 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5939
5940         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5941         to work with more Vector types.
5942
5943 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5944
5945         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5946         store the elemens directly instead of using and intermediate.
5947
5948 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5949
5950         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5951
5952         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5953         to preserve %eax for aot plt trampolines.
5954
5955         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5956         (encode_method_ref): Flag synchronized methods so they won't go through
5957         the AOT trampoline.
5958
5959         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5960         wrappers.
5961
5962         * cpu-ia64.md (jmp): Increase max length.
5963
5964 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5965
5966         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5967         open generic classes.
5968
5969         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5970
5971         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5972         box+brtrue optimization since it causes test failures on x86.
5973
5974 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5975
5976         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5977
5978         * cpu-x86.md: Same.
5979
5980         * mini-x86.c: Same.
5981
5982         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5983         for simd ctor values. 
5984
5985         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5986         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5987
5988 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5989
5990         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5991         LogicalRightShift.
5992
5993         * simd-instrincs.c: Same.
5994
5995         * basic-simd.cs: Same.
5996
5997 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5998
5999         * ratests.cs: Add more tests.
6000
6001         * regalloc2.c (add_spill_code): Handle more corner cases.
6002
6003 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6004
6005         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6006         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6007         both the source an destination of an instruction.
6008
6009 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6010
6011         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6012         wapihandles.c: more portability changes.
6013
6014 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6015
6016         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6017         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6018         safe to execute in a signal handler and the kernel provides better
6019         the info in /proc/self/smaps. Avoid the assert on sigaction during
6020         cleanup.
6021
6022 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6023
6024         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
6025         do the bblock linking hack if it is actually needed.
6026
6027         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
6028         up linking.
6029
6030         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
6031         crash problem is fixed.
6032
6033         * branch-opts.c (mono_remove_critical_edges): Link up newly added
6034         bblocks.
6035
6036         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
6037         for catch clauses.
6038         (mini_method_compile): Set the starting value of next_vreg to 
6039         MAX_IREGS + MAX_FREGS when using globalra.
6040
6041         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
6042         filter clauses with BB_EXCEPTION_HANDLER.
6043
6044         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
6045
6046 2008-11-10  Mark Probst  <mark.probst@gmail.com>
6047
6048         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
6049         space for stdcall.  Fixes regressions on Win32.
6050
6051 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
6052
6053         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
6054         bblocks.
6055         (linear_scan): Remove an assert which doesn't seem to be needed.
6056
6057         * local-propagation.c (mono_local_deadce): Avoid a call to
6058         MONO_DELETE_INS which would screw up the instruction linking.
6059
6060         * mini.c (mono_decompose_op_imm): Make this work with globalra.
6061
6062         * regalloc2.c: Upgrade to work the current JIT code.
6063
6064 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
6065
6066         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
6067         case.
6068
6069         * aot-runtime.c: Remove some dead code.
6070
6071         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
6072         consistency.
6073         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
6074
6075         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
6076         trampolines using sscanf since atoi doesn't work on large unsigned values.
6077
6078         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
6079         Initialize code_size.
6080
6081 2008-11-08  Mark Probst  <mark.probst@gmail.com>
6082
6083         * method-to-ir.c (mini_emit_inst_for_method): Make
6084         Interlocked.CompareExchange work for Int arguments on 32 bit
6085         archs, as well.
6086
6087 2008-11-07  Mark Probst  <mark.probst@gmail.com>
6088
6089         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
6090
6091 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
6092
6093         * main.c Fix MSVC build.
6094
6095         Contributed under MIT/X11 license.
6096
6097 2008-11-06  Mark Probst  <mark.probst@gmail.com>
6098
6099         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
6100         alignment larger than 8 bytes are aligned correctly, too.
6101
6102         * mini.c: Honor the min_align field of MonoClass when laying out
6103         the stack.
6104
6105 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
6108
6109         * aot-compiler.c (emit_plt): Fix a warning.
6110         
6111         * aot-compiler.c: Implement ARM support in the binary writer.
6112
6113 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6114
6115         * basic-simd.cs: Add test for getter with byref arg.
6116         Fix the naming of a few tests.
6117         Add missing checks to a test.
6118
6119 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6120
6121         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
6122
6123         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
6124         most of the full-aot support for monitor enter/exit trampolines.
6125
6126         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
6127         enter/exit trampoline creation functions.
6128
6129         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
6130         make dist.
6131
6132 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
6133
6134         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
6135         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
6136         implement the needed functionality without adding crap to the runtime.
6137
6138 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
6141         non-x86 builds.
6142
6143         * mini.c (mono_build_date): New global version holding the build date in
6144         string format.
6145         
6146         * Makefile.am (buildver.c): Generate a file containing the build date.
6147
6148         * main.c: Set the build date from the generated file.
6149
6150         * mini.c (mono_get_runtime_build_info): New helper function returning build
6151         information in a string format.
6152         
6153         * driver.c (mono_main): Print the build date in --version.
6154
6155         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
6156         file when the bind-to-runtime-version option is used.
6157
6158 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6159
6160         * simd-intrinsics.c: Fix bug when using getters and byref args. 
6161
6162 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6163
6164         * simd-methods.h: Rename prefetch methods.
6165
6166         * simd-intrinsics.c: Same.      
6167
6168 2008-11-05  Mark Probst  <mark.probst@gmail.com>
6169
6170         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
6171         sizes.
6172
6173 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6174
6175         * aot-compiler.c: Use the bundled elf header files instead of depending on
6176         the system one.
6177         
6178         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
6179         mempool.
6180
6181         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
6182         on every call.
6183
6184 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
6185
6186         * cpu-x86.md: Add store nta ops.
6187
6188         * mini-ops.h: Same.
6189
6190         * mini-x86.c: Same.
6191
6192         * mini.h: Add an enum for simd prefetch modes.
6193
6194         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
6195         of store. Use the changed code to support store nta.
6196
6197         * simd-intrinsics.c: Add prefetch ops for all vector types.
6198
6199 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6200
6201         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
6202         threads.
6203         
6204         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
6205         names.
6206
6207         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
6208         trampolines.
6209
6210 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6211
6212         * mini-x86.c: Fixed commit.
6213
6214 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6215
6216         * aot-compiler.c (emit_plt): Align the plt section only on x86.
6217
6218 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6219
6220         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
6221         and MONITOR_EXIT, for the ASM fastpaths.
6222
6223         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
6224         available.
6225
6226         * mini.c, patch-info.h: Signature and patch infos for
6227         Monitor.Enter/Exit trampolines.
6228
6229         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
6230
6231         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
6232         Monitor.Enter/Exit ASM fastpath for Linux.
6233
6234 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6235
6236         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
6237
6238         * objects.cs: Add a new test.
6239         
6240         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
6241
6242         * aot-runtime.c (load_method): Run class initialization in the PLT case even
6243         if MONO_LOG_LEVEL is set.
6244
6245         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
6246
6247         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
6248
6249         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
6250         
6251         * aot-compiler.c: Change the relocation code to use virtual addresses instead
6252         of file offsets. Align the sections belonging to the data segment to 
6253         PAGESIZE.
6254
6255 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6256
6257         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
6258         elf.h. Port it to amd64.
6259
6260 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6261
6262         * driver.c: Enable SIMD by default.
6263
6264 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6265
6266         * cpu-x86.md: Add prefetch op.
6267
6268         * mini-ops.h: Same.
6269
6270         * mini-x86.c: Same.
6271
6272         * mini.h: Add an enum for simd prefetch modes.
6273
6274         * simd-methods.h: Add prefetch function names.
6275
6276         * simd-intrinsics.c: Add prefetch ops for all vector types.
6277
6278 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6279
6280         * aot-compiler.c (emit_bytes): Speed this up a little.
6281
6282 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * aot-compiler.c: Add JIT time etc. statistics.
6285         
6286         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
6287
6288         * mini.h (MonoCompile): Add 'got_offset' field.
6289
6290         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
6291         method_got_offsets array.
6292
6293         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
6294         wrappers.
6295
6296         * aot-compiler.c (compile_method): Add generic method instances referenced
6297         by the method to the list of methods to be compiled, this is required so if
6298         A<T> references B<T>, and another assembly references A<int>, then it will
6299         also get a copy of B<int>.
6300
6301         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
6302         when checking for monitor enter/exit.
6303
6304 2008-10-30  Mark Probst  <mark.probst@gmail.com>
6305
6306         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
6307         for Monitor.Enter and Monitor.Exit if enabled.
6308
6309         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
6310         Solaris.
6311
6312 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
6313
6314         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
6315         of an OP_MOVE. Fixes #440046.
6316
6317         * basic-long.cs: Add a new test.
6318
6319 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6320
6321         * mini.h: Add synchronization note for the managed counter-part.
6322
6323         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
6324         returns the simd caps of the current cpu.
6325
6326 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6327
6328         * basic-simd.cs: Remove Console.WriteLine.
6329
6330 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6331
6332         * basic-simd.cs: New tests for Vector2ul.
6333
6334 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6335
6336         * simd-intrinsics.c: Add new vector type Vector2ul.
6337
6338 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * basic-simd.cs: New tests for Vector2l.
6341
6342 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6343
6344         * cpu-x86.md: Add long version of most packed int ops.
6345
6346         * mini-ops.h: Same.
6347
6348         * mini-x86.h: Same.
6349
6350         * simd-intrinsics.c: Add new vector type Vector2l.
6351
6352 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6353
6354         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
6355
6356         * simd-methods.h: Remove SN_op_BitwiseXor.
6357
6358 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6359
6360         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
6361         alignment.
6362
6363 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6364
6365         * basic-simd.cs: Test for Vector2d.
6366
6367         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
6368         value.
6369
6370 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6371
6372         * cpu-x86.md: Add double version of all packed float ops.
6373
6374         * mini-ops.h: Same.
6375
6376         * mini-x86.h: Same.
6377
6378         * simd-intrinsics.c: Add new vector type Vector2d.
6379
6380         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6381
6382         * simd-methods.h: Add Duplicate.
6383
6384 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6385
6386         * basic-simd.cs: Test for packing with signed saturation.
6387
6388 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6389
6390         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6391         found in the TYPESPEC table.
6392
6393 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6394
6395         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6396         too.
6397
6398         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6399
6400         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6401         instead of the RVA, since the RVA can be changed by tools like the cil 
6402         stripper.
6403
6404         * method-to-ir.c (mono_method_to_ir2): Ditto.
6405
6406         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6407         (deserialize_variable): Ditto.
6408
6409 2008-10-25  Martin Baulig  <martin@ximian.com>
6410
6411         * debug-mini.c (write_variable): Use
6412         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6413
6414 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6415
6416         * cpu-x86.md: Add unsigned variants of packd and packw.
6417
6418         * mini-ops.h: Same.
6419
6420         * mini-x86.h: Emit the right instruction for packd and packw.
6421         Add unsigned variants of packd and packw.
6422
6423         * simd-intrinsics.c: Packd and packw were used in place of their
6424         unsigned variants. Change that.
6425         Add intrinsics for (Signed)PackWithSignedSaturation.
6426
6427         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
6428
6429 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6430
6431         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
6432
6433 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6434
6435         * mini-ops.h: Remove dword packed add/sub with saturation ops.
6436
6437         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
6438
6439         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
6440         sse instructions.
6441
6442         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
6443
6444 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6445
6446         * method-to-ir.c, mini.c: Special casing for the synchronized
6447         wrapper for the ldtoken+GetTypeFromHandle case.
6448
6449 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6450
6451         * mini.c (mono_replace_ins): Move this to branch-opts.c.
6452
6453         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
6454         created/split bblocks.
6455
6456 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6457
6458         * mini-ops.h: Add packed signed mul high.
6459         
6460         * cpu-x86.md: Same.
6461
6462         * mini-x86.c (mono_arch_output_basic_block): Same.
6463
6464         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
6465
6466         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
6467
6468 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6469
6470         * basic-simd.cs: Tests for Vector16sb.
6471
6472 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6473
6474         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
6475
6476 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6477
6478         * mini-ops.h: Add packed signed min, max and compare greater.
6479         
6480         * cpu-x86.md: Same.
6481
6482         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
6483         saturation.
6484
6485         * simd-methods.h: Add CompareGreaterThan.
6486
6487         * simd-methods.h: Remove CompareEquals.
6488
6489         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
6490
6491         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
6492
6493         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
6494         CompareEqual.
6495
6496 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6497
6498         * basic-simd.cs: Fix tests due to change in the API.
6499
6500 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
6503
6504 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6505
6506         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
6507
6508         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
6509         inst_offset as this has invalid values for LDADDR.
6510
6511 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6512
6513         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6514
6515         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
6516
6517 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6518
6519         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
6520         for accessing field->data.
6521
6522 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6523
6524         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6525
6526 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6527
6528         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
6529
6530         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
6531
6532 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6533
6534         * dominators.c (mono_compute_natural_loops): Allocate GList enties
6535         from the cfg mempool.
6536
6537 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6538
6539         * basic-simd.cs: Tests for new methods in Vector8us.
6540
6541 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6542
6543         * mini-ops.h: Add multiply and store high.
6544         
6545         * cpu-x86.md: Same.
6546
6547         * mini-x86.c (mono_arch_output_basic_block): Same.
6548
6549         * simd-methods.h: Same.
6550
6551         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
6552         and CompareEqual.
6553
6554 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6555
6556         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
6557         mono_class_setup_vtable ().
6558
6559         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
6560         mono_class_get_vtable_entry () for accessing klass->vtable.
6561
6562         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
6563
6564         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
6565         found.
6566
6567         * method-to-ir.c (mono_save_token_info): Don't save references made from
6568         wrappers.
6569
6570         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
6571         of generic instances.
6572
6573         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
6574
6575 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6576
6577         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
6578         OP_JMP depends on the method signature.  Calculate it properly.
6579
6580 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6581         
6582         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
6583         called directly.
6584
6585         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
6586         instances.
6587         (emit_extra_methods): Add another table mapping method indexes to 
6588         offsets in the extra_method_info table.
6589
6590         * mini.h: Bump AOT file format version.
6591         
6592         * aot-runtime.c: Merge most of the code from mono_aot_get_method
6593         and mono_aot_get_method_from_token () into one function.
6594
6595 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6596
6597         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
6598         separate counter.
6599
6600 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
6603         methods.
6604
6605         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
6606         disable_aot.
6607
6608         * mini.c (mono_patch_info_equal): Compare the generic context as well.
6609
6610         * mini.h: Bump aot file format version.
6611
6612         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
6613         AOT file can contain native code for methods which are not in the METHOD
6614         table. Generate code for non-sharable generic instances of generic methods
6615         found in the METHODSPEC table.
6616         
6617         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
6618         encoding generic type handles.
6619
6620         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
6621         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
6622
6623         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
6624         macros + MONO_ADD_INS.
6625
6626         * mini.c (mono_jump_info_token_new2): New function which takes a generic
6627         context as well.
6628
6629         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
6630
6631         * mini.h: Bump aot file format version.
6632
6633         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
6634
6635 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6636
6637         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
6638         platforms, with definable stack alignment value.  Set to 16 now
6639         for all platforms.
6640
6641         * mini.c, mini.h, driver.c: Command line option for disabling
6642         stack alignment.
6643
6644 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6645
6646         * basic-simd.cs: Tests for new methods in Vector4ui.
6647
6648 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6649
6650         * mini-ops.h: Add packed int shuffle.
6651         
6652         * cpu-x86.md: Same.
6653
6654         * mini-x86.c (mono_arch_output_basic_block): Same.
6655
6656         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
6657         extract mask, max, min, shuffle.
6658
6659         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
6660
6661 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6662
6663         * basic-simd.cs: Tests for new methods in Vector8us.
6664
6665 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6666
6667         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
6668         RuntimeTypeHandle, not a TypedReference.
6669
6670 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
6671
6672         * simd-intrinsics.c: remove relocations.
6673
6674 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
6675
6676         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
6677         optimizations from the x86 backend.
6678
6679 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
6680
6681         * simd-methods.h, simd-intrinsics.c: debloat method names and
6682         prepare for no relocations.
6683
6684 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6685
6686         * mini-ops.h: Add packed min/equal and sum of absolute differences.
6687         
6688         * cpu-x86.md: Same.
6689
6690         * mini-x86.c (mono_arch_output_basic_block): Same.
6691
6692         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
6693         extract mask, max, min and sum of absolute differences.
6694
6695         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
6696         method name.
6697
6698 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6699
6700         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
6701         Renamed one test for consistency.
6702
6703 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6704
6705         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
6706         fix to the code that deal with other blocks.
6707
6708 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6709
6710         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
6711
6712 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6713
6714         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
6715         that deals with vreg interference. Explicitly check for OP_LDADDR to be
6716         able to process the source reg.
6717
6718 2008-10-16  Martin Baulig  <martin@ximian.com>
6719
6720         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
6721
6722         * inssel.brg: Add `OP_HARD_NOP'.
6723
6724         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
6725
6726         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
6727         `OP_HARD_NOP' instruction when running inside the debugger.
6728
6729         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
6730         `OP_HARD_NOP' instruction when running inside the debugger.
6731
6732 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6733
6734         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
6735         now works. The issue with the regalloc tripping up no longer
6736         happens.
6737
6738         * simd-intrinsics.c (load_simd_vreg): Same.
6739
6740 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6741         
6742         * basic-simd.cs: Tests for new Vector8ui methods.
6743
6744 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6745
6746         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
6747         only for type. This fixes crashes where MonoInst::klass is checked
6748         for ops of type != VTYPE or OBJ.
6749
6750         * simd-intrinsics.c (load_simd_vreg): Same.
6751
6752 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6753
6754         * mini-ops.h: Add ops for packed shuffle/max/avg and
6755         extract mask.
6756         
6757         * cpu-x86.md: Same.
6758
6759         * mini-x86.c (mono_arch_output_basic_block): Same.
6760
6761         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
6762         extract mask.
6763
6764         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
6765         to emit extract mask op.
6766
6767         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
6768         to emit word shuffles.
6769
6770 2008-10-15  Mark Probst  <mark.probst@gmail.com>
6771
6772         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
6773         the largest alignment needed by a variable, but at least
6774         sizeof(gpointer).
6775
6776 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6777
6778         * basic-simd.cs: Tests for the fixes in the last commit.
6779
6780 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6781
6782         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
6783         no longer handles STACK_PTR input.
6784
6785         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
6786
6787         * simd-intrinsics.c (load_simd_vreg): New function that works like 
6788         get_simd_vreg   but handles STACK_PTR input.
6789
6790         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
6791         as the input can be an arbitrary pointer.
6792
6793         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
6794         LDADDR local optimization directly otherwise use a store op.
6795
6796 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6797
6798         * basic-simd.cs: Tests for dup low and dup high.
6799
6800 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6801
6802         * mini-ops.h: Add dup low and dup high ops.
6803         
6804         * cpu-x86.md: Same.
6805
6806         * mini-x86.c (mono_arch_output_basic_block): Same.
6807
6808         * simd-intrinsics.c (vector4f_intrinsics): Same.
6809
6810 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6811
6812         * basic-simd.cs: Tests for recently added functionality.
6813
6814 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6815
6816         * mini-ops.h: Add remaining sse1 fp ops.
6817         
6818         * cpu-x86.md: Add remaining sse1 fp ops.
6819
6820         * mini-x86.c (mono_arch_output_basic_block): Same.
6821
6822         * mini.h: Add enum for simd FP compare conditions.
6823
6824         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
6825
6826         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
6827         so the backed can generate the appropriate op.
6828
6829 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6830         This patch squeese one more byte from the SimdIntrinsc struct.
6831
6832         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
6833         a a shift amount intead of simply or'ing it.
6834
6835         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
6836
6837         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
6838         byte so we can have an aditional flags field without increasing struct size.
6839
6840         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
6841         against the simd_supported_versions bitmask.
6842
6843         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
6844
6845 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
6846
6847         * mini.c: remove rawbuffer code (the only use here is unsafe because
6848         it takes locks during signal handling and the kernel now provides much
6849         better info in proc/pid/smaps these days).
6850
6851 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
6852
6853         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
6854         OP_X86_PUSH_OBJ. Fixes #434620.
6855
6856         * objects.cs: Add a test.
6857         
6858 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
6859
6860         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
6861         that the packuswb/packusdw don't work with unsigned numbers for what
6862         would be negative numbers in signed format.
6863
6864         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
6865         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
6866
6867         * mini-ops.h: Add doubleword forms of many ops and packing ones.
6868
6869         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
6870
6871         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
6872
6873         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
6874
6875         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
6876         add more ops.
6877
6878         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
6879         version as the enum in mini.h.
6880
6881         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
6882         for sse3 ops, check the simd_version field if present. This way the code
6883         works with all versions of sse.
6884
6885 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6886
6887         * simd-intrinsics.c: Fixed intrinsic name typo.
6888
6889         * mini.h: Added missing simd exported function.
6890
6891         * basic-simd.cs: Added tests for Vector4ui.
6892         Fixed broken test for Vector16b.
6893
6894 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
6895
6896         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
6897         the max length to 64.
6898
6899 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6900
6901         * method-to-ir.c: Only do the fast virtual generic method call for
6902         non-wrapper methods.
6903
6904         * mini.h, mini-trampolines.c: The new generic virtual remoting
6905         trampoline handles virtual method calls via the vtable (as done by
6906         the fast virtual generic method calls) to remoting proxies.
6907
6908         * mini.c (mono_jit_create_remoting_trampoline): For generic
6909         methods reate a generic virtual remoting trampoline.
6910
6911         * mini-amd64.h: Enable fast virtual generic method calls again.
6912
6913 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6914
6915         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
6916         restore registers when doing tail calls.
6917
6918 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6919
6920         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
6921         Vector4ui.
6922
6923 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6924
6925         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6926
6927 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6928
6929         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6930
6931 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6932
6933         * basic-simd.cs: Retrofit for API changes.
6934
6935 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6936
6937         * mini-ppc.c: Handle integer stack arguments for tail calls.
6938
6939 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6940
6941         * optflags-def.h: Removed sse3 optimization.
6942
6943         * driver.c: Same.
6944
6945         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6946         sse3.
6947
6948         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6949
6950         * mini.h: Added enumeration with simd versions.
6951
6952         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6953         for detecting SSE3.
6954
6955         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6956
6957         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6958
6959 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6960
6961         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6962
6963         * basic-simd.cs: Fixed test naming.
6964
6965 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6966
6967         * mini-ops.h: Added ops for packed and saturated math, shifts
6968         and packing/unpacking.
6969
6970         * cpu-x86.md: Added descriptors for the above ops.
6971
6972         * mini-x86.c: Added code to emmit the above ops.
6973
6974         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6975
6976 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6977
6978         * aot-compiler.c (compile_method): Enable AOT for generic code.
6979
6980         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6981
6982 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6983
6984         * mini.c: add a workaround for a common screwup that ends up blamed
6985         to mono (other processes blocking signal delivery).
6986
6987 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6988
6989         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6990         in the LDFLD/STFLD opcodes. Fixes #432673.
6991
6992         * iltests.il.in: Add a new test.
6993
6994 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6995
6996         * mini-arm.c: attach the thread in unmanaged->managed transitions
6997         using delegates (bug #433148).
6998
6999 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7000
7001        * basic-simd.cs: Use new ShuffleSel constants.
7002
7003 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7004
7005         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7006
7007         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7008         only disable simd intrinsics if no sse2 is detected.
7009
7010         * optflags-def.h: Added sse3.
7011
7012         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7013         is disabled.
7014
7015 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7016
7017         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7018         when adding delegate-invoke wrappers.
7019
7020 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7021
7022         * Makefile.am: Reenable the simd tests.
7023
7024 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7025
7026         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
7027           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
7028           other vreg is allocated to that hreg.
7029
7030         Contributed under MIT/X11 license.
7031
7032 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
7035         yet checked in.
7036
7037 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7038
7039         * basic-simd.cs: New test suite for SIMD intrinsics.
7040
7041         * Makefile.am: Added new tests.
7042
7043 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7044
7045         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
7046
7047         * mini-ops.h: Same.
7048
7049         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
7050
7051         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
7052         using SSE2 aware opcodes.
7053
7054         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
7055         is enabled, this code path is only reachable if conversion ops are emmited after
7056         mono_method_to_ir.
7057
7058         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
7059
7060         This optimization saves 6 bytes per conversion against the old version.
7061
7062 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7063
7064         * aot-compiler.c (compile_method): Don't skip methods referencing 
7065         generic methods without a corresponding entry in token_info_hash, since
7066         encode_method_ref () can handle all generic methods now.
7067
7068         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
7069         generic context is set.
7070         
7071         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
7072         generic sharing of LDTOKEN.
7073
7074 2008-10-06  Mark Probst  <mark.probst@gmail.com>
7075
7076         * mini-amd64.h: Temporarily disabled fast virtual generic method
7077         calls because it breaks the System.Runtime.Remoting tests.
7078
7079 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7080
7081         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
7082
7083         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
7084         so inlining actually works.
7085         (check_inline_caller_method_name_limit): Ditto.
7086
7087 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
7088
7089         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
7090         64 bit safety (from Olaf Hering and Andreas Farber).
7091
7092 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7093         
7094         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
7095         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
7096         unused virtual call support code.
7097
7098         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
7099         
7100         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
7101         which can't use aot trampolines.
7102         (decode_patch): Don't create aot trampolines for methods which can't use
7103         them.
7104
7105         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
7106         use aot trampolines.
7107
7108         * mini.h: Bump AOT image format version.
7109         
7110 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
7111
7112         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
7113         to save_token_info () since cmethod is inflated for constrained calls.
7114
7115         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
7116
7117 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
7118
7119         * Makefile.am: Add build rules for ppc64.
7120         This avoids the build failing at pedump with unresolved symbols
7121         due to lack of arch_sources. Instead it will now fail earlier
7122         due to lack of cpu-ppc64.md.
7123
7124         Contributed under MIT/X11 license.
7125
7126 2008-10-04  Mark Probst  <mark.probst@gmail.com>
7127
7128         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
7129         tail calls.
7130
7131         * iltests.il.in: Add test case for tail call with many arguments.
7132
7133 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7134
7135         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
7136         to the fast virtual generic method code until the aot case is fixed.
7137
7138 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7139
7140         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
7141
7142 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7143
7144         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
7145         thunks.
7146
7147 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7148         
7149         * simd-intrinsics.c: Forgot to add this one.
7150
7151         * mini-codegen.c: Fix macro in case SIMD is not supported.
7152
7153 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7154         
7155         This patch land initial JIT support for simd intrinsics.
7156
7157         * mini-x86.h: Added new define to make --enable_minimal work on x86.
7158
7159         * Makefile.am: Added simd-intrinsics.c
7160
7161         * simd-intrinsics.c: New file with simd instrinsic related
7162         code.
7163
7164         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
7165
7166         * cpu-x86.md: Add simd related instructions.
7167
7168         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
7169
7170         * driver.c: Added two new --regression variants.
7171
7172         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
7173
7174         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
7175
7176         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
7177         extract some complicated logic to helper functions.
7178
7179         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
7180
7181         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
7182
7183         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
7184         the specialized simplification pass.
7185
7186         * method-to-ir.c (mono_spill_global_vars): Use new macro.
7187
7188         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
7189
7190         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
7191         table.
7192
7193         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
7194         if MONO_ARCH_NEED_SIMD_BANK is defined.
7195
7196         * mini-ops.h: Added the new simd ops.
7197
7198         * mini-x86.c: Added mono_arch_xregname.
7199
7200         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
7201
7202         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
7203
7204         * mini-x86.h: Define simd related MONO_ARCH macros.
7205
7206         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
7207
7208         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
7209
7210         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
7211         MONO_CLASS_IS_SIMD to deal with simd related IR.
7212
7213         * mini.h (MonoInst): Added spill_var to the backend union.
7214
7215         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
7216
7217         * mini.h: Added forward declarations of the new simd fuctions.
7218
7219         * optflags-def.h: Added new optimization names SIMD.
7220
7221         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
7222
7223         * regalloc.h: Added support for working with 3 register banks.
7224
7225         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
7226
7227         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
7228
7229 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
7230
7231         * mini-exceptions.c: remove 64 bit related ifdef clutter.
7232
7233 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7234
7235         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
7236         instead of one on 64 bit systems.
7237
7238         * method-to-ir.c: Remove unused includes.
7239
7240 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
7241
7242         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
7243         cfg->used_int_regs, since the two are different on arm.
7244
7245 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7246
7247         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
7248         mono_method_get_vtable_index() to get the vtable index.
7249
7250 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7251
7252         * method-to-ir.c (mono_method_to_ir2): Don't create native
7253         wrappers for array methods, because they're never called (and if
7254         they were called they wouldn't work).
7255
7256 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7257
7258         * method-to-ir.c (mono_method_to_ir2): Array methods are
7259         special-cased and must not be invoked indirectly via the (M)RGCTX
7260         when generic sharing is turned on.  Fixes #431413.
7261
7262 2008-10-01  Mark Probst  <mark.probst@gmail.com>
7263
7264         * method-to-ir.c: When generic sharing is active, call
7265         non-interface virtual generic methods via the standard trampoline.
7266
7267         * mini-trampolines.c: Handle virtual generic shared methods.
7268
7269         * mini.h, mini-x86.c, mini-x86.h: New argument for
7270         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
7271         method thunks and which is the trampoline to call if the lookup
7272         fails.  Enable the virtual generic method thunk for x86.
7273
7274         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
7275         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
7276         argument but assert that it's NULL, because these archs don't yet
7277         implement the virtual generic method thunk.  Changes in the IMT
7278         thunk data structures.
7279
7280 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
7281
7282         * aot-compiler.c (emit_globals): Avoid invalid characters in
7283         the static linking symbol.
7284
7285         * objects.cs: Add a test for the range check optimization. Fix warnings.
7286
7287         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
7288         optimization from the current JIT.
7289
7290         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
7291         later in decompose_array_access_opts () to allow more optimizations.
7292
7293         * method-to-ir.c (mono_handle_soft_float): Rename this to 
7294         mono_decompose_soft_float () for consistency.
7295
7296         * mini-ops.h: Fix arguments of OP_STRLEN.
7297
7298         * method-to-ir.c (save_cast_details): Extract the cast details saving code
7299         into a separate function.
7300         (reset_cast_details): Ditto.
7301         (handle_unbox): Save cast details. Fixes #431254.
7302
7303         * method-to-ir.c: Remove some obsolete FIXMEs.
7304
7305 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7306
7307         * ir-emit.h (alloc_dreg): Write a warning before crashing.
7308
7309 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7310
7311         * mini-codegen.c: More work on macros to make them
7312         ready for multiple regbanks.
7313
7314 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7315
7316         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
7317
7318         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
7319
7320 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7321
7322         * mini-codegen.c (mono_spillvar_offset): Proper support for
7323         multiple regbanks.
7324
7325 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
7328         the stack overflow changes.
7329
7330 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7331
7332         * mini-codegen.c: Make all bank macros depend on reg_bank.
7333
7334         * mini-codegen.c (mono_local_regalloc): Make free mask
7335         initialization regbank aware.
7336
7337 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7338
7339         * mini-codegen.c (mono_local_regalloc): Extract callee
7340         mask selection to a function and make it regbank aware.
7341
7342 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7343
7344         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
7345         code to deal with many regbanks.
7346
7347 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7348
7349         * mini-codegen.c: More fp->regbank changes.
7350
7351 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7352
7353         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
7354         of a hardcoded constant.
7355
7356 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7357
7358         * method-to-ir.c (type_from_stack_type): Fix typo.
7359
7360 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * mini-ia64.c (emit_move_return_value): Convert float return values to
7363         double.
7364
7365         * objects.cs: Add a new test.
7366         
7367         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
7368         VARARG methods to fix an assert later.
7369
7370         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
7371         end so it at least compiles.
7372
7373 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7374
7375         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
7376
7377 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
7378
7379         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7380         optimization to a new function (emit_optimized_ldloca_ir) and enable
7381         it for both ldloca and ldloca_s.
7382
7383 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7384
7385         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7386         gshared CASTCLASS code.
7387
7388         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7389         amd64, where the libc stack unwinder encounters stack frames referring to
7390         native code in unmapped memory.
7391
7392         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7393         sharing.
7394
7395         * generics.cs: Add new test.
7396
7397 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7398
7399         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7400         add a check that one of the ARM_FPU_ constants is defined.
7401
7402         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7403         
7404         * mini-exceptions.c: Fix build on non-altstack platforms.
7405
7406         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7407         sharing of vtypes.
7408
7409         * ir-emit.h: Add a comment to NEW_PCONST.
7410
7411         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7412
7413         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
7414
7415         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
7416         after the changes to MonoJitDomainInfo.
7417
7418 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7419
7420         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
7421
7422 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7423
7424         * mini-ppc.c: Compiler warning fixes.
7425
7426 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7427
7428         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
7429         for pinvokes.
7430
7431 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7432
7433         * exceptions-ppc.c, mini-ppc.h: Compile
7434         mono_arch_handle_altstack_exception() on Darwin, too.
7435
7436 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7437
7438         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
7439         work on archs which don't have generic sharing implemented, only
7440         without the vtable_arg.
7441
7442 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7443
7444         * mini.c: Added comment explaining why delegate ctor icall
7445         wrappers are compiled.
7446
7447 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7448
7449         * mini.c: Don't produce trampolines to delegate ctor icall
7450         wrappers but compile them upfront.
7451
7452 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7453
7454         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
7455         runtime-set function when going back to managed code. Currently this
7456         is used to set back the protection on the soft ovf pages and/or to
7457         throw the stack overflow exception that happened in unmanaged code.
7458
7459 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7460
7461         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
7462         runtime-set function when going back to managed code. Currently this
7463         is used to set back the protection on the soft ovf pages and/or to
7464         throw the stack overflow exception that happened in unmanaged code.
7465
7466 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7467
7468         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
7469         the support code for restoring stack protection after stack overflows
7470         that happen in unmanaged code. Don't set the exec permission on the
7471         soft overflow area.
7472
7473 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
7474
7475         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
7476         delegate->method_ptr is set. Fixes #428054.
7477
7478 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7479
7480         * tests.cs: Rename to ratests.cs.
7481
7482         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
7483         emit_get_rgctx_... functions.
7484
7485 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7486
7487         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
7488
7489 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7490
7491         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
7492         before asserting that method is sharable.
7493
7494 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7495
7496         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
7497         whether method needs a static RGCTX wrapper used instead of
7498         complex conditions.
7499
7500         * generic-sharing.c, mini.h: A few functions moved to
7501         metadata/generic-sharing.c.
7502
7503 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7504
7505         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
7506         Generic code sharing for value types, which essentially means
7507         treating value type methods like static methods.  The RGCTX is
7508         passed in the same way.
7509
7510 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7511
7512         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
7513         opcode when creating multi-dimensional arrays of open types.
7514
7515         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
7516         open generic types.
7517
7518         * generics.cs: Add a test.
7519
7520         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
7521
7522 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7523
7524         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
7525
7526         * mini.c (mini_method_compile): Set it when running under the debugger. 
7527
7528         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
7529         vreg optimization if the flag is set.
7530
7531         * driver.c (mono_main): Add --attach= option to pass options to
7532         the attach agent.
7533
7534         * mini.c (sigquit_signal_handler): Start the attach agent.
7535
7536         * ssapre.c: Disable this to save space since it is not yet ported to
7537         linear IR.
7538
7539         * regalloc2.c: Disable this to save space.
7540
7541         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
7542
7543 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
7544
7545         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
7546         the -v option useful again.
7547
7548 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7549
7550         * mini-amd64.c (mono_arch_output_basic_block): Add support for
7551         --break-at-bb.
7552
7553         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
7554         arrays of arrays. Fixes #428406.
7555
7556         * method-to-ir.c (mini_emit_castclass): Ditto.
7557
7558         * objects.cs: Add new test.
7559         
7560 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
7561
7562         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
7563         was wrong at it choked against target_type_is_incompatible for byref types.
7564
7565 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7566
7567         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
7568         places.
7569
7570 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
7571
7572         * mini-exceptions.c: update a few more exceptions-related counters.
7573
7574 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
7575
7576         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
7577         new functions to allocate from persistent mempools.
7578
7579 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7580
7581         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
7582         multiple register banks in the future.
7583
7584         * mini-codegen.c (mono_local_regalloc): Fix a warning.
7585
7586 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
7587
7588         * mini.c (type_to_eval_stack_type): Remove duplicated function.
7589
7590         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
7591
7592         * mini.h: Export type_to_eval_stack_type.
7593
7594         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
7595         is only ins->klass of byref types.
7596
7597 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
7598
7599         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
7600         (mini_emit_memcpy2): Ditto.
7601
7602         * mini-amd64.c: Fix a warning.
7603
7604 2008-09-21  Mark Probst  <mark.probst@gmail.com>
7605
7606         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
7607         linking.
7608
7609 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
7610
7611         * method-to-ir.c: Extract stloc micro-optimization to a
7612         function and apply it to all cases.
7613
7614 2008-09-19  Mark Probst  <mark.probst@gmail.com>
7615
7616         * method-to-ir.c: Don't fail generic code sharing in cases we
7617         already support.
7618
7619 2008-09-18  Mark Probst  <mark.probst@gmail.com>
7620
7621         * mini-ppc.c: Handle structs in tailcalls on Darwin.
7622
7623 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
7624
7625         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
7626         implementation.
7627
7628 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
7629
7630         * trace.c: make tracing more useful and correct, with per-thread
7631         id and indent info.
7632
7633 2008-09-15  Mark Probst  <mark.probst@gmail.com>
7634
7635         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
7636         doing a method call and the argument is an R4.
7637
7638 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
7639
7640         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
7641         generic methods.
7642
7643 2008-09-13  Mark Probst  <mark.probst@gmail.com>
7644
7645         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
7646
7647 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
7648
7649         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
7650         (MONO_JUMP_TABLE_FROM_INS): Ditto.
7651
7652 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7653
7654         * driver.c: Add a --agent argument (not supported yet) to load managed
7655         agent assemblies before loading the main assembly, similarly to how the
7656         Java VM handles agents.
7657
7658 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7659
7660         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
7661         function to do stack layout of local variables.
7662
7663 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7664
7665         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
7666         calculation.
7667
7668 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
7671         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
7672         JIT if DISABLE_JIT is defined.
7673
7674         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
7675         defined.
7676
7677 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7678
7679         * iltests.il.in: Disable the fconv test on PPC (the result is
7680         undefined according to ECMA).
7681
7682 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7683
7684         * iltests.il.in: Enable tail call tests for PPC.
7685
7686         * mini.h: Add variable for storing incoming valuetype argument
7687         addresses for tail calls.
7688
7689         * mini-ppc.c: Implement valuetype arguments and return values for
7690         tailcalls on Linux.
7691
7692 2008-09-09  Mark Probst  <mark.probst@gmail.com>
7693
7694         * mini-ppc.c: Partially implement tail calls (struct arguments and
7695         return values not supported).
7696
7697         * method-to-ir.c: Enable tail calls on PPC.
7698
7699 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
7700
7701         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
7702         runtime-invoke wrappers to work around the problem of them getting
7703         assigned to a random class.
7704
7705         * aot-runtime.c (mono_aot_get_method): Ditto.
7706         
7707 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
7708
7709         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
7710         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
7711
7712 2008-09-07  Mark Probst  <mark.probst@gmail.com>
7713
7714         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
7715         until they're implemented properly.
7716
7717         * exceptions-ppc.c: Use arch-independent exception-handling code
7718         instead of custom one.
7719
7720         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
7721         for Linear IR.
7722
7723         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
7724
7725         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
7726         applies when __powerpc__ is defined.
7727
7728 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
7731         methods to their code to avoid computing the full name of wrappers and
7732         doing a lookup in a string hash table.
7733
7734 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7735
7736         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
7737         we identify bblocks before method_to_ir () is ran.
7738
7739         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
7740         Also avoid optimizing branches pointing to themselves.
7741
7742         * mini.c (mini_method_compile): Ditto. Fixes #422947.
7743
7744 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
7745
7746         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
7747
7748 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7749
7750         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
7751         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
7752         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
7753         'buf'.
7754
7755         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
7756         jumped to the same entry in plt_jump_table.
7757
7758 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
7759
7760         * method-to-ir.c (initialize_array_data): Handle field with RVA from
7761         dynamic images.
7762
7763 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
7766         other assignment can be if converted. Saves 1.5% on corlib size and fixes
7767         #421807.
7768
7769 2008-08-29  Geoff Norton  <gnorton@novell.com>
7770
7771         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
7772         segment, and doesn't properly handle .space as .text.  Fixes
7773         AOT Mach/ARM
7774
7775 2008-08-29  Geoff Norton  <gnorton@novell.com>
7776
7777         * mini.c: Disable the mach exception handler when running on 
7778         ARM
7779
7780 2008-08-29  Geoff Norton  <gnorton@novell.com>
7781
7782         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
7783         globals on Darwin/ARM
7784
7785 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
7786
7787         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
7788         since too many things depend on it. Instead, call 
7789         mono_runtime_set_no_exec ().
7790         
7791         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
7792         the new JIT.
7793
7794         * aot-compiler.c: Add an 'asm-only' AOT option.
7795
7796         * mini.c: Avoid initializing the runtime when doing AOT compilation.
7797                 
7798         * aot-compiler.c (compile_method): Disable gshared support for now as it
7799         doesn't yet work.
7800
7801 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7802
7803         * mini-amd64.h : Fix a compiler warning.
7804
7805         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
7806           Changed to use a callback function to retrieve the unwind info.
7807           This avoids problems observed when code blocks were removed by
7808           unloading an app domain.
7809
7810         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
7811           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
7812           to work properly.
7813
7814         Contributed under MIT/X11 license.
7815
7816 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7817
7818         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
7819           case to keep the stack aligned to 8.
7820
7821         Contributed under MIT/X11 license.
7822
7823 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
7824
7825         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
7826         avoid repeated linear searches.
7827
7828 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
7829
7830         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
7831         methods it can't handle.
7832         
7833         * aot-compiler.c (add_method): Avoid adding a method twice.
7834         (add_wrappers): Add runtime invoke wrappers for all methods.
7835
7836         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
7837         function to create an aot-compatible version of this trampoline.
7838
7839         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
7840
7841 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
7842
7843         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
7844
7845         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
7846         with a generic sharing failure.
7847
7848         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
7849
7850         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
7851         CEE_RETHROW. Fixes #419634.
7852
7853         * mini.c (mono_method_to_ir): Ditto.
7854
7855         * exceptions.cs: Add a new test.
7856         
7857         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
7858         to mono_type_stack_size_internal () since some callers might not pass in
7859         an rgctx.
7860
7861         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
7862         instrument_prolog. Fixes #419878.
7863
7864         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
7865         doubles in soft float mode volatile.
7866
7867 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
7868
7869         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
7870
7871         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
7872         to handle soft float correctly.
7873
7874         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
7875         the fast path.
7876
7877         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
7878
7879         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
7880         to sp, since the generics catch code requires it.
7881
7882         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
7883         copying.
7884
7885         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
7886         mono_arch_emit_imt_argument ().
7887
7888         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
7889
7890         * mini-arm.c tramp-arm.c: Generic sharing updates.
7891
7892 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
7893
7894         * mini-arm.c: Fix the arm build.
7895
7896         * generic-sharing.c (mini_type_get_underlying_type): New helper function
7897         handling enums, generic instances and generic sharing.
7898         (mini_type_stack_size_full): Ditto.
7899
7900         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
7901         
7902         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
7903
7904         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
7905
7906         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
7907         trampolines.
7908
7909         * mini-arm.c: Various small generic sharing changes.
7910
7911         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
7912         this for x86.
7913         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
7914         custom code.
7915
7916         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
7917         helper function to return a generic class init trampoline.
7918
7919         * method-to-ir.c mini.c: Use it.
7920         
7921         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7922         arch-specfic function to return a generic class init trampoline.
7923
7924         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7925         the GENERIC_CLASS_INIT custom code.
7926
7927         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7928         a fatal error, not a sharing failure.
7929
7930         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7931         needed.
7932
7933         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7934         trampoline argument from MONO_ARCH_VTABLE_REG.
7935
7936         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7937         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7938         argument, and pass the vtable in VTABLE_REG.
7939
7940         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7941         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7942         argument, and pass the vtable in VTABLE_REG.
7943         (mono_arch_create_trampoline_code_full): Remove some special casing for
7944         the rgctx fetch trampoline.
7945
7946         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7947         Fixes #419273.
7948
7949         * iltests.il: Add a test for it.
7950
7951 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7952
7953         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7954
7955         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7956         no longer needed.
7957
7958         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7959         use mono_jit_info_table_find () to avoid recursion.
7960         (mono_delegate_trampoline): Add a sync wrapper here.
7961
7962         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7963         here.
7964
7965         * mini.c (mono_method_to_ir): Ditto.
7966         
7967         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7968         add_sync_wrapper argument. Don't add a sync wrapper here.
7969         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7970
7971         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7972         
7973 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7974
7975         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7976           of nonvolatile registers back from MonoContext to CONTEXT.
7977
7978         Contributed under MIT/X11 license.
7979
7980 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7981
7982         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7983           arguments on Winx64 there are only 4 argument registers.  For this
7984           logic to work the last argument must be pulled from the stack.  
7985
7986         Contributed under MIT/X11 license.
7987
7988 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7989
7990         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7991
7992         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7993         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7994         encode/decode_method_ref ().
7995
7996         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7997
7998         * aot-runtime.c (decode_patch): Ditto.  
7999
8000         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8001         MONO_PATCH_INFO_METHOD.
8002
8003         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8004         MonoGenericJitInfo.
8005
8006         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8007         MonoGenericJitInfo.
8008
8009         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8010
8011         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8012         one from the caller.
8013
8014         * aot-runtime.c (decode_generic_inst): New function to decode and
8015         return a interned generic inst.
8016         (decode_klass_ref): Use it.
8017         (decode_method_ref): Ditto.
8018
8019         * aot-compiler.c (emit_exception_debug_info): Save 
8020         jinfo->has_generic_jit_info too.
8021
8022 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8023
8024         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
8025
8026         * iltests.il.in: Add a test for fconv_to_i.
8027
8028         * liveness.c: Disable the liveness2 pass for now to save space.
8029
8030         * regalloc2.c: Include mempool-internals.h to fix warnings.
8031
8032         * aot-compiler.c (encode_method_ref): Encode the context of generic
8033         instance methods.
8034
8035         * aot-runtime.c (decode_method_ref): Inflate generic methods using
8036         the context saved in the aot file.
8037
8038         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8039
8040         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
8041
8042         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
8043         volatile so they won't be optimized away.
8044
8045 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
8046
8047         * ssa.c:
8048         * ssa2.c:
8049         * mini.c:
8050         * regalloc2.c:
8051         * dominators.c: Remove duplicated functions that now are in
8052         mempool-internals.h.
8053
8054 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8055
8056         * aot-compiler.c: Fix warnings.
8057
8058         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
8059
8060         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
8061
8062         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
8063         as the patch type.
8064
8065         * mini.c (mono_resolve_patch_target): Ditto.
8066         
8067         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
8068         (encode_klass_ref): Add support for encoding VARs/MVARs.
8069
8070         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
8071
8072         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
8073         the handling of the got entries into a separate 'decode_got_entry' function.
8074         Add support for RGCTX_FETCH.
8075
8076         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
8077         clobbered by the trampoline code.
8078
8079         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
8080         not clobbered by the indirect calling code.
8081
8082 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
8085         to fix the build.
8086
8087 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
8088
8089         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
8090         signature using the compilation mempool otherwise we would leak it.
8091
8092 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8093
8094         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
8095         mono_emit_abs_call ().
8096
8097         * patch-info.h: Add GENERIC_CLASS_INIT.
8098
8099         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
8100
8101         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
8102         as their target as a near call.
8103
8104         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
8105         ABS handling code.
8106         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
8107
8108         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
8109         call to a runtime function described by a patch.
8110
8111         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
8112         mono_emit_abs_call, this has the advantage that the ABS handling code in
8113         mono_codegen () can handle them both, and can handle other stuff in the
8114         future without additional code.
8115
8116         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
8117         entry.
8118         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
8119         abs addresses.
8120
8121         * mini.h: Add missing bblock related prototypes.
8122
8123         * mini.h (MonoCompile): Remove unused reverse_inst_list and
8124         reverse_inst_list_len fields.
8125
8126         * mini.c: Refactor this file a bit by moving branch optimizations to 
8127         branch-opts.c.
8128
8129         * method-to-ir.c: Merge generic sharing changes missed earlier.
8130
8131         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
8132
8133         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
8134         shared patches. Process METHODCONST as a shared patch.
8135
8136         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
8137         as it crashes on the 2.0 mscorlib.
8138
8139         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
8140         to cause crashes.
8141         
8142         * aot-compiler.c: Use is_plt_patch () in a few additional places.
8143         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
8144         by IMT.
8145
8146         * aot-compiler.c: Reorganize the got handling code to be a bit more
8147         understandable.
8148
8149 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8150
8151         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
8152         mono_patch_info_equals/hash, and use it to massively simplify
8153         get_plt_index ().
8154
8155         * mini.c (mono_patch_info_hash): Simplify this and add support for
8156         more patch types.
8157
8158         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
8159
8160         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
8161         handling code, since an offset is not enough to identify a trampoline.
8162
8163         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
8164
8165 2008-08-17  Mark Probst  <mark.probst@gmail.com>
8166
8167         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
8168
8169         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
8170
8171         * mini-ops.h: Argument and result types for OVF_CARRY ops.
8172
8173         * decompose.c: PPC decompositions for various ops.
8174
8175         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
8176
8177 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8178
8179         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
8180         call the generic trampoline code using a call, instead of a jump, to
8181         remove some special casing from the generic trampoline code.
8182
8183         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
8184         (mono_codegen): Ditto.
8185
8186         * aot-compiler.c aot-runtime.c: Ditto.
8187
8188         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
8189
8190         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
8191         helper function to find the offset corresponding to a lazy fetch trampoline.
8192
8193         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
8194         when doing generic sharing.
8195
8196         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
8197         places.
8198         
8199         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
8200         mini-trampolines.c to be with the other trampoline creation functions.
8201
8202         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
8203         as it is equal to method->signature in most cases, add a 
8204         mono_emit_method_call_full variant which takes a signature and an imt
8205         argument as well.
8206
8207 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
8210         to this function, since it could be computed easily from the method 
8211         argument.
8212         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
8213         more.
8214
8215         * method-to-ir.c mini.c: Remove references to 
8216         compile_generic_method_wo_context.
8217
8218         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
8219         generic method calls.
8220         
8221         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
8222         dimensional non-szarrays.
8223
8224         * mini.c (mini_init): Register mono_array_new_1.
8225
8226         * jit-icalls.c (mono_array_new_1): New jit icall.
8227
8228         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
8229         pointing to the method.
8230
8231         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
8232         method addresses belonging to METHOD_JUMP patches in the 
8233         jump_target_got_slot_hash.
8234         (mono_aot_load_method): Ditto.
8235
8236         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
8237         METHOD_JUMP patches.
8238
8239         * mini.c (mini_create_jit_domain_info): New helper function which 
8240         initializes/frees domain->runtime_info.
8241         (mini_free_jit_domain_info): Ditto.
8242         (mini_init): Install the domain hook functions with the runtime.
8243
8244         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
8245         information maintained by the JIT.
8246
8247         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
8248         insertion into jump_table_hash into mono_codegen (), also implement proper
8249         locking.
8250
8251         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
8252         tail calls, it is already done by the aot code.
8253         
8254         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
8255         mechanism on amd64.
8256
8257         * iltests.il.in: Make the jmp test a bit more complex.
8258
8259         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
8260         generic instances which doesn't have a token.
8261
8262         * aot-runtime.c (decode_method_ref): Ditto.
8263         
8264         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
8265         can handle this case now.
8266         (handle_box): Ditto.
8267
8268 2008-08-15  Geoff Norton  <gnorton@novell.com>
8269
8270         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
8271         debugging check.
8272
8273 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
8274
8275         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
8276         calling generic methods.
8277
8278         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
8279
8280         * aot-runtime.c (decode_patch_info): Ditto.
8281
8282         * mini.c (mono_resolve_patch_target): Ditto.
8283         
8284         * patch-info.h: Add METHOD_RGCTX.
8285
8286         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
8287
8288 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
8289
8290         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
8291         arguments in registers.
8292
8293         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
8294         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
8295
8296         * mini.c (mini_method_compile): Abort aot compilation for generic
8297         methods if generic sharing is disabled.
8298         
8299         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
8300         an mrgctx.
8301
8302         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
8303         requiring an mrgctx.
8304
8305         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
8306         store instructions when converting a vcall to a normal call.
8307
8308         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
8309         mono_arch_find_jit_info.
8310
8311 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
8312
8313         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
8314         avoid calling mono_method_full_name () for every method even if the
8315         env var is not set.
8316         (check_inline_caller_method_name_limit): Ditto.
8317
8318 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8319
8320         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
8321         assemblies in one run.
8322
8323         * aot-compiler.c (mono_compile_assembly): Only print out a count of
8324         skipped methods if it is not 0.
8325
8326         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
8327
8328 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8329
8330         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
8331           MONO_ARCH_HAVE_UNWIND_TABLE.
8332
8333         Contributed under MIT/X11 license.
8334
8335 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8336
8337         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
8338           from default optimizaton list on Winx64.
8339
8340         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
8341
8342         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
8343           the LMF from the MonoJitTlsData structure.
8344
8345         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
8346
8347         Contributed under MIT/X11 license.
8348
8349 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8350
8351         * mini.c (sigsegv_signal_handler): Fix the build.
8352
8353         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
8354         assembly->aot_module.
8355
8356         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
8357         hash table. This simplifies and speeds up a lot of code, and fixes support
8358         for .netmodules.
8359
8360         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
8361         with the runtime.
8362
8363         * mini-exceptions.c: Ditto.
8364         
8365         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
8366         'native_offset' argument, since these are computed in the 
8367         mono_find_jit_info () function.
8368
8369         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
8370         is used by exceptions-ppc.c.
8371
8372         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
8373         mono_arch_find_jit_info ().
8374         
8375         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
8376         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
8377         generic code in mini-exceptions.c.
8378
8379 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8380
8381         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8382
8383         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8384         
8385         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8386         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8387         called while holding the loader lock. Fixes #415608.
8388         (mono_aot_get_method_from_token_inner): Ditto.
8389
8390 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8391
8392         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8393         to reduce differences between this and the generic implementation in
8394         mini-exceptions.c.
8395         (ves_icall_get_frame_info): Ditto.
8396
8397         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8398
8399         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8400         longer neccesarry.
8401
8402         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8403         mono_arch_get_call_filter () and make it non-static, for consistency with the
8404         other architectures.
8405
8406 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8407
8408         * mini.c:
8409         * local-propagation.c:
8410         * mini-x86.c: Correct the name of arch defines.
8411
8412 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8413
8414         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
8415         NO_EMULATE_LONG_SHIFT_OPS define.
8416
8417 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8418
8419         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
8420         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
8421
8422         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
8423         MACH fixes. Merged from the 2.0 branch.
8424
8425         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
8426
8427         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
8428         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
8429
8430         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
8431
8432         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
8433         mono_marshal_get_native_wrapper () signature changes.
8434
8435 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
8436
8437         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
8438         conversion bug under arm.
8439
8440 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8441
8442         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
8443
8444         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
8445         with overflow checking.
8446
8447 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8448
8449         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
8450         to the genmdesc.pl file
8451
8452 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
8453
8454         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
8455         arg_array in the soft-float versions of the LOAD/STORE macros.
8456
8457         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
8458         implementation.
8459
8460         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
8461
8462 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8463
8464         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
8465         a float HFA. Fixes #413621.
8466
8467 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
8468
8469         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
8470         frame_size to args_size. Fixes build.
8471
8472 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8473
8474         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
8475         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
8476
8477         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
8478         the stack are not unaligned. Fixes #413247.
8479         
8480 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
8481
8482         * mini.c: update jitted methods performance counters.
8483
8484 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8485
8486         * mini-exceptions.c: increase the exceptions thrown performance
8487         counter in mono_handle_exception ().
8488
8489 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8490
8491         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
8492         can work with netmodules.
8493
8494 2008-07-28  Geoff Norton  <gnorton@novell.com>
8495
8496         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
8497         regression tests.
8498
8499 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8500
8501         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
8502         correct place.
8503
8504 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
8505
8506         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8507           The float param registers and other param registers must be the 
8508           same index on Windows x64.
8509
8510         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
8511           ArgValuetypeAddrInIReg argument case.  Setting the argument
8512           op to OP_VTARG_ADDR (OP_REGOFFSET)).
8513
8514         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
8515           variable computed above as the copy length for arguments of storage
8516           type ArgValuetypeAddrInIReg.
8517
8518         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
8519           ArgValuetypeAddrInIReg argument case.  This case will rely on
8520           mono_arch_emit_outarg_vt to emit the correct code later in the process.
8521
8522         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
8523           a 32 byte stack allocation for all calls.  We will omit the adjustment for
8524           jump and tail call instructoins as they do not follow the typical call behavior.
8525
8526         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
8527           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8528           local variable and pass the local variable by reference to the called method.
8529
8530         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
8531           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
8532           of a struct is passed in a register it must be saved with the other
8533           volatile argument on the stack.
8534
8535         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
8536           frame pointer the stack adjustment value must be saved to the unwind 
8537           info structure.
8538
8539         Contributed under MIT/X11 license.
8540
8541 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8542
8543         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
8544         which got lost in the merge.
8545
8546 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8547
8548         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
8549         build.
8550
8551         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
8552         
8553         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
8554         icalls, since they won't be patched.
8555
8556         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
8557         different code sequence when running under valgrind to prevent some valgrind
8558         errors.
8559
8560         * iltests.il.in: Add new regression test.
8561
8562         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
8563         end with a throw.
8564
8565         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
8566         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
8567
8568         * iltests.il.in: Add new test.
8569
8570         * aot-compiler.c: Fix some warnings.
8571
8572         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
8573         Fixes #412494.
8574
8575 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8576
8577         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
8578         (mini_usage_jitdeveloper): Add a missing --wapi option.
8579
8580 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8581
8582         * mini-codegen.c: Simplify the is_fp macros.
8583         (free_up_ireg): Remove, use free_up_reg instead.
8584         (free_up_reg): Fix the fp case.
8585
8586 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8587
8588         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
8589         lowered earlier.
8590
8591         * exceptions-x86.c: Merge some changes which seemed to have got lost
8592         in the linear-ir merge.
8593
8594         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
8595
8596         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
8597         long vreg volatile even if the variable was already created.
8598
8599         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
8600         volatile variables.
8601
8602 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8603
8604         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
8605
8606         * mini.c (mono_jit_compile_method_inner): Add support for 
8607         MONO_EXCEPTION_BAD_IMAGE.
8608
8609         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
8610         mini_method_get_context () returns NULL. Fixes #356531.
8611
8612         * mini.c (mono_method_to_ir): Ditto.
8613         
8614         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
8615         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
8616
8617 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
8620         in the LDFTN implementation.
8621
8622 2008-07-25  Mark Probst  <mark.probst@gmail.com>
8623
8624         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
8625         code, patch calls to icalls, too, even if they're not in the
8626         shared generic code hash.  Fixes #411962.
8627
8628 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8629
8630         * cpu-x86.md: Increase the length of the fcall opcodes.
8631
8632         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
8633         calls returning floats.
8634
8635         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
8636         on NEWARR.
8637         
8638         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
8639         missed earlier.
8640
8641         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
8642         into the domain->method_code_hash.
8643
8644         * aot-compiler.c: Fix win32 build.
8645
8646         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
8647         
8648         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
8649         gshared NEWARR implementation.
8650
8651         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
8652
8653         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
8654         can be used outside of method_to_ir.
8655
8656         * mini.h (MonoCompile): Add arg_types field.
8657
8658         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
8659         
8660         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
8661         the values of the local arg_array and param_types array.
8662
8663 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8664
8665         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
8666         got accesses might only get generated later when NEWOBJ is decomposed.
8667         
8668         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
8669         looking up the native code of the target method when a delegate is called
8670         for the first time.
8671
8672         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
8673         optimization.
8674
8675         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
8676
8677         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
8678         AOT work on platforms without a working dlsym implementation.
8679
8680         * mini.h: Bump AOT image format version.
8681         
8682 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8683
8684         * mini-exceptions.c: Free a MonoType with
8685         mono_metadata_free_type() instead of g_free().
8686
8687         * aot-runtime.c: Free a MonoType.
8688
8689 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8690
8691         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
8692         optimization.
8693
8694         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
8695         fp stack on x86.
8696
8697 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
8698         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
8699         profiler hook.
8700
8701 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8702
8703         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
8704         NEWOBJ calls on valuetypes.
8705
8706         * iltests.il.in: Add new test.
8707
8708         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
8709
8710 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8711
8712         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
8713         is no longer needed.
8714
8715         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
8716         non register sized integer arguments.
8717         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
8718         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
8719         emit_memcpy2 ().
8720
8721         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
8722         CEE_MONO_RETOBJ.
8723         
8724         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
8725         two a binop with different sized arguments is emitted.
8726
8727         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
8728         instruction in the ins==NULL case.
8729
8730 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8731
8732         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
8733
8734         * mini-x86.c: Fix osx build.
8735
8736         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
8737         opcodes as well.
8738
8739         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
8740         instruction for non int sized variables.
8741
8742         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
8743         implementation.
8744
8745 2008-07-23  Robert Jordan  <robertj@gmx.net>
8746
8747         * method-to-ir.c: Fix MSVC build.
8748
8749 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
8752         a non int sized type, widen it to an int since newer versions of gcc seem to
8753         generate code which needs this.
8754
8755         * ssa2.c abcremoval2.c: Fix warnings.
8756
8757         * *: Merge the Linear IR branch.
8758
8759         The original branch is at trunk/branches/vargaz/mini-linear-il, and
8760         the ChangeLog file there describes all the changes done over the years. 
8761         Further documentation can be found at www.mono-project.com/Linear_IL.
8762
8763 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8764
8765         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8766           The float param registers and other param registers must be the 
8767           same index on Windows x64.
8768
8769         Contributed under MIT/X11 license.
8770
8771 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
8772
8773         * mini.c: Make the previous fix GC safe.
8774
8775 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
8776
8777         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
8778
8779 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8780
8781         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
8782           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
8783           ArgValuetypeAddrInIReg instead.
8784
8785         Contributed under MIT/X11 license.
8786
8787 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
8788
8789         * mini-codegen.c (get_register_spilling): Fix a warning.
8790
8791 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
8792
8793         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
8794         for types which the initialization fails. Raises the provided exception
8795         at the right stop after cleanup.
8796
8797 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
8798
8799         * aot-compiler.c: Free most of the memory allocated during compilation.
8800
8801         * mini.c (mini_parse_debug_options): Fix a leak.
8802         
8803         * mini.c (mini_method_compile): Don't add the method to the jit info tables
8804         during aot compilation.
8805
8806 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
8807
8808         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
8809         it has too much register pressure.
8810
8811 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
8812
8813         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
8814
8815 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8816
8817         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8818         on x86.
8819
8820         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8821         on amd64 similar to the way it is done on arm.
8822
8823         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8824
8825         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
8826         consistency, normalize error messages, avoid loading aot-only modules in
8827         normal mode.
8828
8829         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
8830         for consistency.
8831
8832         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
8833
8834 2008-07-11  Martin Baulig  <martin@ximian.com>
8835
8836         * debug-debugger.h
8837         (MonoDebuggerInfo): Add `interruption_request'.
8838
8839 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8840
8841         * aot-compiler.c (emit_plt): Remove some dead code.
8842
8843         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
8844
8845         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
8846         return the plt info offset belonging to a given plt entry.
8847
8848         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
8849         mono_aot_get_plt_info_offset.
8850         
8851         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
8852         similar to the amd64 code by makeing jumps through a separate jump table 
8853         instead of embedding the jump addresses into the code.
8854
8855 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
8856
8857         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
8858         method.
8859
8860 2008-07-10  Martin Baulig  <martin@ximian.com>
8861
8862         * mini.c (mini_method_compile): Disable generics sharing when
8863         running in the debugger.
8864
8865 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8866
8867         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
8868
8869         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
8870         the local register allocator from running out of registers on x86 when 
8871         using aot.
8872
8873 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
8874
8875         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
8876         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
8877         C4146.
8878
8879         Contributed under MIT/X11 license.
8880
8881 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8882
8883         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
8884         speed up the assembler.
8885
8886 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8887
8888         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
8889         support.
8890
8891         * mini.c: Move the soft float handling macros a bit earlier, add 
8892         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
8893         place.
8894
8895         * mini.h: Add prototype for mono_arch_fixup_jinfo.
8896
8897         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
8898         read-only to help catch code allocation requests.
8899         
8900         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
8901         and turn it off when using --aot-only or when compiling with --aot=full.
8902
8903         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
8904         jump table for switches from the normal domain mempool, not the code
8905         manager.
8906
8907         * mini-trampolines.c (get_unbox_trampoline): New function to return an
8908         unbox trampoline which handles aot-only mode too.
8909
8910         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
8911         an AOTed unbox trampoline.
8912
8913         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
8914
8915 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8916
8917         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
8918         ""
8919
8920         Contributed under MIT/X11 license.
8921
8922 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8923
8924         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8925           the unwind information for the method at the end of the allocated block.
8926           
8927         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8928           MonoCompileArch to hold the unwind info for SEH on Winx64
8929         
8930         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8931           frame pointer info for the method being compiled.
8932           
8933         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8934           the call to mono_exception_from_token.
8935           
8936         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8937           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8938           information is stored a the end of the method block because it is all 32-bit offset based.
8939
8940         Contributed under MIT/X11 license.
8941
8942 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8943
8944         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8945
8946         * wapihandles.c: Fix warnings.
8947
8948         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8949         mode.
8950
8951         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8952         mono_jit_compile_method in aot-only mode since that calls the type 
8953         initializer.
8954         
8955         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8956         get_delegate_invoke_impl in aot-only mode.
8957
8958         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8959
8960 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8961
8962         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8963
8964         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8965         is on by default.
8966
8967         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8968
8969         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8970         init trampoline from the AOT file as well.
8971
8972         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8973         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8974         code.
8975
8976         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8977         mono_init.
8978
8979         * exceptions-amd64.c: Add _full variants for the remaining exception code
8980         creation functions as well, allow emission of relocatable code, remove
8981         caching since that is now done by the caller.
8982
8983         * mini-exceptions.c: Add _full variants for the remaining exception code
8984         creation functions as well, add aot-only support.
8985
8986         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8987         if we can determine a proper token for them.
8988         (add_wrappers): Add a few more wrappers.
8989         (emit_method_code): Remove some dead code.
8990         (emit_trampolines): Emit exception code too.
8991
8992         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8993
8994         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8995         mono_array_new_va which avoids varargs.
8996
8997         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8998
8999         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9000         mono_arch_create_specific_trampoline () in all places.
9001
9002         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9003         a bit so it can be used for other things as well.
9004         
9005         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9006         on demand as well.
9007
9008         * exceptions-amd64.c: Rename the caching from the exception code creation
9009         functions, it is done by the caller instead.
9010         
9011         * exceptions-amd64.c: Change the signature of the exception code creation 
9012         functions to allow the creation of relocatable code later.
9013
9014         * mini-exceptions.c: Add a set of functions to query the various 
9015         runtime-generated exception functions.
9016
9017         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9018         mono_arch_.. () functions.
9019         
9020 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9021
9022         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
9023
9024         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
9025
9026         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
9027         (mini_get_vtable_trampoline): Ditto.
9028
9029         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
9030         code in the AOT case by returning the code size and a list of relocations to
9031         the caller.
9032
9033         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
9034
9035 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
9036
9037         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
9038           clean the stack.
9039
9040         Contributed under MIT/X11 license.
9041
9042 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
9045         so the buffer size can be computed correctly. Fixes #404735.
9046
9047         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
9048         normally as cfg->debug_info is already freed.
9049
9050 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
9051
9052         * mini-amd64.c: For calls returning vtypes in registers, don't store
9053         the return address on the stack, instead allocate a separate local for
9054         it. Fixes #404729.
9055
9056 2008-07-05  Mark Probst  <mark.probst@gmail.com>
9057
9058         * mini-trampolines.c, mini.h: Add an argument to
9059         mono_create_jit_trampoline_in_domain() for turning off the adding
9060         of the sync wrapper.
9061
9062         * mini.c: Use the JIT trampoline without sync instead of
9063         ldftn_nosync in static RGCTX invoke wrappers so that the call can
9064         be patched.
9065
9066 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9067
9068         * driver.c: Turn on GSHARED optimization by default.
9069
9070 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
9071
9072         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
9073         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
9074
9075         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
9076         create a variant of the generic trampoline code callable from AOTed trampolines.
9077
9078         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
9079         trampoline code callable from AOTed trampolines.
9080
9081         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
9082
9083 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9084
9085         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
9086         pass-through manner.
9087
9088         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
9089         and don't fail sharing for them anymore.
9090
9091         * mini-exceptions.c: Handle exceptions in shared generic methods.
9092
9093         * generic-sharing.c: When checking the context of a generic
9094         method, also check its class's context.  Don't treat wrappers as
9095         sharable.
9096
9097         * mini-trampolines.c: Some code factored out to
9098         metadata/generic-sharing.c.  Handle the MRGCTX case.
9099
9100         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
9101         we must deal with the method being of another instantiation of the
9102         class.  Add static rgctx invoke wrappers to generic methods.
9103
9104 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9105
9106         * mini.c: Provide all jit infos of generic shared methods with a
9107         generic jit info.
9108
9109         * mini-exceptions.c: Handle the new situation that a generic info
9110         might be available, but not info about the this/vtable/mrgctx
9111         variable.
9112
9113 2008-07-03  Mark Probst  <mark.probst@gmail.com>
9114
9115         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
9116         generic methods.
9117
9118 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * dominators.c (check_dominance_frontier): Fix a warning.
9121
9122         * mini.h: Add some missing prototypes.
9123
9124         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
9125
9126         * driver.c (mono_jit_init_version): Correct the comments since the first
9127         argument should be the name of the root domain, not a filename.
9128
9129         * aot-runtime.c (make_writable): Error out if this is called while running
9130         with --aot-only.
9131         (load_aot_module): Ditto.
9132
9133         * aot-compiler.c: Really fix the computation of method indexes.
9134
9135         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
9136         optimizations as this is no longer called frequently.
9137
9138         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
9139         method and the invoke impl code and pass it to the delegate trampoline instead of
9140         just the delegate class.
9141
9142 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
9143
9144         * aot-compiler.c: Fixup the computation of method indexes.
9145         (add_wrappers): Create the base methods of the runtime invoke wrappers using
9146         the method builder infrastructure.
9147
9148         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
9149         has no header.
9150
9151         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
9152         mode, load the method right away instead of creating a trampoline.
9153
9154         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
9155
9156         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
9157         some checks a bit.
9158
9159 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
9160
9161         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
9162         (mono_aot_load_method): Use method_index instead of method->token.
9163
9164         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
9165         can handle icalls etc. properly.
9166
9167         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9168
9169         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
9170
9171         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
9172         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
9173         JIT_ICALL_ADDR patch type.
9174
9175         * patch-info.h: Add JIT_ICALL_ADDR patch type.
9176
9177         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
9178         request flag.
9179         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
9180
9181         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
9182
9183 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
9184
9185         * mini.c: Use domain->jit_code_hash_lock for controlling access to
9186         domain->jit_code_hash.
9187
9188 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
9191
9192 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
9193
9194         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
9195         get_this_arg_from_call, let it compute it when needed.
9196
9197         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
9198         gsctx from code only when needed.
9199
9200         * mini-trampolines.c (get_generic_context): Rename this to 
9201         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
9202         it can be called by the arch backends.
9203
9204         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
9205
9206 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
9207
9208         * driver.c (mono_main): Add experimental --aot-only command line option.
9209
9210         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
9211         set.
9212
9213 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
9214
9215         * driver.c (DllMain): Remove mono_module_handle.
9216
9217         Contributed under MIT/X11 license.
9218
9219 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
9220
9221         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
9222         for emitting methods which are not in the source assembly. Detect and report
9223         failure of assembling+linking.
9224         
9225         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
9226
9227         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
9228
9229 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
9230
9231         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
9232
9233 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
9234
9235         * mini.h: Remove some obsolete prototypes.
9236
9237         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
9238
9239 2008-06-24  Mark Probst  <mark.probst@gmail.com>
9240
9241         * mini.c (get_object_generic_inst): Variable-sized arrays are not
9242         supported by Visual Studio, so use alloca().
9243
9244 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
9245
9246         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
9247         Fixes #402585.
9248
9249 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9250
9251         * mini.c: Fail sharing of a generic method if it contains an open
9252         catch clause (because we don't pass MRGCTXs yet).
9253
9254 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9255
9256         * mini.c: When compiling a method with generic sharing, insert the
9257         method instantiated with an all-Object generic context into the
9258         jit info table, instead of the context of the first instantiation
9259         of the method we happen to compile.
9260
9261 2008-06-18  Martin Baulig  <martin@ximian.com>
9262
9263         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
9264         `major_version' and `minor_version'.
9265
9266 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9267
9268         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
9269         mono_method_is_generic_sharable_impl() takes an additional
9270         argument specifying whether to treat type variables as reference
9271         types.
9272
9273 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9274
9275         * mini.h: Removed obsolete prototypes.
9276
9277 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9278
9279         * mini.c: Don't fail generic sharing for initobj and sizeof - we
9280         already handle them.
9281
9282 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9283
9284         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
9285         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
9286         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
9287         tramp-x86.c: Added a MonoGenericContext* argument to
9288         mono_arch_get_unbox_trampoline() so that it can call other
9289         functions which require it.
9290
9291 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9292
9293         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
9294         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
9295         mono_arch_get_this_arg_from_call() takes a
9296         MonoGenericSharingContext* as well.
9297
9298 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9299
9300         * mini.c: Factor out code for emitting unbox into emit_unbox() and
9301         implement generic sharing of unbox.
9302
9303 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9304
9305         * mini.c: Don't compute the vtable to determine whether a field is
9306         special static, because it might not work for open types.
9307
9308 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9309
9310         * mini.c: Removed the unused token_type and token_source arguments
9311         from get_runtime_generic_context_ptr().
9312
9313 2008-06-17  Marek Habersack  <mhabersack@novell.com>
9314
9315         * mini.c (ADD_BINOP): fix the build
9316
9317 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
9318
9319         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
9320         a widening op.
9321
9322 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9323
9324         * mini.h: Removed class relations enum that's not used anymore.
9325
9326 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9327
9328         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
9329
9330         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
9331         the lazy fetch trampoline access code.
9332
9333 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
9334
9335         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
9336
9337 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
9338
9339         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
9340
9341         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
9342
9343         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
9344
9345 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9346
9347         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
9348         intrinsics.
9349
9350         * mini-ops.h: Add MIN/MAX_UN opcodes.
9351
9352         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
9353         intrinsics.
9354
9355         * basic-math.cs: Add more min/max tests.
9356
9357         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9358
9359 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9360
9361         * mini.c: Small fix in the prologue of emit_castclass.
9362
9363 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9364
9365         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9366
9367         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
9368         do not work even for unsigned types. Fixes #400014.
9369
9370         * basic-math.cs: Add regression tests for unsigned Min/Max.
9371
9372 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9373
9374         * mini.c: Added additional context_used argument to several
9375         functions, which will be needed for sharing generic methods.  Use
9376         GET_RGCTX macro wherever appropriate.  Declare only one
9377         context_used in mono_method_to_ir().
9378
9379 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9380
9381         * mini.c, generic-sharing.c: Removed generic class relations.
9382
9383         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9384         functions due to MRGCTX changes.
9385
9386 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9387
9388         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9389         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9390         with calculated IMT.
9391
9392         * mini.c: Generic sharing of calls via generic interfaces.
9393
9394         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9395         generic method with non-constant MonoGenericContext*.  Instead,
9396         the context is taken out of the method itself.
9397
9398 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9399
9400         * mini.c: Generic sharing of ldvirtftn.
9401
9402 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9403
9404         * mini.c: Generic sharing of ldftn.
9405
9406 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9407
9408         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9409
9410 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9411
9412         * mini.c: Generic sharing of the special case of ldtoken followed
9413         by a call to GetTypeFromHandle.
9414
9415 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9416
9417         * mini.c: Generic sharing of box for nullable types.
9418
9419 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9420
9421         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
9422         are passed on the stack. Fixes #324807.
9423
9424 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
9425
9426         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
9427         for the ArgValuetypeAddrInIReg case.
9428
9429         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
9430         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
9431
9432         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
9433         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9434         local variable and pass the local variable by reference to the called method.
9435           
9436         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
9437         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
9438
9439         Contributed under MIT/X11 license.
9440
9441 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
9442
9443         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
9444
9445         * debug-mini.c (mono_debug_print_vars): Release memory after printing
9446         everything.
9447
9448 2008-06-10  Martin Baulig  <martin@ximian.com>
9449
9450         * debug-mini.c
9451         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
9452
9453 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
9454
9455         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
9456         possible error when no arguments are passed.
9457
9458         Contributed under MIT/X11 license.
9459
9460 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
9461
9462         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
9463         where the file name is NULL.
9464
9465 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9466
9467         * mini.c: Fix s390 build.
9468
9469 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
9470
9471         * trace.c (mono_trace_parse_options): Fix warnings.
9472
9473         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
9474
9475 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9476
9477         * mini.c (remove_block_if_useless): Avoid printing the method name.
9478         
9479         * mini.c: Remove needless setting of ins->cil_code which is now done by 
9480         MONO_INST_NEW.
9481
9482         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
9483         LMF. Not yet used.
9484
9485         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
9486         translated code after it has been patched.
9487
9488 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9489
9490         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
9491         avoid problems during code patching on SMP systems.
9492         (emit_call): Avoid adding a patch info which is already added by 
9493         emit_call_body.
9494         (mono_arch_emit_exceptions): Ditto.
9495
9496 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9497
9498         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
9499         MONO_TYPE_ISSTRUCT already checks for it.
9500
9501 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
9502
9503         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
9504           structs with floats on Winx64 the float registers are not used.  
9505           The integer registers are always used..
9506         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
9507           only one register will be used and only if the size of the struct 
9508           is 1,2,4, or 8 bytes.
9509
9510         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
9511           to work for Winx64.
9512
9513         Contributed under MIT/X11 license.
9514
9515 2008-06-05  Martin Baulig  <martin@ximian.com>
9516
9517         * debug-debugger.c (debugger_lookup_class): Also call
9518         mono_class_setup_methods() here; we're only called from RTI.
9519
9520 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
9521
9522         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
9523         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
9524         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
9525         Post-process object files and add dtrace-generated object, if necessary.
9526
9527         Contributed under MIT/X11 license.
9528
9529 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9530
9531         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
9532         element class.
9533
9534         * mini.c: Generic sharing for unbox.any and castclass.
9535
9536 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9537
9538         * mini.c: Ignore tailcall prefix in shared generic code and when
9539         doing calls which require a vtable/rgctx argument.
9540
9541 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9542
9543         * mini.c: Don't free the JIT info.
9544
9545         * driver.c: Changes in the JIT info table testing code.
9546
9547 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9548
9549         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
9550         interruption. Fix some warnings.
9551
9552         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
9553         interruption_checkpoint.
9554
9555 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9556
9557         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
9558         from embedding applications.
9559
9560 2008-06-02  William Holmes  <billholmes54@gmail.com>
9561
9562         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
9563           reserving 32 bytes on the stack when making calls. 
9564
9565         Contributed under MIT/X11 license.
9566
9567 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
9568
9569         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
9570         the linear IL branch.
9571
9572         * driver.c: Print out more information for --version on arm.
9573
9574 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
9575
9576         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
9577         bb_exit instead, since out of line bblocks might not actually be emitted
9578         out-of-line.
9579         
9580         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
9581         maximum epilog size for out of line bblocks if tracing is enabled.
9582
9583         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
9584
9585 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
9586
9587         * arrays.cs: Regression tests for allocating arrays with negative sizes.
9588
9589 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
9590
9591         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
9592         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
9593         opcodes.
9594
9595 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
9596
9597         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
9598         the 'value' to store is a constant.
9599
9600         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
9601
9602         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
9603         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
9604
9605 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
9606
9607         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
9608         for accessing method->generic_container.
9609
9610 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
9611
9612         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
9613         
9614         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
9615
9616         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
9617
9618         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
9619         fails.
9620
9621 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
9622
9623         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
9624
9625         * mini.c: Handle the case when mono_class_vtable () fails.
9626
9627 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9628         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
9629         the stat profiler.
9630
9631 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9632
9633         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
9634         together with domain sharing.
9635
9636 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9637
9638         * mini.c: Treat callvirts to final methods like non-virtual calls
9639         when doing generic sharing, i.e. look them up in the runtime
9640         generic context.
9641
9642 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9643
9644         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
9645         with computed types (for generic sharing).
9646
9647         * mini.c: Generic sharing for mkrefany and refanyval.
9648
9649 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
9650
9651         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
9652         possible.
9653
9654         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
9655         the generic sharing code.
9656         
9657         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
9658         when needed.
9659
9660 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9661
9662         * mini.h: Remove the declaration of mono_aot_init_vtable ().
9663
9664 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
9665
9666         * driver.c: updated copyright date
9667
9668 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9669
9670         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
9671         needed.
9672
9673 2008-05-19  Martin Baulig  <martin@ximian.com>
9674
9675         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
9676         pointing to the new `_mono_debug_using_mono_debugger' variable.
9677
9678         * driver.c
9679         (mono_main): Check mono_debug_using_mono_debugger() rather than
9680         the `MONO_INSIDE_MDB' environment variable to check whether we're
9681         inside the debugger.
9682
9683 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
9684
9685         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
9686         argument.
9687
9688 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
9689
9690         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
9691
9692         * mini.c: Added mini_assembly_can_skip_verification. This
9693         function checks if the assembly requested to skip verification. 
9694         Fixes part of #387274.
9695
9696 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
9697
9698         * mini.c (mini_get_method): Disable the check for open generic classes when
9699         using generic sharing.
9700
9701         * generics.cs: Add a test for #387034.
9702
9703         * mini.c (mini_get_method): Check whenever the method class is an open generic
9704         type, and return NULL in that case, causing a verification error. Fixes
9705         #384123.
9706
9707 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9708
9709         * driver.c (mono_main): Revert r102623. The right
9710         thing to do is to enable the verifier under verifiable
9711         unless a --security flag was passed.
9712
9713         We need this non-trivial behavior for --verify-all otherwise
9714         mcs-compileall won't be able to use it. As it needs everything to
9715         be verified under validil.
9716
9717 2008-05-06  Martin Baulig  <martin@ximian.com>
9718
9719         Fix #383749.
9720
9721         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
9722         (mono_debugger_thread_cleanup): Likewise.
9723         (mono_debugger_extended_notification): Likewise.
9724
9725 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9726
9727         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
9728         against both inflated and non-inflated methods. We need to check against the
9729         generic definition for cases where the instantiated method is not visible.
9730         We need to check against the inflated types for cases where the instantiation
9731         changes any super type. This fixes #382986.
9732
9733         Note that this doesn't need to be applied to other parts of mono_method_to_ir
9734         that check for visibiliy as generic params only appears as the type subject
9735         of tokens on call opcodes. Field manipulation and ldftn must always
9736         target an exact type.
9737
9738 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9739
9740         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
9741         if no related --security flag is passed.
9742
9743 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9744
9745         * mini-arch.h: Prepare support for ppc64.
9746
9747         Contributed under MIT/X11 license.
9748
9749 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9750
9751         * aot-runtime.c: Prepare support for ppc64.
9752
9753         Contributed under MIT/X11 license.
9754
9755 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9756
9757         * mini-ops.h: Prepare support for ppc64.
9758
9759         Contributed under MIT/X11 license.
9760
9761 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
9762
9763         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
9764
9765         Contributed under MIT/X11 license.
9766
9767 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
9768
9769         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
9770         assemblies, since aot_name is not a full path, causing us to load MS.NET 
9771         assemblies on windows.
9772
9773 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
9774
9775         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
9776         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
9777         * main.c: Use UTF-8 encoded command line instead of Windows default code
9778         page on Windows to support Unicode.
9779         * driver.c (DllMain): New function for mixed-mode assembly support.
9780         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
9781         export __stdcall functions without decoration.
9782
9783         Contributed under MIT/X11 license.
9784
9785 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9786
9787         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
9788         saving it very early.
9789
9790 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9791
9792         * mini.h, mini.c: Lots of code for accessing the old RGCTX
9793         deleted.  The only way to access the new RGCTX is via the
9794         trampline.
9795
9796         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
9797         vtable instead of the RGCTX to static methods.
9798
9799         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
9800         accessing the new RGCTX.
9801
9802         * generic-sharing.c: There is no separation between self, type
9803         arguments and other types in the RGCTX anymore.
9804
9805 2008-04-25  Jonathan Chambers <joncham@gmail.com>
9806
9807         * mini-amd64.c (add_general): Remove previous stack adjustment.
9808         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
9809         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
9810         for 32 bytes of stack space reserved for all calls.
9811         
9812         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
9813         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
9814         adjustment.
9815         
9816         Code contributed under MIT/X11 license.
9817
9818 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
9819
9820         * mini.c (mini_method_verify): Only verify non-inflated methods, check
9821         against the root definition, peeling out method and type instantiations.
9822         Cache verify success results, code that fails verification is still
9823         checked multiple times.
9824
9825 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
9826
9827         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
9828
9829 2008-04-23  Jonathan Chambers <joncham@gmail.com>
9830
9831         * mini-amd64.c (add_general): Always increment stack on Win64.
9832         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
9833         on Win64.
9834         
9835         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
9836         stack based argument handling on Win64.
9837         
9838         Code contributed under MIT/X11 license.
9839
9840 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
9841
9842         * Makefile.am (version.h): Add support for git-svn.
9843
9844 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
9845
9846         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
9847         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
9848         avoiding allocations and libc functions which might deadlock.
9849         
9850         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
9851         'no-gdb-backtrace' option is set.
9852
9853         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
9854
9855         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
9856
9857 2008-04-21  Martin Baulig  <martin@ximian.com>
9858
9859         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
9860         and `get_lmf_addr'; `notification_address' is no longer a pointer.
9861
9862 2008-04-21  Martin Baulig  <martin@ximian.com>
9863
9864         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
9865         `thread_vtable', `event_handler_ptr' and `event_handler'.
9866
9867 2008-04-21  Martin Baulig  <martin@ximian.com>
9868
9869         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
9870         allows delayed initialization of the `executable_code_buffer' when
9871         attaching.
9872
9873 2008-04-21  Martin Baulig  <martin@ximian.com>
9874
9875         * mini.h (mono_debugger_create_notification_function): Removed.
9876         * tramp-*.c (mono_debugger_create_notification_function): Removed.
9877
9878         * mdb-debug-info64.s
9879         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9880
9881         * mdb-debug-info32.s
9882         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9883
9884         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
9885         currently only works on x86 and x86_64, so don't create it on ppc.
9886
9887 2008-04-21  Martin Baulig  <martin@ximian.com>
9888
9889         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
9890
9891         * mini.c
9892         (mini_method_compile): In the fp elimination check, check
9893         `debug_options.mdb_optimizations' in addition to
9894         mono_debug_using_mono_debugger().       
9895
9896         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
9897         disable some JIT optimizations which are only disabled when
9898         running inside the debugger.
9899         Added `--help-debug' option to describe the debugging options.
9900         (parse_debug_options): New static function to parse the `--debug'
9901         options, so we can easily add more stuff in future.
9902
9903 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
9904
9905         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
9906         the method has no body.
9907
9908 2008-04-19  Jonathan Chambers <joncham@gmail.com>
9909
9910         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
9911         assembly is not allowed in MSVC 64-bit compiler. 
9912         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
9913         as we get floating point exceptions everywhere.
9914         
9915         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
9916         correctly align arguments for call to throw_exception.
9917         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
9918         
9919         Code contributed under MIT/X11 license.
9920
9921 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9922
9923         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9924
9925 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9926
9927         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9928
9929         * mini-amd64.c (NEW_INS): Set cil_code.
9930
9931         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9932         from mini-amd64.c so all debugger related logic is in one place.
9933
9934         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9935         later won't have a random ip assigned to them.
9936
9937 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9938
9939         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9940         the arch specific function initializes code_size.
9941         (mono_create_delegate_trampoline): Ditto.
9942
9943         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9944         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9945         platforms.
9946
9947         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9948         running under the debugger.
9949
9950         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9951         debugger.
9952
9953         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9954         debugger. Also move the disabling of optimizations here from driver.c.
9955         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9956         debugger.
9957
9958         * mini.h (MonoCompile): Add a few new flags.
9959
9960 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9961
9962         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9963         so the cil_code field of created MonoInst's is properly set.
9964         (mini_select_instructions): Ditto.
9965
9966         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9967         (MONO_INST_NEW_CALL): Ditto.
9968
9969         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9970         in many places so the ins->cil_code field is properly initialized.
9971
9972         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9973         place.
9974
9975 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9976
9977         * mini.c (mini_method_compile): Print a different message when compiling a 
9978         shared method.
9979         
9980         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9981         > 1.
9982
9983 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9984
9985         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9986         SSE2 instructions.
9987
9988         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9989         
9990 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * mini.c (handle_stack_args): Make this return void since its return value was
9993         never used. Also set cfg->unverifiable for invalid IL instead of calling
9994         G_BREAKPOINT ().
9995
9996 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9997
9998         * mini.c: Make sure "this" is live in catch clauses with type
9999         variables in shared generic code.
10000
10001 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10002
10003         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10004         generic_class_is_reference_type() to ensure the proper behaviour
10005         when sharing generic code and the type in question is a type
10006         argument.
10007
10008 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10009
10010         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10011         race conditions when printing thread dumps. Fixes #377738.
10012
10013 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10014         
10015         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10016         shows up when both MonoInst arguments can cause aliasig.
10017         There is likely no way in the current JIT to trigger this problem, but
10018         it showed up in the development of generics sharing, when in a new
10019         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10020         When the generics sharing code will be committed, its tests will be
10021         valid also for this bug.
10022
10023 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10024
10025         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
10026         PATCH_INFO_METHOD.
10027
10028         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
10029         NULL.
10030
10031 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
10032
10033         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
10034         use a more detailed exception message for InvalidCastException.
10035
10036         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
10037
10038         * driver.c (mono_main): Add --debug=casts option to turn on better 
10039         InvalidCastException message details.
10040
10041         * mini.c (mini_get_debug_options): New helper function to return the address of
10042         the debug_options variable.
10043
10044         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
10045         the jit_tls TLS variable.
10046
10047         * mini.c (mono_jit_tls): New TLS variable.
10048
10049         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
10050         option is used.
10051
10052 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
10053
10054         * mini.h: Removed verifer related stuff. This code was moved to verify.c
10055
10056         * mini.c: Removed verifer related stuff, code moved to verify.c.
10057
10058         * driver.c: Using code from verify.c instead of mini.c.
10059
10060 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
10061
10062         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
10063         longer valid.
10064
10065 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
10066
10067         * mini.c (check_for_method_verify): Enabling verification of
10068         corlib if mono_verify_all is set. Bugs in the verifier preventing that
10069         have been fixed.
10070
10071 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
10072
10073         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
10074         caller saved registers as well.
10075         
10076         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
10077         saved registers as well.
10078
10079 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
10080
10081         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
10082
10083         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
10084         code.
10085
10086 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
10087
10088         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
10089         to get_call_info.
10090         (get_call_info): Take a gsctx argument instead of 'cfg'.
10091
10092 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10093
10094         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
10095         mono_verify_all is set.
10096
10097         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
10098
10099         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
10100
10101 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10102
10103         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
10104         an exception.
10105
10106         * driver.c mini.c mini.h: Add a --verify-all development option to test the
10107         verifier and the code generated by the compiler.
10108
10109 2008-03-25  Mark Probst  <mark.probst@gmail.com>
10110
10111         * mini.c: Generic sharing of the non-nullable case of the box
10112         instruction.
10113
10114 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
10115
10116         * inssel.brg: Fix the build.
10117
10118         * iltests.il.in: Add a test for lconv.ovf.u8.un.
10119
10120 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
10121
10122         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
10123         Array:Address. Fixes #372410.
10124
10125         * iltests.il.in: New tests for readonly prefix.
10126
10127 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
10128
10129         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
10130         mini-trampolines.c.
10131
10132         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
10133         mini-exceptions.c.
10134
10135         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
10136         
10137         * mini.c (mono_decompose_op_imm): New helper function.
10138
10139         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
10140         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10141         return value.
10142
10143         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10144         mono_arch_output_basic_block. Fix warnings.
10145
10146         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
10147         for now.
10148
10149 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
10150
10151         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
10152         since the extra frame is now detected automatically inside the loop.
10153
10154         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
10155         opts which are now in mono_peephole_ins ().
10156         
10157         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
10158
10159         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
10160         frames and skip duplicate managed-to-native frames. Fixes #367665.
10161
10162         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10163         opts which are now in mono_peephole_ins ().
10164         (mono_arch_peephole_pass_2): Ditto.
10165
10166         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
10167
10168         * mini-codegen.c (mono_peephole_ins): New helper function containing the
10169         arch independent peephole optimizations.
10170
10171         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10172         opts which are now in mono_peephole_ins ().
10173
10174         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
10175         
10176         * mini-s390.c (mono_arch_output_basic_block): Fix build.
10177
10178         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
10179         pattern.
10180
10181         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
10182         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
10183         opcode. 
10184
10185 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
10186
10187         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
10188         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10189         return value.
10190
10191         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10192         mono_arch_output_basic_block. Fix warnings.
10193
10194 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10195
10196         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10197         conv.ovf.u.un.
10198
10199 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10200
10201         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10202         conv.ovf.u.un.
10203
10204         * iltests.il: Add new tests.
10205
10206 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
10207
10208         * mini.c: Removed Windows version macros.
10209
10210 2008-03-20  Mark Probst  <mark.probst@gmail.com>
10211
10212         * generic-sharing.c: Put reflection types in the extensible part
10213         of the runtime generic context.
10214
10215         * mini.c: Generic sharing of the GetTypeHandle special case of the
10216         ldtoken instruction.
10217
10218 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10219
10220         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
10221
10222         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
10223         
10224         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
10225         consistency with the other version on the linear IR branch.
10226
10227         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
10228
10229         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
10230
10231         * iltests.il.in: Add new tests.
10232
10233 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
10234
10235         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
10236
10237         * iltests.il.in: Add new tests.
10238
10239 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10240
10241         * mini.c: Two variables with the same name were declared in
10242         nesting contexts and one wasn't initialized.  Fixed.
10243
10244 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10245
10246         * mini.c: Generic sharing of the initobj instruction.
10247
10248 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
10249
10250         * mini.c: make the test to optimize ldtoken from typeof() more
10251         precise.
10252
10253 2008-03-18  Mark Probst  <mark.probst@gmail.com>
10254
10255         * mini.c: Generic sharing of the initobj instruction for reference
10256         types.
10257
10258 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
10259
10260         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
10261         the mono_breakpoint_clean_code() code to perform bound checks.
10262
10263 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
10264
10265         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
10266         mono_arch_patch_callsite() to include the start of the managed method
10267         to be able to perform bound checks.
10268
10269 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10270
10271         * mini.c: Generic sharing for the isinst instruction.
10272
10273 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10274
10275         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10276         inssel-long32-mips.brg: Added opcodes for doing indirect calls
10277         with the runtime generic context argument.
10278
10279         * mini.c: Share calls to several types of unsharable methods by
10280         putting the address of the method code in the runtime generic
10281         context and doing an indirect call.
10282
10283         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10284         to switches.
10285
10286 2008-03-16  Mark Probst  <mark.probst@gmail.com>
10287
10288         * generic-sharing.c: Change due to a change in the runtime genric
10289         context API.
10290
10291 2008-03-15  Martin Baulig  <martin@ximian.com>
10292
10293         * tramp-x86.c
10294         (mono_arch_nullify_class_init_trampoline): Add call to
10295         mono_breakpoint_clean_code() to make things work when running
10296         inside the debugger.
10297
10298         * tramp-amd64.c
10299         (mono_arch_nullify_class_init_trampoline): Add call to
10300         mono_breakpoint_clean_code() to make things work when running
10301         inside the debugger.
10302
10303 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * inssel-long.brg (reg): Fix 64 bit build.
10306
10307 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10308
10309         * mini.c, mini.h: Share static generic code by passing it an
10310         implicit argument pointing to the runtime generic context.
10311
10312         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10313         inssel-long32-mips.brg: New opcodes for calling shared static,
10314         which need to be passed the runtime generic context.
10315
10316         * mini-amd64.c, mini-x86.c: Save the runtime generic context
10317         argument on the stack in the prologue if needed.  New function for
10318         finding the runtime generic context argument from the registers
10319         saved by the trampoline.
10320
10321         * mini-amd64.h, mini-x86.h: Specify which register to use for the
10322         runtime generic context argument.
10323
10324         * tramp-amd64.c: Also restore the register used for the runtime
10325         generic context argument.
10326
10327         * mini-trampoline.c: Resolve shared static calls by consulting the
10328         runtime generic context via the new argument.
10329
10330         * generic-sharing.c: Add an argument to sharability-checking
10331         functions that specifies whether type variables should be treated
10332         as sharable type arguments.
10333
10334         * inssel-x86.brg: Removed a superfluous, buggy rule.
10335
10336         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10337         to switches.
10338
10339 2008-03-14  Martin Baulig  <martin@ximian.com>
10340
10341         * debug-debugger.c (main_thread_handler): Call
10342         mono_runtime_run_main() without sending any notifications.
10343
10344         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
10345
10346 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10347
10348         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
10349
10350 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10351
10352         * tramp-x86.c: Fixed register restore offsets in the trampoline
10353         code for ECX and EDX.
10354
10355 2008-03-12  Geoff Norton  <gnorton@novell.com>
10356
10357         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
10358         different ucontext_t implementations.
10359         * exceptions-arm.c: Use the above defines to get exceptions working on 
10360         iPhone (based on a patch by Luke Howard lukeh@padl.com)
10361         * mini-arm.c: Implement iPhone icache support (based on a patch by
10362         Luke Howard lukeh@padl.com)
10363
10364 2008-03-12  Mark Probst  <mark.probst@gmail.com>
10365
10366         * mini.c: Enable generic sharing of calls to non-static
10367         non-interface non-generic non-value-type methods.
10368
10369         * mini-trampolines.c: Resolve calls from shared generic code.
10370
10371 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
10372
10373         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
10374
10375         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
10376
10377 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
10378
10379         * mini.c: some fixes for the AOT compiler.
10380
10381 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10382
10383         * cpu-amd64.md: Add clob:1 to some float opcodes.
10384
10385 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10386
10387         * mini.h: Added MiniVerifierMode enumeration.
10388
10389         * mini.c: Added mini_verifier_set_mode to control
10390         the usage of the new verifier.
10391
10392         * mini.c (mono_method): Integrated the new verifier.
10393
10394         * driver.c: Extended --security option with validil and
10395         verifiable options to activate the new verifier.
10396
10397 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10400         optimization to ctors taking 0 or 2 arguments too.
10401
10402         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10403         a bit.
10404
10405         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10406
10407         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10408
10409 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10410
10411         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10412         non-aot case as well.
10413
10414         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
10415
10416         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
10417         changes.
10418
10419         * aot-compiler.c (encode_patch): Ditto.
10420
10421         * mini.h (G_MININT32): Fix the definition of this.
10422
10423 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
10426
10427         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
10428
10429 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10430
10431         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
10432         methods returning vtypes in registers.
10433         (mono_arch_allocate_vars): Ditto.
10434
10435         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
10436
10437         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
10438
10439         * generics.cs: Add a test from the linear IR branch.
10440
10441         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
10442
10443         * mini.c (inline_method): Cache failed inline attempts.
10444
10445 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10446
10447         * mini.c: For shared methods of generic classes put the location
10448         of "this" into the MonoGenericJitInfo.
10449
10450         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
10451         register out of a MonoContext by register number.  Add the generic
10452         sharing context as an argument to mono_arch_find_this_argument().
10453
10454         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
10455         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
10456         for new arch function.
10457
10458         * mini-exception.c: Handle open exception clauses in shared
10459         generic code.
10460
10461         * mini-trampolines.c: Supply additional argument to
10462         mono_arch_find_this_argument().
10463
10464 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10465
10466         * Makefile.am (regtests): Run the bench.exe tests last.
10467
10468 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
10469
10470         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
10471         a bit.
10472
10473 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
10474
10475         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
10476         with MS.
10477
10478         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
10479         
10480         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
10481
10482         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
10483         whose class has no cctor.
10484
10485         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
10486
10487 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
10488
10489         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
10490         unverified.
10491
10492 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
10495         to be in sync with the code on the linear IR branch.
10496
10497         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
10498
10499         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
10500
10501 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10502
10503         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
10504
10505         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
10506
10507         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
10508
10509         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
10510
10511         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
10512         
10513         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
10514         body.
10515
10516 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
10517
10518         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
10519         OP_LOADR4_MEMBASE emission.
10520
10521         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
10522         (mono_spillvar_offset_float): Ditto.
10523
10524         * mini-mips.c (mono_arch_emit_prolog): Ditto.
10525
10526         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
10527         emission.
10528
10529         * basic-long.cs: Add regression tests for them.
10530
10531         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
10532         use.
10533         (mono_arch_allocate_vars): Fix representation of single-precision float
10534         argument.
10535         (mono_arch_output_basic_block): Ditto.
10536
10537         * inssel-mips.brg: Ditto, remove duplicate items.
10538
10539         * mini-mips.c (emit_load_volatile_arguments): New function to handle
10540         arguments of tail calls as on other platforms.
10541         (mono_arch_output_basic_block): Handle tail calls.
10542
10543         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
10544         register.
10545
10546         * objects.cs (test_5_pass_static_struct): Add test for it.
10547
10548         Contributed under MIT/X11 license.
10549
10550 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
10551
10552         * Makefile.am: Use gmcs for compiling the regression tests.
10553
10554         * *.2.cs *.2.il: Rename to *.cs and *.il.
10555
10556 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
10557
10558         * regalloc.h: Make the vassign array smaller.
10559
10560         * mini.c (mini_method_compile): Remove an unused field in cfg.
10561
10562         * mini-codegen.c: Add a bunch of micro optimizations.
10563
10564 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * regalloc.h: Remove some unused fields.
10567
10568 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
10569
10570         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
10571
10572         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
10573
10574 2008-02-22  Mark Probst  <mark.probst@gmail.com>
10575
10576         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
10577
10578         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
10579         trampoline: Fetch an entry from the runtime generic context.  If
10580         it's NULL, jump to the actual trampoline to fill the runtime
10581         generic context.  Otherwise, return it.
10582
10583         * mini.c: Call the lazy fetch trampoline to get entries out of the
10584         runtime generic context.
10585
10586         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
10587         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
10588         tramp-sparc.c: Stubs for the lazy fetch trampoline.
10589
10590 2008-02-21  Mark Probst  <mark.probst@gmail.com>
10591
10592         * mini.c: Fetch data out of the extensible part of the runtime
10593         generic context instead of calling a helper function.
10594
10595         * generic-sharing.c: Some functions moved into
10596         metadata/generic-sharing.c.  Helper function for fetching other
10597         types now checks and asserts against extensible rgctx (just for
10598         debugging purposes - the helper function isn't called anymore
10599         unless for debugging).
10600
10601 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10602
10603         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
10604         for tail calls up to the point that the tests in iltests.exe run. Also add a
10605         dummy CKFINITE implementation.
10606         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
10607         needed for trampoline LMF frames.
10608
10609         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
10610         trampoline LMF frames.
10611
10612 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
10613
10614         * mini.c (inline_method): clean any pending loader error when inlining fail.
10615         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
10616
10617 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10618
10619         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
10620
10621         * aot-runtime.c (decode_patch_info): Ditto.
10622
10623         * mini.c (mono_resolve_patch_target): Ditto.
10624         
10625         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
10626         icall wrappers.
10627
10628         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
10629         
10630         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
10631         if it references an icall address.
10632
10633 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10634
10635         * cpu-s390x.md: Remove some more unused opcodes.
10636         
10637         * cpu-s390x.md: Remove some unused opcodes.
10638
10639         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
10640         mono_op_imm_to_op ().
10641
10642         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
10643         instead of a switch statement.
10644         
10645         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
10646         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
10647
10648         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
10649         
10650         * mini-codegen.c: Remove unused mono_regstate2_... functions.
10651
10652         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
10653         -1.
10654
10655 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * driver.c (mono_main): Improve error reporting when an assembly cannot be
10658         opened. Fixes #362607.
10659
10660         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
10661
10662         * iltests.il.in: Add a test for static methods in interfaces.
10663
10664 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
10665
10666         * genmdesc.c (build_table): Fix a crash on older glib versions.
10667
10668         * cpu-sparc.md: Remove some unused opcodes.
10669         
10670         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
10671         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
10672
10673         * cpu-amd64.md: Remove some unused opcodes.
10674
10675         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
10676         like the other opcodes.
10677
10678 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
10679
10680         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
10681
10682         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
10683
10684         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
10685         variables 'cfg' instead of 'm' for consistency.
10686
10687         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
10688
10689         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
10690         argument holding the vtype return address, to avoid the ambigious use of
10691         cfg->ret for this purpose.
10692
10693         * mini.c (NEW_RETLOADA): Use vret_addr if set.
10694
10695         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
10696         
10697         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
10698         new mono_print_ins () function which only takes one argument.
10699
10700 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
10703         macro arguments.
10704
10705 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
10706
10707         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
10708
10709         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
10710
10711         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
10712         opcodes and other small changes.
10713
10714         * mini-ops.h: Add some new opcodes from the linear IR branch.
10715
10716         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
10717
10718         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
10719         opcodes, use the REG_MEMBASE opcodes instead.
10720         
10721         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
10722         opcodes, use the REG_MEMBASE opcodes instead.
10723         
10724         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
10725         linear IR branch.
10726
10727         * mini.c (mono_op_imm_to_op): New helper function.
10728
10729         * mini-ops.h: Add some opcodes from linear IR branch.
10730
10731 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
10732
10733         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
10734         <tsv@solvo.ru>.
10735
10736 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
10737
10738         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
10739         OP_ICONV_TO_R4/R8.
10740
10741         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
10742
10743 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
10744
10745         * aot-compiler.c (emit_method_code): Add an assert.
10746
10747         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
10748         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
10749         methods.
10750
10751 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
10752
10753         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
10754         some load/store opcodes so they are consistent. 
10755         (mono_arch_emit_prolog): Simplify some code.
10756
10757         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
10758
10759         * objects.cs: Add tests for large argument offsets on ARM.
10760
10761         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
10762         stack offsets. Fixes #359651.
10763
10764         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
10765
10766         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
10767
10768         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
10769
10770         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
10771
10772         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
10773
10774         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
10775         rid of CEE_CONV_R_UN.
10776
10777         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
10778
10779 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
10780
10781         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
10782
10783         * mini.c (mono_normalize_opcodes): Add some more opcodes.
10784
10785         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
10786
10787         * cpu-amd64.md: Remove some unused opcodes.
10788
10789         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
10790
10791         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
10792
10793         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
10794         arch specific functions for its parts. Call the peephole pass after local
10795         regalloc so the prolog can compute a more accurate max_offset.
10796         
10797         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
10798         the corresponding OP_I/OP_L opcodes.
10799
10800         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
10801
10802         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
10803
10804 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10805
10806         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
10807         as they are handled in mini.c.
10808
10809         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
10810         
10811         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
10812         case since it is handled in mini.c.
10813
10814         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
10815
10816         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
10817
10818         * *.c: Use the new opcodes in the IR and back end code.
10819
10820         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
10821
10822         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
10823
10824 2008-02-06  Mark Probst  <mark.probst@gmail.com>
10825
10826         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
10827         an assert because it has a race condition.
10828
10829 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10830
10831         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
10832
10833         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
10834
10835         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
10836
10837         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
10838         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
10839
10840 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
10841
10842         * cpu-amd64.md (move): Correct the maximum size of move.
10843
10844 2008-02-05  Mark Probst  <mark.probst@gmail.com>
10845
10846         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
10847         the generic class init trampoline to return quickly if the class
10848         is already inited.
10849
10850 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
10851
10852         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
10853         issues where an 32 bit callsite cannot be patched by a 64 bit address.
10854
10855 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
10856
10857         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
10858         branch.
10859
10860 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
10861
10862         * objects.cs: Add some soft-float tests.
10863
10864         * mini.c: Fix a couple more soft-float issues.
10865
10866         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
10867
10868         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
10869         avoid a REX prefix.
10870
10871 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
10872
10873         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
10874         exception happens while compiling a virtual method.
10875
10876 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
10877
10878         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
10879         
10880         * mini-sparc.c: Fix build.
10881
10882         * mini-sparc.c (get_call_info): Add support for generic sharing.
10883
10884         * mini-exceptions.c: Add a FIXME.
10885
10886 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
10887
10888         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
10889         altstack handling code.
10890
10891         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
10892         
10893         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
10894
10895         * mini-s390.c: Add support for generic sharing.
10896
10897         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10898         Fix CAS on s390.
10899         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10900
10901         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
10902
10903         * mini-s390x.c: Add support for generic sharing.
10904         
10905         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10906         Fix CAS on ia64.
10907         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10908
10909         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
10910         can be used since it takes a 16 bit signed immediate.
10911
10912         * inssel-s390x.brg: Fix OP_SETRET.
10913
10914         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
10915
10916         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
10917
10918         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
10919
10920         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
10921
10922         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10923         in one place.
10924
10925         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10926         stuff.
10927
10928         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10929         of the unused mono_arch_patch_delegate_trampoline stuff.
10930
10931 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * basic-long.cs: Move the fp related tests to basic-float.cs.
10934
10935         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10936
10937         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10938
10939         * basic-calls.cs: Add a test for proper float argument passing.
10940
10941         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10942         if the context corresponds to an exception received through a signal.
10943
10944         * exceptions.cs: Add a test for nullref handling at the start of a try
10945         clause.
10946
10947         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10948
10949         * jit-icalls.c (mono_break): New JIT icall.
10950
10951         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10952
10953         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10954
10955 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10956
10957         * cpu-*.md: Get rid of unused opcodes.
10958
10959         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10960
10961         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10962         by all platforms.
10963
10964         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10965         define.
10966
10967         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10968         the arch independent trampoline code in mini-trampolines.c.
10969
10970         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10971
10972         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10973
10974         * mini-s390.h: Remove an unused define.
10975         
10976         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10977         the arch independent trampoline code in mini-trampolines.c.
10978
10979         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10980
10981 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10982
10983         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10984
10985         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10986
10987         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10988
10989         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10990
10991         * cpu-amd64.md: Use smaller sizes for int opcodes.
10992
10993         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10994
10995         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10996         objects.cs.
10997
10998         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10999         debugging.
11000
11001         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11002         instead of though a pointer to save an indirection when accessing elements of
11003         the array.
11004
11005         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11006         some typos.
11007         (NOT_IMPLEMENTED): New helper macro.
11008         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11009         of a bb.
11010
11011         * *.c: Use the new helper macro.
11012
11013 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11014
11015         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11016
11017 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11018
11019         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11020         stack slots.
11021
11022 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
11023
11024         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
11025         profiling is enabled.
11026         
11027         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
11028         the end.
11029         (mono_arch_emit_prolog): Add more first bblock optimizations.
11030
11031         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
11032         in order if possible.
11033         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
11034         bblock, since the arguments are still in their original registers.
11035
11036         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
11037
11038 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
11039
11040         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
11041         as well.
11042
11043         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
11044         offset 0.
11045
11046         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
11047
11048         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
11049         process async exceptions received while in unmanaged code.
11050
11051         * mini.c (mini_init): Install a callback with the runtime which will be called
11052         when a thread receives an async exception while in unmanaged code.
11053
11054         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
11055
11056         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
11057
11058 2008-01-16  Wade Berrier  <wberrier@novell.com>
11059
11060         * cpu-g4.md:
11061         * cpu-arm.md:
11062         * cpu-s390x.md:
11063         fix build
11064
11065 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11066
11067         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
11068         compilation with sun cc.
11069
11070         * cpu-*.md: Fix the build.
11071
11072         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
11073
11074         * mini-amd64.h: Add some comments to the MonoLMF structure.
11075
11076         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
11077         
11078         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
11079         in the LMF structure if possible. This saves two instructions in the
11080         managed->native wrappers.
11081
11082         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
11083
11084 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11085
11086         * generic-sharing.c: New type argument lookup code which uses the
11087         runtime generic context template.
11088
11089 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11090
11091         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
11092
11093         * mini-arm.c (add_general): Fix arm eabi parameter passing.
11094         (mono_arch_output_basic_block): Fix localloc implementation.
11095
11096         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
11097
11098         * mini-ia64.c (peephole_pass): Fix ia64 build.
11099
11100         * mini-amd64.c (peephole_pass): Fix a warning.
11101         
11102         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
11103         at a constant offset from sp/fp.
11104
11105         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
11106         instead of obtaining it from *lmf in the managed method case.
11107
11108 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11109
11110         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
11111
11112 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
11113
11114         * mini.h (MonoInstList): New type.
11115         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
11116         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
11117         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
11118         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
11119         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
11120         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
11121         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
11122         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
11123         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
11124         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
11125         MONO_INST_LIST_FOR_EACH_ENTRY,
11126         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
11127         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
11128         mono_inst_list_first, mono_inst_list_last,
11129         mono_inst_list_next, mono_inst_list_prev): New instruction
11130         list handling interfaces.
11131         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
11132         list head 'ins_list'.
11133         (MonoInst): Replace next pointer with list head 'node'.
11134         (MonoCallInst): Make 'out_args' a MonoInstList.
11135         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
11136         (MonoCompile): Delete reverse_inst_list and
11137         reverse_inst_list_len.
11138         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
11139         mono_arch_lowering_pass, mono_arch_local_regalloc,
11140         mono_arch_output_basic_block, mono_arch_emit_prolog):
11141         Convert to new instruction lists.
11142         (insert_after_ins): Delete.
11143         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
11144         instruction lists.
11145         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
11146         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
11147         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
11148         mono_emulate_opcode, mono_emit_load_got_addr,
11149         inline_method, mono_method_to_ir, mono_print_bb_code,
11150         print_dfn, decompose_pass, nullify_basic_block,
11151         replace_out_block_in_code, remove_block_if_useless,
11152         merge_basic_blocks, move_basic_block_to_end,
11153         try_unsigned_compare, optimize_branches, mono_print_code,
11154         mini_select_instructions, remove_critical_edges): Likewise.
11155         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
11156         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
11157         mono_arch_output_basic_block, mono_arch_emit_prolog):
11158         Likewise.
11159         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
11160         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11161         mono_arch_output_basic_block): Likewise.
11162         (inst_list_prepend, insert_after_ins): Delete.
11163         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
11164         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
11165         instruction lists.
11166         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
11167         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
11168         mono_arch_emit_prolog): Likewise.
11169         * cfold.c (mono_constant_fold): Likewise.
11170         * liveness.c (visit_bb, mono_analyze_liveness,
11171         optimize_initlocals): Likewise.
11172         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
11173         * graph.c (mono_draw_code_cfg): Likewise.
11174         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
11175         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
11176         mono_ssa_cprop): Likewise.
11177         * abcremoval (get_relations_from_previous_bb, process_block):
11178         Likewise.
11179         * local-propagation (mono_cprop_invalidate_values,
11180         mono_local_cprop_bb): Likewise.
11181         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
11182         peephole_pass, mono_arch_output_basic_block,
11183         mono_arch_emit_prolog): Likewise.
11184         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
11185         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11186         mono_arch_emit_prolog): Likewise.
11187         (insert_after_ins): Delete.
11188         * aliasing.c (print_code_with_aliasing_information,
11189         mono_build_aliasing_information, mono_aliasing_deadce):
11190         Convert to new instruction lists.
11191         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
11192         peephole_pass, NEW_INS, mono_arch_lowering_pass,
11193         mono_arch_local_regalloc, mono_arch_output_basic_block):
11194         Likewise.
11195         (insert_after_ins): Delete.
11196         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
11197         peephole_pass, mono_arch_output_basic_block): Convert to
11198         new instruction lists.
11199         * mini-codegen (InstList, inst_list_prepend,
11200         insert_after_ins): Delete.
11201         (insert_before_ins, get_register_force_spilling,
11202         get_register_spilling, free_up_ireg, free_up_reg,
11203         create_copy_ins, create_spilled_store, alloc_int_reg,
11204         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
11205         to new instruction lists.
11206         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
11207         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11208         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
11209         (insert_after_ins): Delete.
11210         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
11211         mono_arch_local_regalloc, mono_arch_output_basic_block,
11212         mono_arch_call_opcode): Convert to new instruction lists.
11213         (insert_after_ins): Delete.
11214         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
11215         peephole_pass, mono_arch_output_basic_block,
11216         mono_arch_emit_prolog): Convert to new instruction lists.
11217
11218 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
11219
11220         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
11221
11222         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
11223         Fixes #353182.
11224
11225         * Makefile.am (version.h): Make this work with non-bash shells.
11226
11227 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11228
11229         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
11230
11231 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
11234         the InitializeArray optimization.
11235
11236 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
11237
11238         * mini.c driver.c: Don't include os/gc_wrapper.h.
11239
11240 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11241
11242         * mini.c (print_jit_stats): Print GC statistics if available.
11243
11244 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
11245
11246         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
11247
11248 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
11251
11252 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
11253
11254         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
11255         
11256         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
11257
11258         * driver.c (mono_main): Ditto.
11259
11260 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
11261
11262         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
11263
11264         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
11265         in the vtable can't be encoded.
11266         (compile_method): Ditto.
11267
11268 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
11269
11270         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
11271         defined.
11272
11273         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
11274         lmf->rbp.
11275
11276         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
11277         the top LMF entry belongs to the current method.
11278
11279         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
11280
11281 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
11282
11283         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
11284         
11285         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
11286
11287         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
11288
11289         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
11290
11291         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
11292
11293         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
11294         implementation.
11295
11296         * basic-float.cs: Add an ulong->double cast test.
11297
11298 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
11299
11300         * mini.c (mono_method_to_ir): Fix a warning.
11301
11302 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
11303
11304         * mini-ops.h: Add OP_SWITCH.
11305
11306         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
11307         CEE_SWITCH in back-end code, use OP_SWITCH instead.
11308
11309 2007-12-11  Geoff Norton  <gnorton@novell.com>
11310
11311         * mini-s390x.c: Minor change to the MAX() define to allow
11312         it to compile with other gcc versions.
11313
11314 2007-12-11  Geoff Norton  <gnorton@novell.com>
11315
11316         * cpu-s390x.md:
11317         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
11318
11319 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11320
11321         exceptions-arm.c (mono_arch_get_restore_context): Restore
11322         the frame pointer.
11323
11324         exceptions-arm.c (throw_exception): Save the frame pointer.
11325         This is a partial fix for #323747. Only the client side is
11326         fixed.
11327
11328 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11329
11330         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
11331         was using an unrelated variable to log the class which
11332         needed the cctor to be called. This was crashing on arm.
11333
11334 2007-12-09  Robert Jordan  <robertj@gmx.net>
11335
11336         * mini-x86.c (mono_arch_emit_epilog):
11337         Consider all kinds of 64-bit types. Fixes #323114.
11338
11339 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
11340
11341         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
11342
11343 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11344
11345         * mini-amd64.c (peephole_pass): Add a missing instruction check.
11346
11347 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11348
11349         * mini.c: run type ctor before allocating an object, not only
11350         when running it's constructor method (fixes at least part of bug #342507).
11351
11352 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11353         
11354         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
11355         
11356         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
11357         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
11358         function.
11359
11360         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
11361         mono_generic_class_init_trampoline () the same as it is done with the other
11362         trampolines.
11363
11364         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
11365         aot-runtime.c aot-compiler.c: Implement AOT support.    
11366
11367 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11368
11369         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
11370         build for archs which don't have the vtable trampoline defined
11371         yet.
11372
11373 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11374
11375         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
11376
11377         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
11378
11379         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11380
11381         * tramp-<ARCH>.c: Use the new helper function.
11382
11383 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11384
11385         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11386         trampoline call, which takes a vtable argument.
11387
11388         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11389         OP_TRAMPCALL_VTABLEs like other calls.
11390
11391         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11392         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11393         call.  Implemented a support function which fetches the vtable
11394         from a register set.
11395
11396         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11397         Implemented a generic class init trampoline, using the
11398         OP_TRAMPCALL_VTABLE opcode.
11399
11400         * mini.c: Implemented static field access when sharing generic
11401         code.  This implies initing the class using the new
11402         OP_TRAMPCALL_VTABLE call.
11403
11404 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11405
11406         * mini.c: Don't compile methods with sharing enabled if their
11407         classes are disabled for sharing.
11408
11409 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11410
11411         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11412         opcodes. Fixes #346563.
11413
11414         * objects.cs: Add a new test.
11415
11416         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
11417
11418         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
11419         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
11420
11421 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11422
11423         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
11424
11425 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
11426
11427         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
11428         code stream.
11429
11430 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
11431
11432         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
11433
11434         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
11435         optimization in the AOT case.
11436         
11437 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
11438
11439         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
11440         
11441         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11442
11443         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
11444
11445         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
11446
11447         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
11448         is created by the inlined delegate ctor.
11449
11450         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
11451
11452         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
11453
11454 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
11455
11456         * cpu-x86.md: Fix the length of ckfinite.
11457
11458 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
11461         
11462         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
11463         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
11464
11465         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
11466
11467         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
11468         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
11469
11470 2007-11-28  Martin Baulig  <martin@ximian.com>
11471
11472         * mini-x86.c
11473         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
11474         after creating the trampoline.
11475
11476 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
11477
11478         * aot-runtime.c (load_aot_module): Check runtime version if needed.
11479
11480         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
11481         the same version.
11482
11483         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
11484         instead of the calling method to help AOT.
11485
11486         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
11487
11488 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
11489
11490         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
11491         is defined.
11492
11493 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
11494
11495         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
11496         
11497         * aot-compiler.c (compile_method): Correct check for generic method definitions.
11498         (encode_method_ref): No need to handle generic method definitions specially.
11499
11500         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
11501
11502         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
11503         decode_klass_info.
11504
11505         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
11506         encode_klass_info.
11507         (compile_method): Enable generic sharing.
11508
11509 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
11510
11511         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
11512         (mini_method_compile): Add preliminary support for AOTing shared generic code.
11513
11514         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
11515         generic code.
11516
11517         * mini-trampolines.c: Fix a warning.
11518
11519         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
11520         NEW_PCONST.
11521         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
11522         (generic_class_is_reference_type): Remove unused function.
11523
11524         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
11525         in the generic vtable trampoline case.
11526
11527         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
11528         
11529         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
11530         return an AOT method based on a vtable slot.
11531
11532         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
11533
11534         * mini.c (mini_get_vtable_trampoline): Export this.
11535
11536 2007-11-22  Martin Baulig  <martin@ximian.com>
11537
11538         * debug-debugger.h
11539         (MonoDebuggerInfo): Move `debugger_version' up.
11540
11541 2007-11-22  Martin Baulig  <martin@ximian.com>
11542
11543         * mini-amd64.c
11544         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
11545
11546         * mini-trampolines.c
11547         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
11548         after compiling the method.
11549
11550 2007-11-20  Martin Baulig  <martin@ximian.com>
11551
11552         * debug-mini.c
11553         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
11554         (mono_debugger_remove_breakpoint): Likewise.
11555         (mono_debugger_check_breakpoints): Likewise.
11556
11557         * debug-debugger.c: Implement the new breakpoint interface here.
11558
11559 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
11560
11561         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
11562         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
11563
11564         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
11565
11566 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
11569
11570         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
11571         mini.c.
11572
11573         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
11574         mini.c.
11575
11576         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
11577         returning a vtype in a register.
11578
11579         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
11580         here from the arch specific code.
11581
11582         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
11583         mini.c.
11584
11585         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
11586         (mono_arch_emit_prolog): Increment maximum prolog size.
11587
11588         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
11589         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
11590
11591         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
11592         MonoGenericSharingContext.
11593
11594         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
11595         MonoGenericSharingContext. Allocate memory from the cfg mempool.
11596
11597 2007-11-15  Mark Probst  <mark.probst@gmail.com>
11598
11599         * mini.c, mini.h, generic-sharing.c: Functions for producing code
11600         which extract fields out of the runtime generic context.  Full
11601         sharing of the NEWARR opcode.
11602
11603 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11604
11605         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
11606         --enable-minimal=ssa.
11607
11608 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
11609
11610         * mini-trampolines.c (mono_delegate_trampoline): Update after 
11611         mono_marshal_get_delegate_invoke () signature change.
11612
11613 2007-11-13  Mark Probst  <mark.probst@gmail.com>
11614
11615         * mini.c: Removed the shared context in favor of the generic
11616         sharing context.  Allocate the MonoJitInfo structure with room for
11617         the generic sharing context if it's needed.
11618
11619         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
11620         domain-internals.h now.
11621
11622         * mini-x86.c: Pass the generic sharing context to get_call_info ().
11623
11624         * generic-sharing.c: Several changes for working without a shared
11625         context and instead operating on open types instead.
11626
11627 2007-11-12  David S. Miller  <davem@davemloft.net>
11628
11629        * inssel-sparc.brg: Fix double instruction emit.
11630
11631 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
11632
11633         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
11634         Get/Set/Address methods.
11635         
11636         * mini.c debug-debugger.c mini-trampolines.c: Update after 
11637         mono_marshal_get_delegate_invoke signature change.
11638
11639 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11640
11641         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
11642         This can happens with dynamic methods. Fixes the other bug in #322722.
11643
11644 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11645
11646         * tramp-arm.c (mono_arch_patch_callsite): Support patching
11647         BX call sequence.
11648
11649         * mini-arm.c (arm_patch): Implement patching of BX call
11650         sequence. Fixes one of the bugs in #322722.
11651
11652 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
11653
11654        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
11655        under Linux.  We only need to flush every 32-byte cache line.    
11656
11657 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
11658
11659         * mini.c:
11660         move_basic_block_to_end: Add branches when needed, eventually creating
11661         a new BB.
11662         optimize_branches: added a parameter that tells if it's ok to create
11663         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
11664         and avoid calling move_basic_block_to_end when it's not ok.
11665         Fixes bug 318677.
11666
11667 2007-11-07  Mark Probst  <mark.probst@gmail.com>
11668
11669         * mini.c: Abort inlining call to InitializeArray if something
11670         looks wrong.  Let the icall handle it, which now has proper safety
11671         checks.
11672
11673 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
11674
11675         * mini.c (mono_spill_call): add support for soft-float.
11676
11677         * mini.c (mono_method_to_ir): add support for soft-float
11678         to inlined functions that return float.
11679
11680         * mini.c (mono_method_to_ir): add support for soft-float
11681         to cee_stsfld opcode on float fields.
11682
11683 2007-11-05  Geoff Norton  <gnorton@novell.com>
11684
11685         * mini-x86.h: Fix the structure access for X86 Leopard.
11686
11687
11688 2007-11-05  Martin Baulig  <martin@ximian.com>
11689
11690         * mini-trampolines.c
11691         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
11692         after compiling the method to notify the debugger.
11693
11694 2007-11-05  Martin Baulig  <martin@ximian.com>
11695
11696         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
11697
11698 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
11699
11700         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
11701         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
11702
11703 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
11704
11705         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
11706         native-to-managed wrappers.
11707         
11708 2007-11-01  Geoff Norton  <gnorton@novell.com>
11709
11710         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
11711         members.
11712
11713 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11714
11715         * mini.c, mini-x86.c: when getting back from unmanaged code
11716         to managed via a marshaled delegate we also need to set the
11717         right domain.
11718
11719 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11720
11721         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
11722         for amd64.
11723
11724 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11725
11726         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
11727         let the debugger or other external agents to tell the JIT when
11728         a sw breakpoint has been inserted in the code that the JIT needs
11729         to be able to inspect.
11730
11731 2007-10-31  Martin Baulig  <martin@ximian.com>
11732
11733         * debug-debugger.h
11734         (MonoDebuggerInfo): Remove `runtime_class_init'.
11735
11736 2007-10-30  Martin Baulig  <martin@ximian.com>
11737
11738         * debug-mini.h
11739         (mono_debugger_thread_created): Added `MonoThread *' argument.
11740         (mono_debugger_extended_notification): New public method.
11741         (mono_debugger_trampoline_compiled): New public method.
11742
11743         * debug-mini.c
11744         (MonoDebuggerThreadInfo): Added `thread' and
11745         `extended_notifications' fields.
11746
11747         * debug-debugger.c
11748         (debugger_executable_code_buffer): New static variable.
11749
11750         * debug-debugger.h
11751         (MonoDebuggerInfo): Added `executable_code_buffer',
11752         `executable_code_buffer_size', `breakpoint_info_area',
11753         `breakpoint_table' and `breakpoint_table_size'.
11754
11755 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
11756
11757         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
11758         that IP  either is an unused value or the vtable pointer. IMT 
11759         calls use vtable + offset now. Reduced by almost half the size
11760         of IMT entries.
11761
11762 2007-10-26  Jonathan Chambers <joncham@gmail.com>
11763
11764         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
11765         defines to access param registers. Replace long usage with
11766         gsize as sizeof(long) != sizeof(void*) on Win64.
11767
11768         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
11769         on Win64. Fix intrinsic, use _AddressOfReturnAddress
11770         instead of non-existant _GetAddressOfReturnAddress.
11771
11772         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
11773         param registers. Save/restore %rdi and %rsi in MonoLMF.
11774
11775         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
11776         param registers. Modify (throw_exception) signature to take 
11777         %rdi and %rsi on Win64. 
11778
11779         Code is contributed under MIT/X11 license.
11780
11781 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11782
11783         * helpers.c: unlink debugging output files.
11784
11785 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
11786
11787         * mini.c: Move mono_create_ftnptr () to object.c.
11788
11789 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
11790
11791         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
11792         optional. This function can now be used to disassemble code generated
11793         outside the JIT such as trampolines and IMT thunks.
11794
11795         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
11796
11797         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
11798         vtable pointer from a ldr instruction.
11799
11800         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
11801         new IMT call sequence.
11802
11803         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
11804         call sequence for interface invocations.
11805
11806         * mini-arm.c (mono_arch_emit_imt_argument): added, required
11807         for imt support. This function is empty since IMT on ARM requires no
11808         special handling on the IR side.
11809
11810         * mini-arm.c (mono_arch_find_imt_method): added, required for
11811         imt support.
11812
11813         * mini-arm.c (mono_arch_find_this_argument): added, required
11814         for imt support.
11815
11816         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
11817         a ldr instruction to load a value stored in the code stream.
11818
11819         * mini-arm.c (mono_arch_build_imt_thunk):added, required
11820         for imt support.
11821
11822
11823 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
11824
11825         * mini.c (mini_init): Install the jump trampoline callback.
11826
11827 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11828
11829         * mini-trampolines.c: handle synchronized methods with the common
11830         vtable trampoline (bug #335601).
11831
11832 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
11833
11834         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
11835
11836         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
11837         64 bit platforms.
11838
11839         * mini-ia64.h mini-ia64.c: Add support for IMT.
11840
11841         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
11842         prolog. Fixes #331958.
11843
11844 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
11845
11846         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
11847
11848 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11849
11850         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
11851         trampoline.
11852
11853 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11854
11855         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
11856         trampoline.
11857
11858 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
11859
11860         * mini-x86.c, mini-x86.h: x86 support for the common vtable
11861         trampoline.
11862
11863 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11864
11865         * mini-trampolines.c: changed the magic rampoline to understand
11866         the common vtable trampoline method: the method to invoke is
11867         determined by the vtable displacement of the call.
11868
11869 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11870
11871         * mini.c, mini.h: register the common vtable trampoline if the
11872         architecture supports it.
11873
11874 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11875
11876         * cpu-amd64.md: use the correct max length for tls_get.
11877
11878 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
11879
11880         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
11881         CEE_STELEM_ANY. Fixes #333696.
11882
11883 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11884
11885         * exceptions-x86.c: provide more graceful handling of the case where
11886         we followed a bogus function pointer from managed code (bug #332866).
11887
11888 2007-10-11  Mark Probst  <mark.probst@gmail.com>
11889
11890         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
11891         replaces the generic_shared flag and will carry more information
11892         in the future.
11893
11894         * generic-sharing.c: Added mini_type_stack_size() which allows
11895         allows open types if given a generic sharing context.
11896         mini_get_basic_type_from_generic() takes a
11897         MonoGenericSharingContext* instead of a MonoCompile* now.
11898
11899         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
11900         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
11901         mini-sparc.c, mini-x86.c: Trivial changes required by the two
11902         changes above.  Just passing arguments through to the right
11903         places.
11904
11905 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11906
11907         * mini-arm.c: unify the call emission to emit_code_seq().
11908
11909 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
11910
11911         * tramp-arm.c: reduced the trampoline size.
11912
11913 2007-10-10  Mark Probst  <mark.probst@gmail.com>
11914
11915         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
11916         variable handling out of arch-specific code.
11917
11918 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
11919
11920         * mini-arm.c: implemented fast delegate dispatch.
11921
11922 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11923
11924         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11925         that fp elimination is turned off if the space required by locals is too
11926         big. Fixes #331958.
11927
11928 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11929
11930         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11931         ARM to the new style trampoline.
11932
11933 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11934
11935         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11936
11937         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11938
11939 2007-10-09  Martin Baulig  <martin@ximian.com>
11940
11941         * debug-debugger.h
11942         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11943         `field_info_offset_offset'.     
11944
11945 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11946
11947         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11948         removed more internal usage of the r11 register and made it available
11949         to the register allocator.
11950
11951 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11952
11953         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11954         when sharing generics and treat type variables as references.
11955
11956 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11957
11958         * mini-ppc.c: started removing the internal uses of register r11
11959         to eventually allow the register allocator to manage it as an
11960         additional available register.
11961
11962 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11963
11964         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11965
11966 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11967
11968         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11969         specific trampolines as they are not performance critical as a jump
11970         target (maybe align as before only for AOT code?). This saves about
11971         200 KB of native code on x86 for monodevelop startup.
11972
11973 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11974
11975         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11976         monodevelop startup.
11977
11978 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11979
11980         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11981
11982         * mini-sparc.h mini-sparc.c: Implement IMT support.
11983
11984         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11985         its smaller and doesn't clobber sparc_g1.
11986
11987         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11988
11989 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11990
11991         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11992
11993 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11994
11995         * mini-ppc.c: implemented fast delegate invocation.
11996
11997 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11998
11999         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12000
12001 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12002
12003         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12004         code to the new style trampoline in preparation for IMT support.
12005
12006 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12007
12008         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12009         systems already. This also reduces the specific trampiline sizes and
12010         prepares for the use of r12 as the IMT identifier register.
12011
12012 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12013
12014         * mini-mips.h: endianess fix (simplified from a patch by
12015         Thomas Kunze <thommy@tabao.de>, bug #323737).
12016
12017 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12018
12019         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12020         to access ucontext fields and enable netbsd support
12021         (partially from Magnus Henoch <mange@freemail.hu>).
12022
12023 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12024
12025         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
12026         use the preprocessor from the CPP env var if it is set.
12027
12028 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12029
12030         * mini-trampolines.c: fixed an assertion and moved it earlier in the
12031         code, before interface_offset gets used.
12032
12033 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
12036         mono_class_setup_vtable () before accessing klass->vtable.
12037
12038 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
12039
12040         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
12041         hackish.
12042
12043 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12044
12045         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
12046         IMT slots (this saves hundreds of KB of memory in programs like
12047         IronPython and Monodevelop).
12048
12049 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12050
12051         * mini.c: print the delegate counter.
12052
12053 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
12054
12055         * mini-x86.c: make it easier to enable the debugging code for IMT
12056         slots.
12057
12058 2007-09-28  Martin Baulig  <martin@ximian.com>
12059
12060         * debug-debugger.h
12061         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
12062         `mono_method_klass_offset' and `mono_method_token_offset'.
12063
12064 2007-09-20  Mark Probst  <mark.probst@gmail.com>
12065
12066         * mini.c: First generics sharing implementation.  Can only share
12067         in very simple cases.  If sharing doesn't work it falls back to
12068         dedicated compilation.
12069
12070         * mini.h: Flag in MonoCompile to specify whether generic
12071         compilation is shared.  Flags enum for marking which generic inst
12072         of a context is used.  Prototypes for helper functions.
12073
12074         * generic-sharing.c: Helper functions for generic method sharing.
12075
12076         * optflags-def.h: Optimization flag (gshared) for enabling generic
12077         method sharing added.
12078
12079         * Makefile.am: generic-sharing.c added.
12080
12081 2007-09-19 Daniel Nauck <dna@mono-project.de>
12082
12083         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
12084
12085 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
12086         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
12087         fixes bug 325507.
12088
12089 2007-09-19  Martin Baulig  <martin@ximian.com>
12090
12091         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
12092         mono_debug_cleanup() is now part of mono_cleanup().
12093
12094 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
12095
12096         * driver.c (mono_main): Fix a warning.
12097
12098 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
12099
12100         * aot-compiler.c: Optimize various parts when processing large assemblies.
12101         Fixes ##325568.
12102
12103         * mini.c (mono_patch_info_hash): Improve hash function.
12104
12105 2007-09-14  Jonathan Chambers <joncham@gmail.com>
12106
12107         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
12108         
12109         Code is contributed under MIT/X11 license.
12110
12111 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12112
12113         * mini.c (mini_init): Fix a leak.
12114
12115         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
12116
12117 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12118
12119         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
12120
12121 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12122
12123         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
12124
12125 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
12126
12127         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
12128         variance tests.
12129
12130         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
12131
12132         * mini.c (handle_alloc): Enable managed allocators in AOT code.
12133
12134         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
12135
12136         * aot-runtime.c (decode_patch_info): Ditto.
12137
12138 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12139
12140         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
12141         static case. Cache delegates in architecture specific code, 
12142         based on number of parameters.
12143         
12144         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
12145         in architecture specific code, based on number of parameters.
12146         
12147         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
12148         caching happen in architecture specific code now.
12149         
12150         Code is contributed under MIT/X11 license.
12151
12152 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12153
12154         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
12155         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
12156         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
12157
12158         Code is contributed under MIT/X11 license.
12159
12160 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12161         * mini.c: (mono_thread_abort) Fixed bug #82416.
12162
12163 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12164
12165         * mini.: hook the new managed GC allocation feature into the JIT.
12166
12167 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12168
12169         * mini.c: implementation for the new runtime tls opcode.
12170
12171 2007-09-11  Martin Baulig  <martin@ximian.com>
12172
12173         * debug-debugger.h
12174         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
12175         `mono_method_inflated_offset'.
12176
12177 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
12178
12179         * driver.c mini.h mini.c: Add a new devel command line option for injecting
12180         async exceptions into a method.
12181
12182         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
12183         purpose of testing whenever the unwinder works at every instruction.
12184
12185 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12186
12187         * mini.c: check accessibility of method used in ldftn (fixes
12188         bug #82635).
12189
12190 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
12191
12192         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
12193
12194         * inssel.brg: Fix a warning.
12195
12196 2007-09-03  Martin Baulig  <martin@ximian.com>
12197
12198         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
12199         now takes the `main_method' as argument.
12200
12201 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
12202
12203         * cpu-sparc.md (endfilter): Add missing src1:i argument.
12204
12205 2007-08-30  Jonathan Chambers <joncham@gmail.com>
12206
12207         * driver.c: include the cil-coff.h header on Windows.
12208         
12209         Code is contributed under MIT/X11 license.
12210
12211 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12212
12213         * mini.c, driver.c: don't include the cil-coff.h header.
12214
12215 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12216
12217         * mini.c: flag places that needs fixes fo soft-float support.
12218
12219 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
12220
12221         * mini.h, inssel-float.brg: fix soft-float constant loads on big
12222         endian systems (partially from Dean Jenkins, bug #81924).
12223
12224 2007-08-28  Mark Probst  <mark.probst@gmail.com>
12225
12226         * mini.c (check_linkdemand): Remove embedded reference object in
12227         call to LinkDemandSecurityException.
12228         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
12229         with an IntPtr instead of a reference object.
12230
12231 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
12232
12233         * mini.c (handle_initobj): Handle alignment properly.
12234
12235         * inssel.brg (mini_emit_memset): Ditto. 
12236
12237         * inssel.brg (mini_emit_memcpy): Ditto. 
12238
12239         * inssel-sparc.brg: Ditto.              
12240
12241         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
12242
12243 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
12244
12245         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
12246         exceptions raised in unmanaged code. Fixes part of #82594.
12247
12248 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12249
12250         * mini.c (mono_method_to_ir), declsec.c
12251         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
12252
12253 2007-08-22  Martin Baulig  <martin@ximian.com>
12254
12255         * debug-mini.h
12256         (MonoDebuggerThreadInfo): New typedef.
12257         (mono_debugger_thread_table): New global variable.
12258         (mono_debugger_thread_created): New public function.
12259         (mono_debugger_thread_cleanup): New public function.
12260
12261         * debug-debugger.h
12262         (MonoDebuggerInfo):
12263         - removed `get_current_thread' and `lookup_assembly'.
12264         - removed `data_table'.
12265         - added `thread_table'.
12266
12267         * mini.c
12268         (mono_thread_start_cb): Call mono_debugger_thread_created().
12269         (mono_thread_attach_cb): Likewise.
12270         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
12271         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
12272         initial domain.
12273
12274         * driver.c (mono_main): Move mono_debug_init() up, before calling
12275         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
12276
12277 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12278
12279         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
12280         together when passing several arguments of type double (gives a small
12281         speedup and saves a few bytes of generated code).
12282
12283 2007-08-20  Jb Evain  <jbevain@novell.com>
12284
12285         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
12286
12287 2007-08-20  Jb Evain  <jbevain@novell.com>
12288
12289         * mini.c (mono_method_to_ir): throw MethodAccessException
12290         and FieldAccessException instead of InvalidProgramException.
12291
12292 2007-08-20  Mark Probst  <mark.probst@gmail.com>
12293
12294         * mini.c: CoreCLR security checks.
12295
12296         * mini.h: Removed MonoSecurityMode (moved to
12297         metadata/security-manager.h) and mono_security_mode global var
12298         (replaced by set/get functions in security-manager.h).
12299
12300         * driver.c: Added "core-clr-test" security mode for testing.  Used
12301         set-function for setting security mode.
12302
12303 2007-08-17  Mark Probst  <mark.probst@gmail.com>
12304
12305         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
12306         the new jit_info_table.
12307
12308         * driver.c: Test code for the new jit_info_table (enabled by the
12309         define MONO_JIT_INFO_TABLE_TEST).
12310
12311 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
12312
12313         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
12314         detection of call <REG> instruction sequence. Fixes build on freebsd.
12315
12316 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
12317
12318         * mini-exceptions.c: Fix a warning.
12319
12320 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
12321
12322         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
12323         stack overflow handling code on amd64 too.
12324
12325         * mini-exceptions.c (mono_setup_altstack): Make this use 
12326         mono_thread_get_stack_bounds ().
12327
12328         * mini-x86.h: Disable sigaltstack on solaris x86.
12329
12330 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
12331
12332         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
12333
12334 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
12335
12336         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
12337
12338 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
12339
12340         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
12341
12342         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
12343
12344 2007-08-03  Neale Ferguson <neale@sinenomine.net>
12345
12346         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
12347         due to alignment.
12348
12349 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12350
12351         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
12352         to be emitted (bug #82281).
12353
12354 2007-08-01  Martin Baulig  <martin@ximian.com>
12355
12356         Merged the `debugger-dublin' branch.
12357
12358         * debug-debugger.h (MonoDebuggerInfo):
12359         Removed the `old_*' compatibility entries.
12360         Added `debugger_version' and `data_table'.
12361         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
12362         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
12363
12364         * debug-mini.c
12365         (MiniDebugMethodBreakpointInfo): Add `address_list'.
12366         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
12367         instead of a `gconstpointer'.
12368         (mono_debugger_insert_method_breakpoint): Return a
12369         `MonoDebugMethodAddressList *'.
12370
12371 2007-06-28  Martin Baulig  <martin@ximian.com>
12372
12373         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12374
12375 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12376
12377         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
12378         __builtin_frame_address () since it is broken on older gcc versions.
12379
12380 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12381
12382         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12383         on the stack overflow handling and made the managed stack overflows
12384         catchable in most cases using soft guard pages.
12385         * exceptions-x86.c: added code to restore the protection in the soft
12386         guard pages at the end of exception handling.
12387
12388 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12389
12390         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12391
12392 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12393
12394         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12395         exception handling.
12396
12397 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12398
12399         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12400         signal handling support until it has been ported to the new mechanism.
12401         * mini.c: fixed stack overflow detection and use the new
12402         architecture code  to handle signals on the altstack.
12403
12404 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12405
12406         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12407         stack overflows on the alt stack.
12408
12409 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12410
12411         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12412         stack overflows on the alt stack.
12413
12414 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
12415
12416         * exceptions-ppc.c: cleanup preparing for altstack support.
12417
12418 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12419
12420         * exceptions-arm.c: cleanup preparing for altstack support.
12421
12422 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12423
12424         * mini.c (print_jit_stats): Output hazard pointer stats.
12425
12426 2007-07-26  Mark Probst  <mark.probst@gmail.com>
12427
12428         * driver.c, mini.c: Replaced security mode flags with a single
12429         enum variable.
12430
12431 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12432
12433         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
12434
12435 2007-07-25  Mark Probst  <mark.probst@gmail.com>
12436
12437         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
12438         (which doesn't do anything yet) for activating Core CLR
12439         (Silverlight) security.
12440
12441 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12442
12443         * mini-codegen.c: work around a possible gcc bug on arm.
12444
12445 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12446
12447         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
12448         message for platforms that don't support AOT compilation.
12449
12450 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12451
12452         * mini.h, mini.c, driver.c: temporary smcs hack.
12453
12454 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
12455
12456         * mini-arm.h, mini-arm.c: arm EABI fixes.
12457
12458 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12459
12460         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
12461         case.
12462
12463         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
12464         trampolines taking a method argument.
12465
12466         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
12467
12468         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
12469         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
12470
12471         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
12472         JIT compilation throws an exception. Fixes #82050.
12473
12474 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12475
12476         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
12477         with the MONO_EXCEPTION_ defines.
12478
12479 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
12480
12481         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
12482         #82117.
12483         
12484         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
12485         the cause of an assertion.
12486
12487 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
12488
12489         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
12490         removed.
12491
12492 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12493
12494         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
12495         assert. Should fix #82103.
12496
12497 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12498
12499         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
12500         here too. Fixes #82095.
12501
12502         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
12503         addresses.
12504
12505         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
12506
12507         * mini-amd64.h: Enable IMT for amd64.
12508         
12509         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
12510
12511 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
12512
12513         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
12514
12515 2007-07-12  Mark Probst  <mark.probst@gmail.com>
12516
12517         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
12518         as soon as check_linkdemand sets an exception_type.
12519
12520 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12521
12522         * mini-x86.c: fixed offsets for IMT call sequence.
12523         * mini-x86.h: enable IMT again.
12524
12525 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12526
12527         * trace.c (mono_trace_enter_method): Decode MonoType too.
12528
12529         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
12530
12531         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
12532
12533         * mini-amd64.c: Add preliminary IMT implementation.
12534         
12535 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12536
12537         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
12538         understand the new IMT-base interface invocation (thanks to
12539         Daniel Nauck for the report and the remote debugging session).
12540
12541 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12542
12543         * mini-x86.c: size and speed optimizations for the IMT bsearch.
12544
12545 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12546
12547         * Makefile.am (aotcheck): Make this actually use the AOTed code.
12548
12549 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
12550
12551         * mini-trampolines.c: implement AOT IMT support.
12552         * mini-x86.h: enable IMT support for wider testing.
12553
12554 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * inssel.brg (emit_imt_argument): Add aot support here.
12557
12558         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
12559
12560 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12561
12562         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
12563         of the IMT implementation, partially from massi, with my
12564         implementation of the bsearch sequence. Disabled by default until
12565         the AOT code is implemented.
12566
12567 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12568
12569         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
12570
12571         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
12572
12573 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12574
12575         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
12576         arch-independent IMT JIT code from Massimiliano
12577         Mantione (massi@ximian.com) with small cleanups from me.
12578
12579 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12580
12581         * Makefile.am: fix svn invocation to get the svn revision to be
12582         independent of the local language (build fix).
12583
12584 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12585
12586         * mini.c (inline_method): Reset cfg->exception_type if the
12587         inlining is aborted.  Fixes: 82049.
12588
12589 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
12590
12591         * mini.c: remove assert from exception handling code when exception_ptr
12592         is not set.
12593
12594 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12595
12596         * mini.c (mono_codegen): Add an assert.
12597
12598         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
12599         enter and leave code.
12600         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
12601
12602 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12603
12604         * mini-ppc.c: fixed memory corruption for localloc(0)
12605         (bug #81852).
12606
12607 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12608         
12609         * mini.c: Fix warnings.
12610
12611 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
12612
12613         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
12614         to emit better double->int conversions.
12615
12616 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12617
12618         * mini.c: the provided Min/Max optimizations are valid for unisgned
12619         ints.
12620
12621 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
12622
12623         * 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
12624
12625 2007-06-28  Miguel de Icaza  <miguel@novell.com>
12626
12627         * mini.c (mono_running_on_valgrind): Add support for reporting the
12628         method and  its boundaries to valgrind.
12629
12630 2007-06-28  Martin Baulig  <martin@ximian.com>
12631
12632         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12633
12634 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
12635
12636         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
12637
12638         * generic.2.cs: Add new test case.
12639
12640 2007-06-25  Martin Baulig  <martin@ximian.com>
12641
12642         Merged the `debugger-dublin' branch.
12643
12644         * debug-mini.c
12645         (mono_debugger_insert_method_breakpoint): New public method.
12646         (mono_debugger_remove_method_breakpoint): Likewise.
12647         (mono_debugger_check_breakpoints): New static method.
12648         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
12649
12650         * debug-debugger.h (MonoDebuggerInfo):
12651         Renamed (to keep backward compatibility in the vtable):
12652         `insert_breakpoint' -> `old_insert_breakpoint'.
12653         `remove_breakpoint' -> `old_remove_breakpoint'.
12654         `create_string' -> `old_create_string'.
12655         `lookup_class' -> `old_lookup_class'.
12656         `lookup_type' -> removed; changed into a dummy field.
12657         `lookup_assembly' -> `old_lookup_assembly'.
12658         Added (same functionality, but different signature):
12659         `create_string', `lookup_class', `lookup_assembly'
12660         Added new:
12661         `get_method_addr_or_bpt', `remove_method_breakpoint',
12662         `runtime_class_init'.
12663
12664         * debug-debugger.c: Merged the `debugger-dublin' branch.
12665
12666 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
12667
12668         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
12669         well.
12670         (peephole_pass): Likewise.
12671
12672 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
12673
12674         * driver.c: hopefully make setaffinity work also for ancient
12675         versions of linux.
12676
12677 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
12678
12679         * driver.c : win32 build fix.
12680
12681 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12682
12683         * driver.c: check for the MONO_NO_SMP env var and bind to a single
12684         processor if it is set.
12685
12686 2007-06-21  Martin Baulig  <martin@ximian.com>
12687
12688         * debug-mini.h: New file.
12689
12690         * debug-mini.c
12691         (mono_debugger_insert_breakpoint_full): Moved here from
12692         ../metadata/mono-debug-debugger.c.
12693         (mono_debugger_remove_breakpoint): Likewise.
12694         (mono_debugger_breakpoint_callback): Likewise.
12695
12696 2007-06-15  Raja R Harinath  <rharinath@novell.com>
12697
12698         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12699         changes in MonoGenericClass.
12700
12701 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
12702
12703         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
12704
12705 2007-06-14  Raja R Harinath  <rharinath@novell.com>
12706
12707         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12708         removal of MonoGenericMethod.
12709
12710 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12711
12712         * mini-exceptions.c: hooks for the exception events profiling API.
12713
12714 2007-06-14  Randolph Chung  <tausq@debian.org>
12715
12716         * Makefile.ma: Add hppa target.
12717         * mini-arch.h: Include mini-hppa.h
12718         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
12719         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
12720         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12721
12722 2007-06-14  Randolph Chung  <tausq@debian.org>
12723
12724         * inssel.brg: Add rules for "chained" compare-branch operations so that
12725         a single compare op can affect multiple branches.  Adjust cost for
12726         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
12727         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
12728         cost for some rules so that they can more easily be overridden by
12729         per-arch rules (with fixes from lupus).
12730         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12731
12732 2007-06-13  Randolph Chung  <tausq@debian.org>
12733
12734         * mini-ops.h: Reorder branch ops so that they match the order of the
12735         corresponding CEE_* ops.  The code expects them this way.
12736         Add new ops for HPPA target.
12737         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12738
12739 2007-06-13  Randolph Chung  <tausq@debian.org>
12740
12741         * mini-exceptions.c: Handle cases where the stack grows towards
12742         larger addresses.
12743         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12744
12745 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12746
12747         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
12748         counter.
12749         * driver.c: explain where a non-matching corlib is found.
12750
12751 2007-06-13  Mark Probst  <mark.probst@gmail.com>
12752
12753         * mini.c (print_jit_stats): Output dynamic code allocation stats.
12754
12755 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
12756
12757         * mini-exceptions.c: Generate a method profile leave event during
12758         an exception to ensure that the profiler gets notified.
12759
12760 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
12761
12762         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
12763         branch.
12764
12765         * cpu-amd64.md: Add long_and/or/xor opcodes.
12766
12767 2007-06-06  Wade Berrier  <wberrier@novell.com>
12768
12769         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
12770         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
12771         length of instruction shr_imm (expected 8, got 10)
12772
12773 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
12774
12775         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
12776
12777 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12778
12779         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12780         MonoInternalHashTable again (fixed bug in the internal hash table
12781         code).
12782
12783 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12784
12785         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
12786         Have to figure out what makes it crash the SWF regression.
12787
12788 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
12789
12790         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
12791
12792 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12793
12794         * mini.c: optimize out the type check when storing null in a
12795         reference array.
12796
12797 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12798
12799         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12800         MonoInternalHashTable.
12801
12802 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12803
12804         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
12805         signed integer methods.
12806
12807 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12808
12809         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
12810         permanently since the current approach doesn't work.
12811
12812 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * inssel.brg (stmt): Only call delegate->invoke_impl if 
12815         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
12816
12817 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12818
12819         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
12820         the sreg2==rdx case.
12821         
12822         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
12823         account if it contains a rex prefix.
12824         (peephole_pass): Handle OP_FMOVE as well.
12825
12826 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12827
12828         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
12829         as it causes regressions.
12830
12831 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
12834         static case as well.
12835
12836         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
12837
12838         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12839         (mono_arch_get_this_arg_from_call): Ditto.
12840
12841         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
12842
12843         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
12844         invoke_impl field.
12845
12846         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12847         (mono_arch_get_this_arg_from_call): Ditto.
12848
12849         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
12850         
12851         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
12852         try to create optimized invoke code and use that for further invocations. 
12853         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
12854
12855         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
12856
12857 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
12858
12859         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
12860         sealed classes or methods.
12861         *devirtualization.cs: tests for the new optimization
12862
12863 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
12864
12865         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
12866         by the update_volatile () function.
12867
12868 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
12869
12870         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
12871         require it.
12872
12873         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
12874
12875 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
12876
12877         * mini.c: Add configure checks for header files.
12878         * mini-x86.c: Add configure checks for header files.
12879         * trace.c: Add configure checks for header files.
12880         * aot-runtime.c: Add configure checks for header files.
12881         * aot-compiler.c: Add configure checks for header files.
12882         * driver.c: Add configure checks for header files.
12883         * mini-codegen.c: Add configure checks for header files.
12884         
12885         Code is contributed under MIT/X11 license.
12886
12887 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
12888
12889         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
12890         icompare_imm -128 + op_iclt. Fixes #81703.
12891
12892 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
12893
12894         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
12895
12896 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12897
12898         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
12899         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
12900         so that all isinst checks now use "interface_bitmap".
12901
12902 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
12903
12904         * cpu-amd64.md (jmp): Fix a warning.
12905
12906         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
12907
12908         * basic.cs: Add new regression test.
12909
12910         * basic.cs: Remove test which is now in basic-long.cs.
12911
12912         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
12913
12914         * basic-long.cs: Add new test.
12915         
12916 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
12917
12918         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
12919
12920 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12921
12922         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12923
12924         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12925         places.
12926         
12927         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12928         throwing code a bit.
12929
12930         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12931         the exception throwing code a bit.
12932
12933         * mini-x86.c (get_call_info): Allocate result from a mempool.
12934
12935 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12936
12937         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12938
12939         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12940
12941         * mini.h (MonoCompile): Add 'token_info_hash' field.
12942
12943         * mini.c: Save token->method associations during compilation so the AOT 
12944         compiler can use it.
12945         
12946         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12947         which reference generic classes and methods.
12948
12949 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12950
12951         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12952
12953         * aot-compiler.c (compile_method): Fix a typo in a comment.
12954
12955         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12956
12957         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12958         everything generic.
12959
12960         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12961
12962 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12963
12964         * mini.h (MonoCompile): Add 'args' field.
12965
12966         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12967         into cfg->args.
12968
12969         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12970
12971 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12972
12973         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12974
12975         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12976
12977         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12978         opcodes for some opcodes.
12979
12980         * mini.h *.brg *.c: Use the new opcodes.
12981
12982 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12983
12984         * mini.h: Bumped aot revision.
12985
12986         * inssel.brg: modified code generation of type checks for interfaces
12987         to use the new "MonoClass.interface_bitmap" instead of the old
12988         "MonoClass.interface_offsets".
12989
12990 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12991
12992         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12993
12994 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12995
12996         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12997         64 bit platforms.
12998
12999 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13000
13001         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13002
13003 2007-04-27  Wade Berrier  <wberrier@novell.com>
13004
13005         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13006         mini.h) to fix build.
13007
13008 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13009
13010         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13011         
13012         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13013         causes the corlib unit tests to fail.
13014
13015 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13016
13017         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13018
13019         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13020
13021         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
13022         opcodes to the comparison relations.
13023
13024         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
13025         opcodes to their types.
13026         
13027         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
13028
13029         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
13030         it in cfg->arch.cinfo.
13031
13032         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
13033
13034         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
13035         cfg->cil_offset_to_bb.
13036
13037 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
13038
13039         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
13040         created becase of initlocals.
13041
13042 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
13043
13044         * mini-alpha.c cpu-alpha.md: More alpha port work from 
13045         Sergey Tikhonov <tsv@solvo.ru>.
13046
13047 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
13048
13049         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
13050
13051 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
13052
13053         * cpu-s390.md (break): Correct the length of break instruction.
13054
13055 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13056
13057         * mini.c: fix a couple of soft-float issues and comments.
13058
13059 2007-04-15  Miguel de Icaza  <miguel@novell.com>
13060
13061         * trace.c (is_filenamechar): - is also a filename char.
13062
13063 2007-04-15  Neale Ferguson <neale@sinenomine.net>
13064
13065         * mini-s390.c: Correct checking for enum type in return value processing.
13066
13067 2007-04-14  Raja R Harinath  <rharinath@novell.com>
13068
13069         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
13070         (version.h): Makefile is in the build directory.
13071
13072 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
13073
13074         * mini-amd64.h: fix for assertion failure on Solaris/amd64
13075
13076 2007-04-11  Martin Baulig  <martin@ximian.com>
13077
13078         * mini.c (can_access_member): Fix handling of generic classes;
13079         fixes #81259.
13080
13081 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
13082
13083         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
13084
13085 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
13086
13087         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
13088
13089 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13090
13091         * mini-codegen.c: make sure the right spill amount is
13092         used for fp or integer registers (fixes the float_sub_spill() on ppc).
13093
13094 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
13095
13096         * mini-ppc.c: fixes for the fp_branch_nan test.
13097
13098 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
13099
13100         * basic.cs: Comment out new test which still fails on ia64.
13101
13102 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13103
13104         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
13105
13106 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13107
13108         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
13109
13110 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
13111
13112         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
13113         on 64 bit machines. Fixes part of #80738.
13114
13115         * basic.cs: Add regression test.
13116
13117 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13118
13119         * inssel.brg basic.cs: Revert previous change to fix build.
13120
13121         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
13122         platforms.
13123         
13124         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
13125
13126         * basic.cs: Add new regression test.
13127
13128 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
13131         many arguments.
13132
13133 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13134
13135         * cpu-s390x.md: Correct length of break instruction.
13136
13137 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13138
13139         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
13140         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
13141
13142 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
13143
13144         * *.c: Begin WIN64 port.
13145         * mini.c:  Use correct register in profiler.
13146         * mini-amd64.c: No inline assembly on Win64.
13147         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
13148         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
13149         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
13150         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
13151         mono_arch_ip_from_context for Win64.
13152         
13153         Contributed under MIT/X11 license.
13154
13155 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
13156
13157         * exceptions-amd64.c (seh_handler): Ditto.
13158
13159         * exceptions-x86.c (seh_handler): Fix a memory leak.
13160
13161 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
13162
13163         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
13164         mini-s390x.c: fixed peephole optimizations to deal
13165         correctly with 1 and 2 byte reload avoidance.
13166
13167 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
13168
13169         * cpu-s390.md, cpu-s390x.md: update localloc length.
13170
13171 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13172
13173         * cpu-g4.md: added missing descriptions.
13174
13175 2007-03-14  Miguel de Icaza  <miguel@novell.com>
13176
13177         *  Makefile.am: Add support so the tail tests are not executed on
13178         PowerPC as that is a known limitation of the PowerPC port.
13179
13180 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13181
13182         * runmdesc.bat:  Move to msvc directory.
13183         
13184 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13185
13186         * runmdesc.bat:  Run executable that was produced by the current
13187         target and sent via an argument.
13188         
13189 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
13192         #81102.
13193
13194         * generics.2.cs: Add regression test.
13195
13196 2007-03-09  Wade berrier  <wberrier@novell.com>
13197
13198         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
13199
13200 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
13201
13202         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
13203         AOT code depends on this.
13204
13205 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13206
13207         * mini.c: more precise tracking of types in the eval stack
13208         (part of fix for bug #81044).
13209
13210 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
13211
13212         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
13213
13214         * aot-compiler.c (encode_patch): Remove an obsolete comment.
13215
13216 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
13219
13220         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
13221
13222 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
13223
13224         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
13225         a pointer on 64 bit systems. Fixes #80190.
13226
13227         * iltests.il: Add new regression test.
13228
13229 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13230
13231         * mini.c: inline a constant for Environment.IsRunningOnWindows.
13232
13233 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
13234
13235         * trace.c: Remove an erroneous alignemnt check when tracing.
13236           Fixes --trace on OSX86.
13237
13238 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13239
13240         * mini-$(arch).h: initialize SP in context for all the archs.
13241
13242 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
13243
13244         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
13245         regressions in the thread tests.
13246
13247 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
13248
13249         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
13250         - fixed implementation of LOCALLOC opcode
13251         - implemented non-un compare for floats
13252         - code cleanup
13253         - implementation of FDIV and CKFINITE opcodes
13254         - fixes for latest mono updates
13255         - additional arch opcodes
13256
13257 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13258
13259         * Makefile.am: simplify and merge rules for cross-compilation.
13260
13261 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
13262
13263         * local-propagation.c: Actually *apply* the fix for bug 80591...
13264
13265 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13266
13267         * mini-exceptions.c: backuot part of the last change
13268         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
13269
13270 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
13271         * inssel.brg: Fix bug 59286.
13272
13273
13274 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
13275
13276         * mini-exceptions.c: patch from Zoltan to correctly check for
13277         stack boundaries (using the stack register, not the frame register),
13278         fixes bugs #80724, #79717.
13279
13280 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
13283         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
13284
13285         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
13286         presence of frame pointer elimination.
13287
13288 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
13289         
13290         * mini-x86.h: NetBSD UCONTEX_REG defines.
13291
13292 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * inssel-amd64.brg: Fix amd64 build.
13295
13296 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
13297
13298         * mini.h: remove extern to workaround what looks likes gcc bug 26905
13299         on amd64.
13300
13301 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
13304         ends.
13305
13306         * mini-<ARCH>.c: Use mono_is_regsize_var ().
13307
13308 2007-01-30 Mark Mason <mason@broadcom.com>
13309
13310            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
13311            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
13312            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
13313            beginning support for CEE_JMP [not quite working yet]
13314            * tramp-mips.c: LMF handling now works
13315         
13316 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
13317
13318         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
13319
13320         * mini.h (NULLIFY_INS): New macro.
13321
13322 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13323
13324         * mini.c: statistical profiler fix for windows, patch
13325         from Tor Lillqvist (tml@novell.com).
13326
13327 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
13328         * local-propagation.c: Fix bug 80591.
13329
13330 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13331
13332         * Makefile.am: put back the --export-dynamic option as with
13333         the previous gmodule flags (thanks to Robert Jordan).
13334
13335 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
13338
13339         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
13340         simplify and speed up the local register allocator. Also rename some fields
13341         like iassign->vassign.
13342         
13343         * regalloc.c: Remove some functions which are no longer used since their
13344         inlined version is in mini-codegen.c.
13345         
13346         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
13347
13348         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
13349
13350 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
13351
13352         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
13353         narrowing. Fixes #80622.
13354
13355         * iltests.il: Add new regresssion test. 
13356
13357 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13358
13359         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
13360         debug-debugger.c, debug-debugger.h: warning fixes.
13361         * driver.c: updated copyright year and made it fit in one line.
13362
13363 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
13364
13365         * aot-runtime.c: updated to use mono-dl instead of gmodule.
13366
13367 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
13368
13369         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
13370
13371         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
13372
13373         * iltests.il: Add new test for bug #80507.
13374
13375 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13376
13377         * mini-arm.h: use soft-float also on vfp for now.
13378
13379 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13380
13381         * mini.c: fix some more soft-float issues.
13382
13383 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13384
13385         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13386
13387 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13388         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13389         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13390         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13391
13392 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13393
13394         * mini-arm.c: typo fix.
13395
13396 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13397
13398         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13399
13400 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13401
13402         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13403         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13404
13405         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13406
13407         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13408
13409         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13410         
13411         * inssel.brg: Fix a warning.
13412
13413         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
13414
13415         * abcremoval.c ssa.c ssapre.c: Update after this change.
13416         
13417         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
13418
13419         * dominators.c (df_set): Use mono_bitset_union_fast.    
13420
13421 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13422
13423         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
13424         mini-codegen.c: reduce relocations and memory usage for the cpu
13425         description.
13426
13427 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
13428
13429         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
13430
13431         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
13432         to reduce their size.
13433
13434 2007-01-19 Mark Mason <mason@broadcom.com>
13435
13436         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
13437         * mini-mips.c: more configuration macros, support long conditional branches, additional
13438         asserts, fix epilog instrumentation.
13439         * mini-mips.h: use standard stack walk
13440         * cpu-mips.md: increase size of div, rem and conditional branches
13441         
13442 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
13443
13444         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
13445         to cpu spec data.
13446
13447 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
13448
13449         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
13450         (compile_method): Ditto.
13451
13452         * aot-runtime.c (decode_klass_info): Ditto.
13453
13454         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
13455         needed by the code generated by inssel.brg. Also fix a warning.
13456
13457 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
13458
13459         * mini.c: deal with enums that become genericinsts by
13460         being nested in a generic class (bug #79956).
13461
13462 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13463
13464         * mini.c: match the generic definition to check for
13465         private access with generic types (bug #78431).
13466
13467 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13468
13469         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
13470         to make life easier for people cross-compiling that insist on not
13471         using scratchbox.
13472
13473 2007-01-17 Mark Mason <mason@broadcom.com>
13474
13475         * inssel-long.brg: patch to deal with mips missing flags
13476         * inssel-long32-mips.brg: implement overflow checks
13477         * insset-mips.brg: implement overflow checks
13478         * mini-mips.h: implement conditional exception handling
13479         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
13480           Remove unused code, minor cleanups.
13481         * exceptions-mips.c: minor cleanups
13482         * mini-ops.h: add mips conditional exception ops
13483         * cpu-mips.md: add mips conditional exception ops
13484
13485         
13486 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13487
13488         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
13489         to deal with mips missing of flags.
13490
13491 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13492
13493         * exceptions-ppc.c: execute fault handlers.
13494
13495 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
13496
13497         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
13498
13499 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13500
13501         * mini.c: handle also floating point values in initialize_array.
13502
13503 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13504
13505         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
13506         array initialization and make it conditional on the intrins option.
13507
13508 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13509
13510         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
13511         relocations and put the patch info names close to the enum definition.
13512
13513 2007-01-15 Mark Mason <mason@broadcom.com>
13514
13515         * basic.cs, exceptions.cs: break up large tests to increase debugability.
13516
13517 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13518
13519         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
13520
13521 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13522
13523         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
13524
13525 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13526
13527         * Makefile.am: distribute the mips sources.
13528
13529 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13530
13531         * mini-codegen.h: handle bug #80489 here, by excluding ecx
13532         directly.
13533
13534 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
13535
13536         * cpu-x86.md: back out for now as this triggers other regressions.
13537
13538 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13539
13540         * cpu-x86.md: force src1 and dest regpair for long shift instructions
13541         to eax:edx, so ecx can't get allocated to them (bug #80489).
13542
13543 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
13544
13545         * mini.c, mini-exceptions.c: enabled running fault handlers
13546         (bug #80469).
13547
13548 2007-01-03  Miguel de Icaza  <miguel@novell.com>
13549
13550         * driver.c: If nothing fail, do not use the string "failed",
13551         because it makes it very annoying to view test result logs on the
13552         web. 
13553
13554 2006-12-30  Miguel de Icaza  <miguel@novell.com>
13555
13556         * debug-debugger.c (mono_debugger_main): Rename "main" to
13557         "main_method" to prevent a warning.
13558
13559         Remove a warning for unused field.
13560
13561 2006-12-28  Martin Baulig  <martin@ximian.com>
13562
13563         * debug-debugger.c
13564         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
13565
13566 2006-12-22  Martin Baulig  <martin@ximian.com>
13567
13568         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
13569         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
13570         seperate `.mdb_debug_info' section, so we can access it from the
13571         debugger even if the binary is stripped.
13572
13573         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
13574         from the `.mdb_debug_info' here to prevent the linker from
13575         removing that section.
13576
13577         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
13578         mdb-debug-info64.s.
13579
13580 2006-12-19  Robert Jordan  <robertj@gmx.net>
13581
13582         * mini-x86: enable the code to return small structures in
13583         registers for FreeBSD as well. Fixes bug #80278.
13584         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
13585
13586 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13587
13588         * mini-x86.c: align the stack when calling the profiler
13589         function instrumenting the prolog (on OSX).
13590
13591 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
13592
13593         * mini.c: emit a break opcode where Debugger.Break () is called.
13594
13595 2006-12-13  Miguel de Icaza  <miguel@novell.com>
13596
13597         * mini.c (mono_method_to_ir): Provide useful information on this
13598         assert, to prevent others from debugging like I did.
13599
13600 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13601
13602         * mini.c: enable code which was incorrectly commented
13603         (bug #80235).
13604
13605 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13606
13607         * mini-x86.c: enable on OSX, too, the code to return small
13608         structures in registers.
13609
13610 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13611
13612         * mini-x86.c: remove the use of the dynamic code manager here, too.
13613
13614 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13615
13616         * mini.h, debug-debugger.c, tramp-*.c: fixed 
13617         mono_debugger_create_notification_function() to use
13618         mono_global_codeman_reserve () instead of a dynamic code manager.
13619
13620 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
13621
13622         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
13623         ves_array_element_address() jit icall and use a generated
13624         managed method instead (which is about 4 times faster for a rank 3
13625         array access).
13626
13627 2006-11-29  Mark Mason  <mason@broadcom.com>
13628
13629         * basic-calls.cs: additional tests for passing
13630         structures as function arguments.
13631
13632 2006-11-29  Mark Mason  <mason@broadcom.com>
13633
13634         * mini-mips.h: disable custom exception handling
13635         * mini-mips.c: throw/rethrow should use jalr to call
13636         exception stubs.  Fixed bug with passing structures
13637         by value. More support for tracing floating point
13638         functions.
13639
13640 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13641
13642         * mini.c: fixed typo in the soft-float ldind.r4 handling
13643         (bug #80086).
13644
13645 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13646
13647         * mini.c, mini.h, driver.c: added --runtime command line
13648         option to select a different runtime than the autodetected one.
13649         * jit.h: added API for embedders to initialize with a specific
13650         runtime version.
13651
13652 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13653
13654         * mini.c: handle also boxing of r4 values (bug #80024).
13655
13656 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13657
13658         * mini-ppc.c: force indirect calls until we reserve
13659         enough address space for all the generated code.
13660
13661 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
13662
13663         * exceptions-arm.c: workaround bugs in the libc definition
13664         of struct ucontext.
13665
13666 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13667
13668         * inssel.brg: fixes from me and Mark Mason.
13669
13670 2006-11-23  Dick Porter  <dick@ximian.com>
13671
13672         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
13673         semaphore display now we've fixed the initial value
13674
13675 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13676
13677         * inssel.brg: partially revert the last change to fix the build.
13678
13679 2006-11-21  Mark Mason  <mason@broadcom.com>
13680
13681         * inssel.brg: Add and use compare-and-branch macros to support
13682         architectures that do not have condition code registers (ie. MIPS).
13683         * *-mips.{c,brg,md}: Fix copyright statements
13684
13685 2006-11-20  Mark Mason  <mason@broadcom.com>
13686
13687         * Makefile.am: remove mini-codegen.c from list of MIPS sources
13688         * mini.c: Allow GET_CONTEXT to be specified by the arch port
13689         * mini.h: Added declaration for mono_print_ins()
13690         * mini-codegen.c: added ins_spec initializer for MIPS
13691         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
13692         vreg to be virtual and hreg to be non-virtual.
13693         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
13694         is not yet working/implemented correctly.
13695         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
13696         non-static, fixup calls to print_ins() from other parts in the file.
13697
13698 2006-11-20  Mark Mason  <mason@broadcom.com>
13699
13700         * basic-calls.cs: added tests for passing structures as arguments
13701         to calls.
13702
13703 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13704
13705         * inssel-long32.brg: optimize signed division by power of two.
13706
13707 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
13708
13709         * mini-arm.c: added support for interworking with thumb code
13710         (mono must be still be built using the ARM instruction encoding).
13711
13712 2006-11-19  Miguel de Icaza  <miguel@novell.com>
13713
13714         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
13715         verifier has different rules for it.   Fixes a few verifier issues
13716         in the test suite.
13717
13718         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
13719         at the end, so people know what happened.
13720
13721 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13722
13723         * brach-opts.c: in optimize_exception_target() make sure we
13724         are in a catch clause (fixes bug #79871).
13725
13726 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13727
13728         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
13729         more soft-float support fixes.
13730
13731 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
13732
13733         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
13734         that are passed half on the stack and half in registers.
13735
13736 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13737
13738         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
13739         more mips integration work from Mark E Mason 
13740         <mark.e.mason@broadcom.com>.
13741
13742 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13743
13744         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
13745         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
13746         tramp-mips.c: added sources for the mips port, not
13747         integrated in the build yet. Contributed by
13748         Mark E Mason <mark.e.mason@broadcom.com>.
13749
13750 2006-11-14  Neale Ferguson <neale@sinenomine.net>
13751
13752         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
13753
13754 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13755
13756         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
13757         put the soft-float rules in its own file since it seems to
13758         break s390 compilation.
13759
13760 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13761
13762         * mini-arm.c: fixed wrnings.
13763
13764 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
13765
13766         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
13767         inssel-arm.brg: ARM support for soft-float.
13768
13769 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13770
13771         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
13772         loads and stores of 32 bit fp values.
13773
13774 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
13775
13776         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
13777
13778         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
13779         works. Fixes #79852 and #79463.
13780
13781 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13782
13783         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
13784         more soft-float support WIP and fixes.
13785
13786 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
13787
13788         * mini-arm.c: some VFP updates.
13789
13790 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13791
13792         * mini-exceptions.c: 0 is a valid local var offset in some
13793         architectures, don't assert (bug #78508).
13794
13795 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
13796
13797         * exceptions-arm.c: fixed off by one error in stack walk code.
13798
13799 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13800
13801         * mini.h, mini.c: more precise tracking of type load exceptions.
13802
13803 2006-11-03  Robert Jordan  <robertj@gmx.net>
13804
13805         * Makefile.am: [WIN32] Add monow.exe target.
13806         * driver.c: [WIN32] Don't detach the console when debugging.
13807         Fixes bug #79797.
13808         
13809 2006-10-30  Miguel de Icaza  <miguel@novell.com>
13810
13811         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
13812
13813 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
13814
13815         * aot-compiler.c (emit_method_info): Add a case missed earlier.
13816
13817         * driver.c (mini_regression): Fix --regression with AOT.
13818
13819         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
13820
13821 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
13822
13823         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
13824
13825         * mini-sparc.h: Don't use sigaction on sparc/linux.
13826
13827         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
13828
13829         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
13830
13831         * mini-exceptions.c: Add proper include files for getpid ().
13832
13833 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
13834
13835         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
13836         address instead of a MonoJitInfo* to avoid decoding the exception info for the
13837         method.
13838
13839         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
13840         name cache to reduce its size.
13841
13842         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
13843
13844 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13845
13846         * mini-x86.c: Save/restore the current LMF structure more efficiently using
13847         the mono_lmf TLS variable.
13848
13849         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
13850         trampoline lmf frames.  
13851
13852         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
13853
13854 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
13857         the mono_lmf TLS variable.
13858
13859         * mini-exceptions.c: Access the LMF structure through accessors.
13860
13861         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
13862         variable instead of in jit_tls->lmf.
13863
13864         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
13865         
13866         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
13867         trampoline lmf frames.
13868
13869         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
13870
13871 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
13872
13873        * mini.c trace.c mini-x86.c: Revert these too.
13874         
13875        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
13876        signature change.
13877
13878 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
13879
13880         * genmdesc.c: removed now dead code.
13881
13882 2006-10-09  Robert Jordan <robertj@gmx.net>
13883
13884         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
13885
13886 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
13887
13888         * mini.h: do not leave gaps in the opcode values.
13889
13890 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
13891
13892         * jit-icalls.h: flag functions as internal here, too.
13893
13894 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
13895
13896         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
13897         functions with the internal attribute.
13898
13899 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
13900
13901         * aot-compiler.c: fclose the file descriptor in the profile read loop.
13902
13903 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13904
13905         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
13906         for soft-float.
13907
13908 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
13909
13910         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
13911         tail calls as on other platforms.
13912
13913         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
13914
13915         * iltests.il: Add a few tailcall tests.
13916
13917 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13918
13919         * driver.c: fix loop for old compilers (bug #79521).
13920
13921 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13922
13923         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13924
13925         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13926
13927         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13928         metadata without any code.
13929
13930         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13931         more precise debugging information using gdb.
13932
13933 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13934
13935         * inssel-ia64.brg: Make the helper methods static.
13936
13937 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13938
13939         * inssel-x86.brg: make the helper methods static.
13940
13941 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13942
13943         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13944
13945 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13946
13947         * mini.c: updates for monoburg changes.
13948         * inssel.brg: make a few helper functions static as they should.
13949
13950 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13951
13952         * Makefile.am: Move mini-codegen.c to common_sources.
13953
13954 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13955
13956         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13957         instructions.
13958         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13959         mini-ppc.h: port to use the common local register allocator.
13960
13961 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13962
13963         * mini.h: Remove the comment too then.
13964
13965 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13966
13967         * mini.h: put back backend.data which is to be used shortly and
13968         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13969         pointers on 4 byte boundaries it'd have much bigger issues running
13970         and you can ifdef it out anyway.
13971
13972 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13973
13974         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13975         MonoInst size by 4 bytes on 64 bit machines.
13976
13977 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13978
13979         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13980         replacement with more meaningful field names. Arch maintainers, please
13981         check the assigned names are good enough for your arch.
13982
13983 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13984
13985         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13986         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13987
13988 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13989
13990         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13991         relocations and memory requirements, put the optimization flags
13992         definitions in their own file.
13993
13994 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13995
13996         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13997
13998         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13999
14000 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14001
14002         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14003
14004 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14005
14006         * inssel.brg: use the correct function to get the size of an item
14007         in an array, given an element class.
14008         * aot-compiler.c: do not access class->class_size directly.
14009
14010 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14011
14012         * mini.h, debug-mini.c: added a debugging function to print
14013         info about local variables and arguments in a jitted method.
14014
14015 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14016
14017         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14018
14019         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14020
14021 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14022
14023         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
14024         inner and outer loops when passing vtypes.
14025
14026 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
14027
14028         * mini-ppc.c: take into account the cpu errata for cache flushing
14029         which caused some random errors (bug #79381).
14030
14031 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14032
14033         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
14034         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
14035
14036 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
14037
14038         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
14039         loaded.
14040
14041         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
14042         freebsd ports tree.
14043
14044         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
14045         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
14046
14047         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
14048         displacement.
14049
14050 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
14051
14052         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
14053
14054 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
14055
14056         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
14057         macro does not have to be changed during debugging.
14058
14059         * 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>.
14060
14061         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
14062
14063         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
14064         
14065         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
14066         MONO_ARCH_NO_EMULATE_MUL is defined.
14067
14068         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
14069
14070         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
14071
14072         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
14073
14074         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
14075         
14076 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14077
14078         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
14079         stuff to mini-exceptions.c where it is used.
14080
14081         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
14082         setup code, the real one is in mini-exceptions.c.
14083
14084         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
14085         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
14086         some changes from the freebsd ports tree.
14087
14088         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
14089         constants.
14090         
14091         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
14092
14093 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
14094
14095         * mini.c: on Linux, check for /proc to be mounted
14096         (bug# 79351, novell bug#201204).
14097
14098 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14099
14100         * mini.c: handle cases where pthread_attr_getstack() behaves
14101         incorrectly (bug #78096).
14102
14103 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
14104
14105         * mini-arm.c: support larger stack frames (bug #79272).
14106
14107 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14108
14109         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
14110
14111         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
14112         tokens.
14113
14114         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
14115         mono_class_from_name () to find a class from its name.
14116
14117         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
14118
14119 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
14120
14121         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
14122
14123 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
14124
14125         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
14126
14127 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14128
14129         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
14130         callinfo->trampoline.
14131
14132         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
14133         fixes #79271.
14134         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
14135         future.
14136
14137 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
14138
14139         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
14140
14141 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
14142
14143         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
14144         stats.method_trampolines, it is already done by the generic trampoline code.
14145
14146         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
14147         
14148 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
14149
14150         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
14151
14152         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
14153
14154         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
14155
14156         * mini.c (print_jit_stats): Print mscorlib mempool size too.
14157         
14158         * mini.c (print_jit_stats): Print new stats.
14159
14160         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14161
14162 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
14163
14164         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
14165         Address on two dimensional arrays. Fixes #78729.
14166
14167         * mini.h (MonoCompile): Add a 'skip_visibility' field.
14168
14169         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
14170         a method.
14171
14172         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
14173
14174         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
14175         #79130.
14176         
14177         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
14178         a race condition.
14179         (mini_get_ldelema_ins): Ditto.
14180
14181 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
14182
14183         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
14184         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
14185         Fixes #79213.
14186
14187 2006-08-29 Neale Ferguson <neale@sinenomine.net>
14188
14189         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
14190         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
14191
14192         * exceptions-s390x.c: Cosmetic change.
14193
14194         * tramp-s390.c: Fix warning.
14195
14196         * cpu-s390.md: Correct length of mul_imm.
14197
14198 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14199
14200         * aot-compiler.c: added binary writer with ELF backend
14201         implementation (only on Linux/x86 for now).
14202
14203 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14204
14205         * Makefile.am: Don't run net 2.0 AOT tests.
14206
14207         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
14208         (mono_compile_assembly): Skip net 2.0 assemblies as well.
14209
14210         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
14211
14212 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14213
14214         * aot-compiler.c: simplified and refactored the asm-writing code
14215         to allow different backends.
14216
14217 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14218
14219         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
14220
14221         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
14222         little. Share patches of type TYPE_FROM_HANDLE as well.
14223
14224         * mini.c (mono_patch_info_equal): New helper function.
14225         (mono_patch_info_hash): Ditto.
14226
14227         * aot-compiler.c (emit_method_code): Fix s390 build.
14228
14229         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
14230         is not handled because it is stored as a flag and not as a type ctor. Fixes
14231         #79016.
14232
14233 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14234
14235         * aot-compiler.c: Fix computation of GOT slot statistics.
14236         
14237         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
14238         Also remove support for not PIC AOT.
14239
14240         * mini.h: Bump AOT file format version.
14241
14242         * objects.cs: Add a test for #78990.
14243
14244         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
14245         (peter.dettman@iinet.net.au). Fixes #79087.
14246
14247         * basic-long.cs: Add a test for the above.
14248
14249 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
14250
14251         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
14252         
14253         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
14254         code somewhat.
14255
14256 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
14257
14258         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
14259         exceptions.
14260
14261 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
14262
14263         * mini.c: Don't verify COM proxy invoke calls
14264         
14265
14266 2006-08-10  Dick Porter  <dick@ximian.com>
14267
14268         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
14269         which process is holding semaphores locked.
14270
14271 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
14272
14273         * mini-ia64.c mini-amd64.c: Fix #79027.
14274
14275         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
14276
14277         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
14278
14279         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
14280         implicit arguments in a vararg call. Fixes #79027.
14281
14282 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
14283
14284         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
14285         (mono_get_array_new_va_signature): Ditto.
14286
14287 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
14288
14289         * aot-runtime.c: Call init_plt lazily.
14290
14291         * inssel-long.brg: Fix unsigned long->int conversion.
14292
14293         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
14294
14295         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
14296         that most data is now in the .rss/.data section.
14297
14298 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
14299
14300         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
14301
14302         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
14303
14304         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
14305
14306         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
14307
14308         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
14309         virtual call. Fixes #79010.
14310
14311         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
14312         and use the result as the this argument in the real call.
14313
14314         * generics.2.cs: Add a new test for #79010.
14315         
14316 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
14317
14318         * mini-x86.c: Fix a warning.
14319
14320         * aot-compiler.c: Add a bunch of statistics.
14321
14322         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
14323
14324 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
14325
14326         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
14327
14328 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
14329
14330         * 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>.
14331
14332 2006-07-13  Miguel de Icaza  <miguel@novell.com>
14333
14334         * mini.c (mono_method_to_ir): Obtain the original method in the
14335         CIL stream and use this to perform validation.
14336
14337         Fixed: #78816
14338
14339 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
14340
14341         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
14342         (mono_arch_call_opcode): Ditto.
14343
14344         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
14345         #78826.
14346
14347         * mini.c (mono_patch_info_dup_mp): New helper function.
14348         
14349         * aot-compiler.c (compile_method): Fix some of the memory allocated during
14350         compilation. Fixes #78827.
14351
14352 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
14353
14354         * declsec.c: Use original security informations for
14355           MONO_WRAPPER_MANAGED_TO_MANAGED.
14356
14357 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
14358
14359         * mini.c: Allow Com Interop methods/classes and
14360         don't verify COM wrapper calls
14361         
14362
14363 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
14364
14365         * inssel-long32.brg: Fix long->i4 checked conversion.
14366
14367         * exceptions.cs: Add a test for the above.
14368
14369 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14370
14371         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
14372
14373         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
14374         leaks.
14375
14376         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
14377         #78775.
14378
14379 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14380
14381         * mini.c: Fix solaris/x86 exception handling.
14382
14383         * Makefile.am: Get rid of $(ICU_LIBS).
14384
14385 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14386
14387         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14388         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14389         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14390
14391         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14392
14393         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14394         this function causes a SIGSEGV.
14395
14396 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14397
14398         * mini.c: Remove unused solaris/x86 includes.
14399
14400 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14401
14402         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14403
14404 2006-06-20  Jb Evain  <jbevain@gmail.com>
14405
14406         * cpu-g4.md: fix max length of start_handler instruction.
14407
14408 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14409         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14410
14411 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14412         * ssa.c: Fixed bug 78653 for SSA based deadce.
14413         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
14414         MonoInst.flags, used in SSA based deadce.
14415         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
14416         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
14417
14418 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14419
14420         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
14421         it can end up using non executable memory on ppc64 systems
14422         running ppc32 userspace (fix from Johannes Berg).
14423
14424 2006-06-14  Dick Porter  <dick@ximian.com>
14425
14426         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
14427         4.1.1
14428
14429 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
14430         * mini.c: Made so that inline is locally disabled if it would
14431         trigger a .cctor, because too many apps depend on this behavior
14432         (which seems to be also the one of the MS CLR).
14433
14434 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
14435
14436         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
14437         No idea why this worked before.
14438
14439         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
14440         which branch to outer exception clauses since they could skip the
14441         inner finally clauses. Fixes #78633.
14442
14443         * exceptions.cs: Add a test for the above.
14444
14445         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
14446         Fixes #78629.
14447
14448         * iltests.il: Add a test for the above.
14449
14450 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
14451
14452         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
14453         after the end of a try bblock, to prevent asserts in mini_method_compile ().
14454
14455         * iltests.il: Add a test for the above.
14456
14457 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
14458
14459         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
14460         
14461         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
14462         methods as instrinsics.
14463
14464 2006-06-09  Wade Berrier <wberrier@novell.com>
14465
14466         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
14467         (simple-cee-ops.h ssapre-mini-ops.h)
14468
14469 2006-06-09  Neale Ferguson <neale@sinenomine.net>
14470
14471         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
14472         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
14473         instruction).
14474         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
14475         * cpu-s390x.md: Fix max. length values for a couple of instructions.
14476
14477 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14478
14479         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
14480
14481 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
14482
14483         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
14484         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
14485         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
14486         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
14487         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
14488         of opcodes, so that bug 78549 should not happen again.
14489         * ssapre.c: Updated to use the renamed files.
14490
14491 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14492
14493         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
14494         in OP_ATOMIC_EXCHANGE_I4.
14495
14496 2006-06-07  Wade Berrier <wberrier@novell.com>
14497
14498         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
14499         in mono_debugger_create_notification_function)
14500
14501 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
14502
14503         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
14504         
14505         * mini.c (type_from_stack_type): Disable some changes which do not
14506         seem to work.
14507
14508         * driver.c: Reenable opts.
14509
14510         * mini.h (MonoStackSlot): New structure to keep track of the verification state
14511         of the evaluation stack.
14512         
14513         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
14514         evaluation stack trace at entry to the bblock.
14515
14516         * mini.c (merge_stacks): New function to perform verification of stack merges.
14517         Turned off by default.
14518
14519         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
14520         STACK_MP.
14521         
14522 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
14523
14524         * local-propagation.c: Fixed bug 78549.
14525
14526 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
14527
14528         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
14529
14530 2006-06-02  Miguel de Icaza  <miguel@novell.com>
14531
14532         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
14533         tramp-arm.c, tramp-ia64.c
14534         (mono_debugger_create_notification_function): Update signature to
14535         new signature and use new protocol for creating the notification
14536         function.  
14537
14538         Should fix the build.
14539
14540 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
14541
14542         * exceptions-ppc.c (mono_jit_walk_stack)
14543         (ves_icall_get_frame_info): Fix the build
14544
14545 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
14546
14547         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
14548
14549 2006-05-31  Raja R Harinath  <rharinath@novell.com>
14550
14551         * il2tests.2.il: New file for generics CIL tests.  Add test for
14552         #78019.
14553         * Makefile.am: Update.
14554
14555         Fix #78019
14556         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
14557         to nullable types.
14558
14559 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
14560
14561         * aliasing.c: Fixed bug 78311.
14562
14563 2006-05-29  Martin Baulig  <martin@ximian.com>
14564
14565         * mini-exceptions.c (mono_find_jit_info): When computing the
14566         native offset, check whether we're actually inside the method's
14567         code; call mono_debug_print_stack_frame() to format the frame.
14568         (ves_icall_System_Exception_get_trace): Call
14569         mono_debug_print_stack_frame() to format the stack frame.
14570         (ves_icall_get_trace): Update to the new debugging API.
14571         (mono_jit_walk_stack_from_ctx): Likewise.
14572         (ves_icall_get_frame_info): Likewise.
14573
14574         * mini.c (get_method_from_ip): Use the new debugging API.
14575         (mono_print_method_from_ip): Likewise.
14576
14577         * exceptions-ppc.c
14578         (mono_jit_walk_stack): Use the new debugging API.
14579         (ves_icall_get_frame_info): Likewise.   
14580
14581 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
14582
14583         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
14584
14585 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
14586
14587         * mini.c: Added "limitator" to inline for debugging.
14588
14589 2006-05-24  Martin Baulig  <martin@ximian.com>
14590
14591         * debug-debugger.c (mono_debugger_init): Create a private,
14592         malloc()-based code manager for the notification function and
14593         intentionally leak it on exit.  This fixes the crash-on-exit race
14594         condition.
14595
14596         * tramp-amd64.c
14597         (mono_debugger_create_notification_function): Added
14598         `MonoCodeManager *' argument.
14599
14600         * tramp-x86.c
14601         (mono_debugger_create_notification_function): Added
14602         `MonoCodeManager *' argument.
14603
14604 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
14605
14606         * aliasing.c: Fixed 64 bit issue.
14607         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14608         default since all known bugs are fixed (one more time!).
14609
14610 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14611
14612         * mini.c: write barrier support.
14613
14614 2006-05-23  Martin Baulig  <martin@ximian.com>
14615
14616         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
14617         check at the top of the file.
14618
14619 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
14620
14621         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
14622         reverting changes without reason and without changelog entries.
14623
14624 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14625
14626         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
14627         to a few opcodes. Fixes #78439.
14628
14629         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
14630         consistency with other archs.
14631
14632         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
14633
14634 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14635
14636         * debug-debugger.c: fix the build.
14637
14638 2006-05-17  Martin Baulig  <martin@ximian.com>
14639
14640         * debug-debugger.c
14641         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
14642         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
14643         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
14644         (debugger_attach): Call GC_mono_debugger_add_all_threads().
14645
14646 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14647
14648         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
14649
14650 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14651
14652         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
14653         MONO_TYPE_GENERICINST.
14654         
14655         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
14656         MONO_TYPE_GENERICINST.
14657
14658 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14659
14660         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
14661         #78325.
14662
14663 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
14664
14665         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
14666         mempool.
14667         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
14668
14669 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14670
14671         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
14672         mono_trace_cleanup ().
14673
14674         * iltests.il: Fix problem with the newly added test.
14675
14676         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
14677         due to register constraints, free up the previous hreg. Fixes #78314.
14678
14679         * iltests.il: Add new test for #78314.  
14680
14681         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
14682         Interlocked.Add. Fixes #78312.
14683
14684         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
14685         
14686 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14687
14688         * inssel.brg (mini_emit_virtual_call): Fix a warning.
14689
14690 2006-05-05  Martin Baulig  <martin@ximian.com>
14691
14692         * debug-mini.c (mono_debug_open_block): New method.
14693
14694         * mini-amd64.c
14695         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14696         the beginning of each basic block.
14697
14698         * mini-x86.c
14699         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14700         the beginning of each basic block.
14701
14702 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14703
14704         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14705         default until I understand why they break the build on amd64.
14706
14707 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14708
14709         * mini.c (mini_cleanup): Call mono_cleanup ().
14710
14711         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
14712         errors.
14713
14714 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14715
14716         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
14717         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14718         default since all known bugs are fixed, and I cannot reproduce bug
14719         77944... I'm asking Matt Hargett to test again after this commit.
14720
14721 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
14722
14723         * mini-codegen.c: Fixed typo that thrashed inline.
14724
14725 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
14726
14727         * dominators.c (compute_dominators): Avoid using a worklist since
14728         it is not correct in some cases. Instead, iterate over all bblocks as
14729         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
14730
14731 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14732
14733         * mini.c (mono_jit_compile_method_inner): Use
14734         mono_prepare_exception_from_error that resets the value
14735         internally.
14736
14737 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14738
14739         * mini.c: Move the mini_loader_error_to_exception to metadata. 
14740         
14741 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14742
14743         * aliasing.c: Fixed bug 78210.
14744
14745 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14746
14747         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14748         default until all their problems (or the ones they trigger) are fixed.
14749
14750 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
14751
14752         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
14753         
14754         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
14755         as loaded only after resolving patches since that could invoke the same method.
14756
14757         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
14758
14759         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
14760         functions.
14761
14762         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
14763         AOT loader.
14764
14765         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
14766         stack.
14767
14768         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
14769         made from AOT code through the PLT table.
14770
14771         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
14772         holding the plt offset when a call is made to the aot plt trampoline.
14773         
14774 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14775
14776         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
14777         amd64 AOT support.
14778
14779         * Makefile.am (common_sources): Fix build breakage.
14780
14781         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
14782         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
14783         intra-assembly calls if possible.
14784         
14785         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
14786
14787         * mini-trampolines.c: Handle PLT entries.
14788
14789         * mini.c: Avoid creating a GOT var for calls.
14790
14791         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
14792         from mscorlib code.
14793
14794         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
14795         from mscorlib code.
14796
14797         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
14798         AOT code.       
14799
14800         * mini.h: Bump AOT file format version.
14801         
14802         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
14803         covers more cases.
14804
14805 2006-04-25  Martin Baulig  <martin@ximian.com>
14806
14807         * driver.c: Disable copyprop, consprop and inline when running
14808         inside the debugger.
14809
14810 2006-04-25  Martin Baulig  <martin@ximian.com>
14811
14812         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
14813         with `get_current_thread' and added `detach'.
14814         (MonoDebuggerMetadataInfo): Added `thread_size',
14815         `thread_tid_offset', `thread_stack_ptr_offset' and
14816         `thread_end_stack_offset'.
14817
14818 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14819
14820         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
14821         aot-runtime.c.
14822
14823         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
14824         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
14825
14826         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
14827
14828         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
14829
14830         * aot.c: Add support for ADJUSTED_IID.  
14831
14832 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
14833
14834         * aot.c (emit_method_order): Don't align method_order_end.
14835
14836         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
14837         the interface ID changes.
14838
14839 2006-04-21  Dick Porter  <dick@ximian.com>
14840
14841         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
14842         cleaning up a thread.  Fixes the new part of bug 77470.
14843
14844 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
14845
14846         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
14847         to managed wrapper.
14848                      
14849 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
14850
14851         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
14852         
14853         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
14854         SIGSEGV. Fixes #78072.
14855
14856         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
14857         unregister our SIGABRT handler.
14858
14859 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
14860
14861         * mini.c: Disabled inline where it can alter the call stack in a
14862         way visible from managed code.
14863         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
14864         default.
14865
14866 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
14867
14868         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
14869         on other platforms. Fixes #78089.
14870
14871 2006-04-13  Martin Baulig  <martin@ximian.com>
14872
14873         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
14874         determine whether we're inside the debugger.
14875
14876         * debug-debugger.h
14877         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
14878
14879 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14880
14881         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
14882         handler clauses. Fixes #78024.
14883
14884         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
14885         in the CALL_MEMBASE opcodes. Fixes #78088.
14886         (mono_arch_get_vcall_slot_addr): Ditto.
14887
14888 2006-04-10  Martin Baulig  <martin@ximian.com>
14889
14890         * debug-debugger.c: The thread handling code has now been moved
14891         into ../metadata/threads.c.
14892
14893 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14894
14895         * driver.c (mono_main): Fix --with-gc=none build.
14896
14897         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
14898         (mono_spillvar_offset_float): Ditto.
14899         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
14900         hreg, not when its !global, since on ia64, there is a third category: stacked
14901         registers.      
14902
14903 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
14904
14905         * mini.c: set MonoInst->klass for load field address and a few other
14906         places.
14907
14908 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
14911
14912 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14913
14914         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
14915         the branch opt changes.
14916
14917 2006-04-06  Dick Porter  <dick@ximian.com>
14918
14919         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
14920         
14921         * wapihandles.c (mini_wapi_seminfo): 
14922         * driver.c (mono_main): Add semaphore info option
14923
14924 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14925
14926         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14927         branch optimization changes. Fixes #78009.
14928
14929 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14930
14931         * mini.c: ignore accessibility of methods in managed->native wrappers.
14932
14933 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14934
14935         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14936         
14937         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14938
14939 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14940
14941         * mini.c: Modify the branch optimizations to preserve the invariant that
14942         the entries inside the in_bb and out_bb arrays are unique.
14943         (mono_unlink_bblock): Avoid creation of new arrays.
14944
14945 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14946
14947         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14948         change (#77992).
14949
14950 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14951
14952         * mini.c (optimize_branches): Remove the "optimizations" in
14953         the cbranch1/cbranch2 -> branch cases which were causing several
14954         problems in the past. Fixes #77986.
14955
14956 2006-03-31  Chris Toshok  <toshok@ximian.com>
14957
14958         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14959         default optimizations :(
14960
14961 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14962
14963         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14964         branch.
14965
14966 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14967
14968         * local-propagation.c: Added comments to structs and removed
14969         "Mono" prefixes from local tree mover types.
14970
14971 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14972
14973         * Makefile.am (arch_sources): Define this for each architecture so 
14974         libmono_la_SOURCES is defined in one place.
14975
14976 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14977
14978         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14979         from handles/.
14980
14981 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14982
14983         * driver.c: print the GC name supplied by configure.
14984
14985 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14986
14987         * local-propagation.c: Added tree mover, and moved here all the
14988         local propagation code from mini.c
14989         * mini.c: Added support for treeprop, and moved all the local
14990         propagation code to local-propagation.c
14991         * mini.h: Added support for treeprop
14992         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14993         treeprop, inline and deadce by default
14994         * Makefile.am: Added local-propagation.c
14995
14996 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14997
14998         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14999
15000 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15001
15002         * debug-debugger.c: make it compile without the Boehm GC.
15003
15004 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15005
15006         * mini.c: fixed issue with mismatch when an icall is registered
15007         with multiple names but same address.
15008
15009 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15010
15011         * declsec.c, mini-exceptions.c: use write barrier to set reference
15012         fields of managed objects.
15013
15014 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15015
15016         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15017         (can_access_internals): Fix a warning.
15018
15019         * mini.c (print_method_from_ip): Rename this to 
15020         mono_print_method_from_ip so it gets exported.
15021
15022         * trace.c: Deal with strings inside StringBuilder's containing garbage
15023         and fix memory leaks. Fixes #77848.
15024
15025 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15026
15027         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
15028         fixes #77787.
15029
15030 2006-03-16 Neale Ferguson <neale@sinenomine.net>
15031         
15032         * mini-s390.c: Remove OP_X86_TEST_NULL.
15033
15034 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15035
15036         * mini.c: use the correct GetHashCode() for the moving collector.
15037
15038 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
15039
15040         * liveness.c: Regalloc spill cost tuning.
15041
15042 2006-03-15 Neale Ferguson <neale@sinenomine.net>
15043         
15044         * mini-s390x.h: Correct S390_LONG macro.
15045
15046         * mini-s390x.c: Cleanup unused code.
15047
15048 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
15049
15050         * jit-icalls.h: New file.
15051
15052         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
15053         icalls and include that instead of including jit-icalls.c.
15054
15055         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
15056         OP_X86 opcodes.
15057
15058 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
15059
15060         * mini.c: when checking for member accessibility, also check for
15061         friend assemblies and for explicit interface implementations.
15062
15063 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
15064
15065         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
15066
15067         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
15068
15069         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15070         common cases are done first.    
15071
15072         * mini-ops.h: Only define platform specific opcodes on the given platform.
15073
15074         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
15075         branch.
15076         
15077 2006-03-14  Martin Baulig  <martin@ximian.com>
15078
15079         Revert Paolo's change from r57348:
15080
15081         * mini.h: don't use gboolean for bitfields.
15082         * mini.c: verifier changes for fields and methods accessibility.
15083
15084 2006-03-13  Neale Ferguson <neale@sinenomine.net>
15085
15086         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
15087
15088         * mini-s390x.c: Fix conv_r_un.
15089
15090         * cpu-s390, cpu-s390x.md: Fix lengths.
15091
15092 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15093
15094         * mini.c: nested types have access to all the nesting
15095         levels, not just the enclosing types.
15096
15097 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15098
15099         * mini.c: added a few more verification checks.
15100
15101 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
15102
15103         * liveness.c: Merge optimizations from the linear-il branch.
15104
15105 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15106
15107         * mini-ia64.c (emit_call): Add a comment.
15108
15109         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
15110
15111         * tramp-ia64.c: Fix some warnings.
15112
15113 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15114
15115         * mini.h: don't use gboolean for bitfields.
15116         * mini.c: verifier changes for fields and methods accessibility.
15117
15118 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15119
15120         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
15121         lazy icall wrapper changes.
15122
15123         * dominators.c: Replace all the dominator algorithms with faster
15124         ones from the linear-il branch.
15125
15126         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
15127         the mempool.
15128
15129         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15130         common cases are done first.
15131
15132         * mini-amd64.c: Fix some warnings.
15133
15134         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
15135         from the mempool.
15136
15137         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
15138         added code.
15139
15140         * mini.h: Add a missing prototype.
15141
15142 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
15143
15144         * mini.c: Compile icall wrappers lazily.
15145
15146         * mini-codegen.c: Use printf instead of g_print since its much faster.
15147
15148         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
15149         function.
15150
15151         * mini.c (optimize_branches): Cache the negative result from 
15152         remove_block_if_useless ().
15153
15154         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
15155         Also fix some bblock linking issues.
15156
15157         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
15158         assembly files.
15159
15160         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
15161
15162         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
15163         accessed fields first, for better cache behavior.
15164         
15165 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15166
15167         * mini.c: speedup IList<T> array accesses.
15168
15169 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
15170
15171         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
15172         inline_costs counter. Fixes #77190.
15173
15174 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
15175
15176         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
15177         trace messages. Fixes #77706.
15178
15179 2006-03-04  Martin Baulig  <martin@ximian.com>
15180
15181         * tramp-amd64.c, tramp-x86.c
15182         (mono_debugger_create_notification_function): Use
15183         mono_global_codeman_reserve() to allocate a buffer at runtime and
15184         return it.
15185
15186         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
15187
15188         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
15189         notification function at runtime and then call `initialize' in the
15190         `MONO_DEBUGGER__debugger_info' vtable.
15191
15192 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
15193
15194         * iltests.il: Fix a visibility problem.
15195
15196 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15197
15198         * driver.c, mini.c: add hooks for the counters API.
15199
15200 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15201
15202         * driver.c: show disabled options.
15203
15204 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15205
15206         * linear-scan.c: always use cost-driven selection.
15207
15208 2006-02-28  Raja R Harinath  <rharinath@novell.com>
15209
15210         * jit-icalls.c (helper_compile_generic_method): Revert change from
15211         2006-02-24.
15212
15213 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
15214
15215         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
15216
15217 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
15218
15219         * inssel.brg: style fixes, mostly to force the updated monoburg
15220         to run for people using svn.
15221
15222 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
15223
15224         * mini.c: match monoburg changes.
15225
15226 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15227
15228         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
15229         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
15230         declaration in the header file.
15231
15232 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15233
15234         * helpers.c: reduce relocations and mem usage.
15235
15236 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15237
15238         * mini.h, mini-codegen.c: disable logging features if
15239         requested by configure.
15240
15241 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
15242
15243         * mini.c: tiny verifier changes.
15244
15245 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15246
15247         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
15248         cpu-pentium.md: stack alignment changes for osx/x86,
15249         partially from Geoff Norton <gnorton@customerdna.com>.
15250
15251 2006-02-24  Raja R Harinath  <harinath@gmail.com>
15252
15253         * jit-icalls.c (helper_compile_generic_method): Update to changes
15254         in metadata/class.c.
15255
15256 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
15257         
15258         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
15259         
15260         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
15261         interface calls with large offsets.
15262
15263 2006-02-23  Raja R Harinath  <rharinath@novell.com>
15264
15265         * jit-icalls.c (helper_compile_generic_method): Document the
15266         special-case we depend on so that we can inflate the method twice
15267         with the same context with no bad side-effects.
15268
15269 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
15270
15271         * mini-x86.c, mini-amd64.c: fix for case when xen support
15272         is disabled.
15273
15274 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
15275
15276         * mini-x86.c, mini-amd64.c: generate code to access tls items
15277         in a faster way for Xen systems.
15278
15279 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15280
15281         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
15282         updates and compilation fixes for the OSX/x86 port, mostly from
15283         Geoff Norton <gnorton@customerdna.com>.
15284
15285 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15286
15287         * inssel.brg: faster interface call implementation
15288         to sync with the interface_offsets MonoVTable changes.
15289
15290 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15291
15292         * mini.c: more verification checks.
15293
15294 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
15295
15296         * mini.c: added a few more verification checks.
15297
15298 2006-02-17      Neale Ferguson <neale@sinenomine.net>
15299
15300         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
15301         facility on the processor and use it if available.
15302
15303 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15304
15305         * driver.c, aot.c, mini.c: throw exception if the IL code is
15306         invalid or unverifiable.
15307
15308 2006-02-17  Raja R Harinath  <rharinath@novell.com>
15309
15310         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
15311         m.StructField.
15312
15313 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
15314
15315         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
15316
15317 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15318
15319         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
15320         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
15321         handling of instantiated generic valuetypes.
15322
15323 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
15324
15325         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
15326         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
15327         instead.
15328
15329         * generics.2.cs: Revert the nullable reftypes tests.
15330
15331 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
15332
15333         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
15334         using __builtin_frame_address (1) as it doesn't work in the presence
15335         of optimizations. Hopefully fixes #77273.
15336
15337         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
15338         -> generics.cs change as it doesn't work with some automake versions.
15339
15340 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15341
15342         * mini.c: handle systems that sue a different way to
15343         retrieve the stack address of the current thread.
15344
15345 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
15346
15347         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
15348         it specially in the makefile.
15349
15350         * generics.2.cs: Add tests for nullable reference types.
15351
15352 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15353
15354         * mini.c: always handle the case when mono_jit_init()
15355         is called in a thread different from the main thread,
15356         confusing libgc (bug #77309).
15357
15358 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
15359
15360         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
15361
15362 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15363
15364         * mini.c: change optimize_branches () to use a single loop
15365         and introduce a new optimization to simplify some range checks.
15366
15367 2006-02-03  Martin Baulig  <martin@ximian.com>
15368
15369         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
15370         and merged with debugger_thread_manager_add_thread().
15371         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
15372         inform the debugger about the main thread.
15373
15374 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15375
15376         * basic.cs: Add test for div.un/rem.un constant folding.
15377
15378 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15379
15380         * cpu-s390x.md: correct int_xor_imm length
15381
15382 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15383
15384         * generics.2.cs: New test for #77442.
15385
15386         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15387         #77442.
15388
15389 2006-02-02  Martin Baulig  <martin@ximian.com>
15390
15391         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15392         <mono/metadata/mono-debug-debugger.h>   
15393
15394         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15395
15396 2006-02-02  Martin Baulig  <martin@ximian.com>
15397
15398         * debug-debugger.h: New header file for debug-debugger.c.
15399
15400         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15401         function is a separate thread anymore; add support for attaching.
15402
15403 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15404
15405         * tramp-x86.c: Fix a warning.
15406
15407 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15408
15409         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15410         on very large methods.
15411
15412         * aot.c (load_patch_info): Fix a warning.
15413
15414 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15415
15416         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
15417         mini-ops.h: alu membase optimizations.
15418
15419 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
15420
15421         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
15422         to speedup StringBuilder.
15423
15424 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
15425
15426         * dominators.c (mono_compute_natural_loops): Fix detection of
15427         loop body start blocks.
15428
15429         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
15430
15431 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15432
15433         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
15434         #75145.
15435
15436 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
15437
15438         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15439
15440 2006-01-25  Martin Baulig  <martin@ximian.com>
15441
15442         * debug-debugger.c: Moved the `MonoDebuggerManager' and
15443         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
15444         started to cleanup this file a little bit.
15445
15446 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
15447
15448         * mini.c: optimize a codepath frequently happening in generics code.
15449
15450 2006-01-23  Martin Baulig  <martin@ximian.com>
15451
15452         * Makefile.am: Only compile debug-debugger.c on supported platforms.
15453
15454         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
15455         functions directly.
15456
15457         * driver.c: debug-debugger.c is only available if
15458         `MONO_DEBUGGER_SUPPORTED' is defined.   
15459
15460 2006-01-23  Martin Baulig  <martin@ximian.com>
15461
15462         * debug-debugger.c: Only enable this on platforms where the Mono
15463         Debugger is working (x86 and x86_64).
15464
15465 2006-01-21  Martin Baulig  <martin@ximian.com>
15466
15467         The Mono Debugger is now using the normal `mono' instead of the
15468         `mono-debugger-mini-wrapper' when executing managed code.
15469
15470         * debug-debugger.c: New file; previously known as
15471         debugger/wrapper/wrapper.c.
15472
15473         * debug-mini.c (mono_init_debugger): Removed.
15474
15475         * driver.c (mono_main): Added new `--inside-mdb' command line
15476         argument which is used when running inside the debugger.
15477
15478 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
15479
15480         * liveness.c (mono_analyze_liveness): Remove some unused data
15481         structures.
15482
15483 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15484
15485         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
15486
15487 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
15488
15489         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
15490         depends on implementation details of monobitset.
15491
15492         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
15493         Fixes #77271.
15494
15495 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
15496
15497         * liveness.c: Update after monobitset changes.
15498
15499 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
15500
15501         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
15502
15503 2006-01-11 Neale Ferguson <neale@sinenomine.net>
15504
15505         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
15506
15507         * mini-s390x.c: Remove warning messages.
15508
15509 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15510
15511         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
15512
15513 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
15514
15515         * generics.2.cs: Add ldelem/stelem_any test.
15516
15517 2006-01-10 Neale Ferguson <neale@sinenomine.net>
15518
15519         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
15520
15521 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
15522
15523         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
15524         
15525 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
15526
15527         * generics.2.cs: Reenable vtype tests.
15528
15529         * inssel-x86.brg: Remove an icorrect valuetype rule.
15530
15531 2006-01-06 Neale Ferguson <neale@sinenomine.net>
15532
15533         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
15534         initial support for OP_ABS.
15535
15536 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15537
15538         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
15539
15540 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15541
15542         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
15543         conversion and implement LADD/LSUB.
15544
15545         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
15546         architectures.
15547
15548 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15549
15550         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
15551
15552         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
15553         architectures.
15554
15555 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15556
15557         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
15558         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
15559         (stack walk problem).
15560
15561 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
15562
15563         * aot.c (mono_aot_load_method): Fix a warning.
15564
15565 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15566
15567         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
15568
15569 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15570
15571         * iltests.il: Add test for #77148.
15572
15573         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
15574         #77148.
15575
15576 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15577
15578         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
15579
15580 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15581
15582         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
15583         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
15584
15585         * basic-long.cs: Add lconv-to-r4/r8 tests.
15586
15587 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
15590
15591         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
15592         here as on other archs.
15593
15594 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15595
15596         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
15597
15598 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15599
15600         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
15601         
15602         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
15603
15604         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
15605         instrument_prolog; Add memory_barrier instruction.
15606
15607 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
15608
15609         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
15610
15611 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
15612
15613         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
15614
15615         * aliasing.c inssel.brg: Fix warnings.
15616
15617         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
15618         could skip initialization of some parts of memory.
15619
15620         * mini.c mini-ia64.c: Fix warnings.
15621
15622         * inssel-sparc.brg: Add an implementation of lneg which actually works.
15623
15624 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15625
15626         * aliasing.c (mono_build_aliasing_information): Add a workaround for
15627         a crash seen on sparc.
15628
15629         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
15630         
15631         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
15632
15633 2005-12-21 Neale Ferguson <neale@sinenomine.net>
15634
15635         * mini-ops.h: Add s390_backchain instruction
15636
15637         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
15638
15639         * cpu-s390.md: Add s390_backchain instruction
15640
15641         * mini-s390.c: Significant ABI changes
15642
15643         * mini-s390.h: Cater for zero length structures
15644
15645 2005-12-20 Neale Ferguson <neale@sinenomine.net>
15646
15647         * mini-s390.c: ABI fixes
15648
15649         * inssel-s390.brg: Remove debug statements
15650
15651         * cpu-s390.md: Fix length of ATOMIC_xx operations
15652
15653 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
15654
15655         * basic-float.cs: Add float<->long conversion tests.
15656
15657 2005-12-16 Neale Ferguson <neale@sinenomine.net>
15658
15659         * mini-s390.c: Fix LOCALLOC processing.
15660
15661         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
15662
15663 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15664
15665         * iltests.il: Add tests for some opcodes not covered by the other
15666         tests.
15667
15668 2005-12-15 Neale Ferguson <neale@sinenomine.net>
15669
15670         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
15671         register loading for Tail processing; Correct trace output.
15672
15673         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
15674
15675         * cpu-s390.md: Correct size of jmp instruction. 
15676
15677 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15678
15679         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
15680
15681 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15682
15683         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
15684           Bring s390 up to current level.
15685
15686 2005-12-12  Zltan Varga  <vargaz@gmail.com>
15687
15688         * generics.2.cs: Disable the newly added tests as they do not work yet.
15689         
15690         * generics.2.cs: Add valuetype tests.
15691
15692 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
15693
15694         * basic-long.cs: Add i4->u8 test.
15695
15696         * objects.cs: Add tests for JIT intrinsic.
15697
15698         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
15699         optimizations lost by a mistake.
15700
15701 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * basic-long.cs: Remove a test moved to objects.cs.
15704
15705         * arrays.cs: Add more array tests.
15706
15707 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15708
15709         * arrays.cs: Add new tests for multi-dimensional arrays.
15710
15711 2005-12-06  Raja R Harinath  <rharinath@novell.com>
15712
15713         * Makefile.am (test_sources2): Add generics.2.cs.
15714         (EXTRA_DIST): Add test_sources2.
15715
15716 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15717
15718         Support for boxing and unboxing nullable types as well as the
15719         isinst operation on nullables, per the CLI ammendment.
15720
15721         * inssel.brg (CEE_ISINST): Special case for nullable
15722
15723         * mini.c (handle_unbox_nullable): new method
15724         (handle_box): Special case for nullable types
15725         (mono_method_to_ir): Call handle_unbox_nullable in correct
15726         places.
15727
15728         * generics.2.cs: New test suite
15729
15730         * Makefile.am: Support for regression tests with generics.
15731
15732 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
15733
15734         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
15735         allocated to registers. Fixes #76800.
15736
15737 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
15738
15739         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
15740
15741 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
15742
15743         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
15744         of platforms.
15745
15746 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
15747
15748         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
15749         objects.cs.
15750
15751         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
15752         
15753         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
15754 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
15755
15756         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
15757         single precision before storing to a single precision location.
15758
15759 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15760
15761         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
15762
15763 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
15764
15765         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
15766         correct files.
15767
15768         * basic.cs: Remove test_0_byte_compares test which was moved to
15769         objects.cs a long time ago.
15770
15771 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
15772
15773         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15774
15775 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
15776
15777         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
15778         handlers are called.
15779
15780         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
15781         throwing code.
15782
15783          * mini-ia64.c: Add support for the throw->branch exception 
15784         optimization.   
15785
15786         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
15787
15788 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15789
15790         * mini.c: Enabled "fastpath" deadce :-)
15791         
15792 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15793
15794         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
15795         alias analysis pass to support it.
15796         * mini.h: Likewise.
15797         * ssa.c: Likewise.
15798         * liveness.c: Likewise (liveness computation can use aliasing
15799         information to be more accurate).
15800         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
15801         moreover made so that "--compile-all" uses the given optimization
15802         flags and not the default ones.
15803         * aliasing.c: Alias analysis (new file).
15804         * aliasing.h: Likewise.
15805         * Makefile.am: added "aliasing.c" and "aliasing.h".
15806         
15807 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15808
15809         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
15810         OP_L opcodes.
15811
15812 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
15813
15814         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
15815         fp >= end_of_stack exit condition, as it is not needed, and it might
15816         become true for fp eliminated frames.
15817
15818 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15819
15820         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
15821         coded offsets.
15822
15823 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
15824
15825         * mini-arm.c: fixed alignment of doubles/longs to match
15826         the C ABI (bug #76635).
15827
15828 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
15829
15830         * aot.c: fix compilation with --enable-minimal=aot.
15831
15832 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
15833
15834         * mini-arm.c: fixed compatibility with the new
15835         floating point emulator package for compares.
15836
15837 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
15838
15839         * mini.c : reverted sig->pinvoke changes (r51396-51397).
15840
15841 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
15842
15843         * mini-exceptions.c (print_stack_frame): Output to stderr.
15844         (mono_handle_native_sigsegv): Ditto.
15845
15846 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15847
15848         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
15849         OP_LCONV_TO_OVF_I implementation.
15850
15851         * mini-amd64.c: Add support for the throw->branch exception 
15852         optimization.
15853
15854         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
15855         when the catch clause catches a more general exception, i.e. Object.
15856
15857 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
15858
15859         * cpu-ia64.md: Remove unused opcodes.
15860
15861         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
15862         specific defines for architectures defining USE_SIGACTION.
15863
15864         * mini-ia64.c: Fix some warnings.
15865
15866         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
15867         version seemed to skip a frame.
15868
15869 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15870
15871         * mini.c: Clean up the usage of sig->pinvoke flag. Now
15872         only calls which are made to native code use this flag.
15873
15874 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15875
15876         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
15877         varargs methods as well.
15878         
15879         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
15880         which have save_lmf set. Reorganize methods prologs a bit.
15881
15882         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
15883         debugger to the proper place.
15884
15885 2005-10-29  Martin Baulig  <martin@ximian.com>
15886
15887         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
15888         when running inside the debugger until the debugger has support
15889         for it.
15890
15891 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15892
15893         * mini.h: Fix a warning.
15894
15895 2005-10-24  Miguel de Icaza  <miguel@novell.com>
15896
15897         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
15898         we expose publicly, this returns the string.
15899
15900 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
15901
15902         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
15903         with fp elimination.
15904
15905 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15906
15907         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
15908         native stacktrace using the glibc 'backtrace' function if available.
15909
15910 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
15911
15912         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
15913
15914         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
15915         handle SIGSEGVs received while in native code.
15916
15917         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
15918         code, call mono_handle_native_sigsegv which will abort the runtime
15919         after printing some diagnostics, instead of converting it into a
15920         confusing NullReferenceException.
15921
15922 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15923
15924         * cpu-pentium.md: Remove unused opcodes.
15925
15926 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15927
15928         * mini-amd64.h (MonoLMF): Add rsp field.
15929
15930         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15931         the lmf too.
15932
15933 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15934
15935         * mini-codegen.c (get_register_spilling): Fix some warnings.
15936
15937 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15938
15939         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15940         elimination during exception handling. Enable fp elimination by
15941         default.
15942
15943         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15944         elimination.
15945
15946 2005-10-16  Martin Baulig  <martin@ximian.com>
15947
15948         * mini-exceptions.c
15949         (mono_debugger_run_finally): New public method for the debugger.
15950
15951 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15952
15953         * debug-mini.c (mono_debug_init_method): Fix warning.
15954
15955         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15956         the 'exname' parameter const to fix some warnings.
15957
15958 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15959
15960         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15961         introduced by the previous patch.
15962
15963 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15964
15965         * basic-float.cs: Add test for precision of float arithmetic.
15966
15967         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15968         when loading/storing single values from/to memory.
15969
15970         * mini.c (mono_jit_compile_method_with_opt): Create the function
15971         pointers in the correct domain.
15972
15973 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15974
15975         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15976         introduced by previous patch.
15977         
15978         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15979         when out_filter_idx is NULL.
15980
15981         * mini-exceptions.c: Don't run filter clauses twice during exception
15982         handling. Fixes #75755.
15983
15984 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15985
15986         * aot.c: Add support for ldflda wrappers.
15987
15988         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15989         #75902.
15990
15991 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15992
15993         * mini.c, mini.h: do not consider exception handlers blocks when
15994         setting up interface variables.
15995
15996 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15997
15998         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15999
16000 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16001
16002         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16003         causes a regression.
16004
16005         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16006
16007 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16008
16009         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16010         of the OP_P definitions.
16011
16012         * TODO: Add a proposal for dealing with the CEE/OP mess.
16013
16014         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16015         optimizations from the x86 port.
16016
16017         * cpu-amd64.md: Ditto.
16018
16019         * basic.cs basic-long.cs: Add tests.
16020
16021 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
16022
16023         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
16024         Patrik Torstensson's implementation of my exception-handling
16025         optimization idea, when the exception object is not used
16026         (bug #62150).
16027
16028 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
16029
16030         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
16031         of the mul_imm optimizations from the old jit.
16032
16033 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
16034
16035         * mini.c, liveness.c: patch by Patrik Torstensson and
16036         Zoltan Varga to improve performance in methods with
16037         exception clauses.
16038
16039 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16040
16041         * driver.c: Remove 'Globalization' entry from --version.
16042
16043 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
16044
16045         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
16046         there is a profiler interested in JIT events.
16047
16048         * aot.c: Load profile files produced by the AOT profiling module, and
16049         reorder methods based on the profiling info. Add a 'method_order' table
16050         to the AOT file to make mono_aot_find_jit_info work with the reordered
16051         methods.
16052
16053         * mini.h: Bump AOT file version info.
16054
16055 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
16056
16057         * mini-arm.h: work around what looks like a gcc bug when optimizations
16058         are enabled.
16059
16060 2005-09-28  Raja R Harinath  <rharinath@novell.com>
16061
16062         * Makefile.am (AM_CFLAGS): Don't use += to append inside
16063         conditionals.  Use ...
16064         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
16065
16066 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
16067
16068         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
16069         to determine the amount of memory to copy when passing valuetypes.
16070
16071         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
16072         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
16073
16074 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
16075
16076         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
16077         information about aot.
16078
16079 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16080
16081         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16082         macros. This will allow a deadlock debugger to easily be plugged
16083         in.
16084
16085 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
16086
16087         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
16088
16089 2005-09-27  Raja R Harinath  <rharinath@novell.com>
16090
16091         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
16092         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
16093         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
16094         ($(arch_built)) [CROSS_COMPILING]: Error out.
16095
16096 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16097
16098         * aot.c: Add support for the no_special_static flag for classes.
16099
16100 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16101
16102         * Reapply reverted patches.
16103
16104         * *: Revert r50174 as well.
16105
16106         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
16107
16108 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16109
16110         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
16111
16112 2005-09-23  Miguel de Icaza  <miguel@novell.com>
16113
16114         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
16115         part of the SIG_HANDLER_SIGNATURE.  
16116
16117 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16118
16119         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
16120         statistics.
16121
16122         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
16123         introduced by previous patch.
16124
16125 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
16126
16127         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
16128         saved registers too.
16129
16130         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
16131         upon the information returned by get_call_info ().
16132         
16133         * mini-x86.c (add_float): Fix stack size calculation.
16134         (mono_arch_call_opcode): Rewrite this so it works based up the
16135         information returned by get_call_info ().
16136         (mono_arch_get_this_vret_args): Ditto.
16137
16138 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
16139
16140         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
16141         in cinfo to determine the registers which need to be used.
16142
16143 2005-09-20  Miguel de Icaza  <miguel@novell.com>
16144
16145         * driver.c (mono_main): Add --server and --desktop flags. 
16146
16147 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
16148
16149         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
16150         registers as global registers.
16151
16152         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
16153         longer needed with the new register allocator.
16154
16155         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
16156
16157         * cpu-ia64.md: Remove unused opcodes.
16158         
16159         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
16160         
16161 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
16162
16163         * cpu-amd64.md: Remove unused opcodes.
16164
16165         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
16166         needed with the new register allocator.
16167
16168         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
16169         reg-reg moves.
16170
16171 2005-09-16  Raja R Harinath  <rharinath@novell.com>
16172
16173         * Makefile.am (check-local): Don't invoke semdel-wrapper.
16174
16175 2005-09-16  Martin Baulig  <martin@ximian.com>
16176
16177         * exceptions-amd64.c
16178         (throw_exception): Don't call mono_debugger_throw_exception() if
16179         we're a rethrow - see the FIXME in the code.
16180
16181 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
16182
16183         * mini.c (mono_init_exceptions): This only works on some architectures.
16184         
16185 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16186
16187         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
16188         on ia64.
16189
16190         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
16191
16192         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
16193         now in mini-exceptions.c.
16194
16195 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
16196
16197         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
16198         now in mini-exceptions.c.
16199
16200 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16201
16202         * exceptions-x86.c: Applied patch from Patrik Torstensson 
16203         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
16204
16205         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
16206         code into mini-exceptions.c. Add some assertions to it.
16207
16208 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
16209
16210         * aot.c (emit_section_change): Applied patch from "The Software Team" 
16211         (<software@solmersa.com>). Fix as errors on windows.
16212
16213 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16214
16215         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
16216         method info into the LMF.
16217
16218 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16219         
16220         * mini-ia64.c: Add proper unwind info for method epilogs.
16221
16222         * exceptions-ia64.c: Add some code to help debugging.
16223         
16224         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
16225
16226         * mini-exceptions.c: Fix warning.
16227
16228 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16229
16230         * mini.c: Really fix build.
16231
16232         * mini-x86.c mini-amd64.c: Fix build.
16233
16234 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16235
16236         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
16237
16238         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
16239         some Interlocked methods as intrinsics.
16240
16241         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
16242         for Thread methods as well.
16243
16244         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
16245
16246         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
16247
16248         * mini-ia64.c mini-x86.c mini-amd64.c 
16249         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
16250         OP_MEMORY_BARRIER.
16251         
16252         * mini.c (mono_init_exceptions): Fix build breakage.
16253
16254 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
16255
16256         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
16257         of instructions. Use the new ia64_unw_op macros for emitting unwind
16258         info.
16259
16260         * mini.c (mono_init_exceptions): Initialize exception handling
16261         related trampolines at startup.
16262
16263 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
16264
16265         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
16266
16267 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
16268
16269         * mini.c: Handle type loading errors gracefully during compilation and
16270         throw the appropriate exception.
16271
16272 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
16273
16274         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
16275         for the mono binary.
16276
16277 2005-09-09  Martin Baulig  <martin@ximian.com>
16278
16279         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
16280         the release.
16281
16282 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16283
16284         * mini-arm.h: use emulation for conv.r.un for the release.
16285
16286 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16287
16288         * mini-arm.c, objects.cs: more fixes and tests for them.
16289
16290 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16291
16292         * mini-arm.c: align structures to at least 4 bytes to be able
16293         to keep our current optimized memcpy.
16294
16295 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
16296
16297         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
16298
16299 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16300
16301         * mini.c: ignore SIGPIPE.
16302
16303 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
16304
16305         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
16306
16307         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
16308
16309 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
16310
16311         * mini.h: Add prototype for mono_allocate_stack_slots_full.
16312
16313 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16314
16315         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
16316         exception handling support.
16317         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
16318         patch by Brian Koropoff <briank@marakicorp.com>).
16319
16320 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
16321
16322         * mini.c: revert another 'optimization' which breaks when
16323         items on the eval stack need to be saved at a basic block end
16324         (bug #75940).
16325
16326 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16327
16328         * jit-icalls.c: for arrays, ensure we always provide
16329         lower bounds.
16330
16331 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
16332
16333         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
16334         
16335         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
16336
16337 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
16338
16339         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
16340         arguments in their original register.
16341
16342 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
16343
16344         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
16345         memset/memcpy.
16346
16347         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
16348         when ssapre is enabled.
16349
16350         * inssel-long.brg: Fix bug in previous patch.
16351
16352         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
16353         multiplication by a constant.
16354
16355 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
16356
16357         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
16358         icc.
16359
16360         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
16361         saving registers.
16362
16363 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
16364
16365         * inssel-arm.brg: apply changes tested by Brian Koropoff
16366         <briank@marakicorp.com>.
16367
16368 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16369
16370         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
16371         
16372 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
16373
16374         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
16375         to the same register if dreg is just a base register.
16376         (print_ins): Improve printing of membase opcodes.
16377
16378         * inssel-x86.brg: Add optimized ldind(reg) rules.
16379
16380         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16381
16382 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16383
16384         * mini.c: when running under valgrind, set the stack bottom for
16385         the GC at the actual approximate stack for the app (fixes running
16386         mono with valgrind).
16387
16388 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16389
16390         * mini.c: do no break at the first valuetype to init found
16391         (fixes bug #75791).
16392
16393 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16394
16395         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16396
16397 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16398
16399         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16400
16401 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16402
16403         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16404
16405 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16406
16407         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16408
16409         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16410         code.
16411
16412         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16413         code.
16414
16415         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
16416         methods.
16417
16418 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
16419
16420         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
16421
16422 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16423
16424         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
16425         in the tail recursion optimization.
16426
16427         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
16428         debug info into the assembly file.
16429
16430         * iltests.il: Add test for filter regions.
16431
16432         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
16433         initial stack of filter regions. Fixes #75755.
16434
16435 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
16436
16437         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
16438         stack requirements.
16439
16440 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16441
16442         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
16443         the check for an already compiled method on non-ia64 platforms.
16444         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
16445         proper domain.
16446
16447         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
16448
16449         * inssel-x86.brg: Add some optimized call rules.
16450
16451 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16452
16453         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
16454         method here.
16455
16456         * mini.h mini-trampolines.c: Pass the trampoline argument to 
16457         mono_arch_patch_delegate_trampoline.
16458
16459         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
16460
16461         * mini-trampolines.c: Fix build.
16462
16463         * mini-amd64.h: Add delegate trampolines.
16464
16465         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
16466
16467         * inssel-amd64.brg: Add optimized call rules.
16468         
16469         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
16470
16471         * inssel-ia64.brg: Add optimized ldind(reg) rules.
16472
16473 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16474
16475         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
16476         change.
16477
16478         * mini-ia64.c: Remove LMF fixmes.
16479
16480         * mini-ia64.h: Remove most fields from LMF.
16481
16482         * inssel-ia64.brg (stmt): Fix unaligned access errors.
16483
16484         * mini-trampolines.c: Add support for IA64 function descriptors.
16485
16486         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
16487         for IA64 function descriptors.
16488
16489 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
16490
16491         * tramp-arm.c: patch the vtable for virtual calls. Added
16492         support code to register/unregister the LMF.
16493         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
16494         more LMF work.
16495
16496 2005-08-19  Dick Porter  <dick@ximian.com>
16497
16498         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
16499         bit value if needed.
16500
16501 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16502
16503         * mini.c (mini_get_method): Move handling of wrapper data here.
16504
16505         * mini.c (mono_method_to_ir): Add support for dynamic methods.
16506
16507         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
16508         virtual.
16509
16510         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
16511         bblock->code does not remain empty.
16512
16513 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
16514
16515         * arrays.cs: Add regression test for #75832.
16516
16517         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
16518         rules. Fixes #75832.
16519
16520         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
16521         instruction scheduling.
16522
16523 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
16524
16525         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
16526
16527 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16528
16529         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
16530
16531         * mini-codegen.c: Fix VC build.
16532
16533         * cpu-pentium.md: Increase length of atomic_exhange_i4.
16534
16535 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16536
16537         * mini.h: fix signature for mono_register_opcode_emulation.
16538
16539 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
16540
16541         * mini.c: Get rid of most of the helper_sig_... constants using
16542         mono_create_icall_signature ().
16543
16544 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16545
16546         * jit-icalls.c (helper_ldstr): New helper function.
16547
16548         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
16549
16550         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
16551         throw, load the string using a helper call instead of creating a string object.
16552
16553         * aot.c: Update after LDSTR changes.
16554
16555         * mini.h: Bump AOT file version.
16556         
16557         * aot.c: Save class size info into the AOT file. Print more statistics during
16558         compilation.
16559
16560         * mini.h: Bump AOT file version.
16561
16562         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
16563         ordering of disasm cases. Fixes #74957.
16564
16565 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
16566
16567         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
16568         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
16569         the generic code needed for the ARM port.
16570
16571 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
16572
16573         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
16574         inssel-arm.brg: more ARM features and fixes.
16575
16576 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
16577
16578         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
16579         ARM port work in progress.
16580
16581 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16582
16583         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
16584
16585         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
16586
16587         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
16588
16589         * inssel.brg (mini_emit_memset): Add support for unaligned access.
16590
16591         * *-ia64.*: Ongoing IA64 work.
16592         
16593         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
16594
16595 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16596
16597         * TODO: Remove out-of-data todo stuff.
16598
16599         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
16600         dead code.
16601
16602         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
16603
16604         * mini.h: Bump corlib version.
16605
16606 2005-07-27  Martin Baulig  <martin@ximian.com>
16607
16608         * mini-codegen.c
16609         (create_copy_ins): Added `const unsigned char *ip' argument; set
16610         `copy->cil_code' from it.
16611
16612 2005-07-27  Martin Baulig  <martin@ximian.com>
16613
16614         * mini-exceptions.c (mono_handle_exception): Don't call
16615         mono_debugger_handle_exception() for filters.
16616
16617 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
16618
16619         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
16620         as well.
16621
16622 2005-07-26  Martin Baulig  <martin@ximian.com>
16623
16624         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
16625
16626         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
16627         helper_compile_generic_method() if the method is actually virtual
16628         and non-final.
16629
16630 2005-07-26  Martin Baulig  <martin@ximian.com>
16631
16632         * mini.c
16633         (trampoline_code): Renamed to `mono_trampoline_code' and made it
16634         public; this is now accessed directly by the debugger.
16635         (mono_generic_trampoline_code): Removed.
16636
16637         * debug-mini.c
16638         (mono_debug_init_method): Also add interncalls and wrappers.
16639
16640 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
16641
16642         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
16643
16644 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16645
16646         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
16647
16648 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16649
16650         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
16651
16652 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16653
16654         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
16655         getting TLS offsets on AMD64 too.
16656
16657 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
16658
16659         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
16660
16661 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
16662
16663         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
16664         inssel-arm.brg, mini-arm.h: ARM port work in progress.
16665
16666 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16667
16668         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
16669
16670         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
16671         to mini.c.
16672
16673         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
16674         mono_sparc_is_virtual_call ().
16675         
16676         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
16677
16678         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
16679         trampoline parameters.
16680
16681         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
16682         
16683         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
16684         to mono_arch_get_vcall_slot_addr.
16685
16686         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
16687         trampoline code.
16688
16689         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
16690
16691 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16692
16693         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
16694
16695 2005-07-19  Martin Baulig  <martin@ximian.com>
16696
16697         * exceptions-amd64.c (throw_exception): Call
16698         mono_debugger_throw_exception() here like we're doing it on i386.
16699
16700 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16701
16702         * mini-ia64.c: Add optimized TLS access support.
16703
16704 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
16705
16706         * mini-exceptions.c: Ongoing IA64 work.
16707
16708         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
16709
16710         * mini.c: Use the default optimization set when embedding. Fixes
16711         #75194.
16712
16713 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
16714
16715         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
16716         of trampolines to a separate file.
16717
16718         * mini-trampolines.c: New file.
16719
16720         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
16721         separate file.
16722         
16723         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
16724         amd64/ia64 code.
16725
16726         * mini-codegen.c: Fix cygwin build.
16727
16728 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
16729
16730         * mini.c: Add some minor changes needed by the IA64 port.
16731
16732         * *-ia64.*: Ongoing IA64 work.
16733
16734 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
16735
16736         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
16737         trampolines into arch-independent and arch-dependent parts.
16738
16739         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
16740
16741 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
16742
16743         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
16744
16745         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
16746         the xp-regalloc-branch for amd64.
16747
16748         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
16749         xp-regalloc-branch for x86.
16750
16751 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16752
16753         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
16754
16755 2005-07-06  Martin Baulig  <martin@ximian.com>
16756
16757         * mini.c
16758         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
16759         (mono_jit_runtime_invoke): Likewise.
16760
16761 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16762
16763         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
16764         on x86 too.
16765         
16766         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
16767         without loading their metadata. Reorganize the file format so exception handling+
16768         debug info is kept separate from normal method info. Create MonoJitInfo 
16769         structures for methods lazily.
16770
16771         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
16772         loading metadata.
16773         (x86_class_init_trampoline): Patch AOT class init trampolines too.
16774
16775         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
16776
16777         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
16778         in AOT code.
16779
16780         * mini.h: Bump AOT file version.
16781
16782 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
16783
16784         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16785
16786 2005-07-01  Raja R Harinath  <rharinath@novell.com>
16787
16788         * Makefile.am (check-local): Call semdel-wrapper.
16789
16790 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
16791
16792         * mini-x86.c: Revert the last change as it seems to break the build..
16793
16794 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16795
16796         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16797         
16798         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
16799
16800 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
16801
16802         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
16803         outside of the macro, so strange stuff doesn't happen with gcc4
16804         (NEW_AOTCONST_TOKEN): Likewise.
16805
16806 2005-06-28  Martin Baulig  <martin@ximian.com>
16807
16808         * mini.c (mini_class_is_system_array): New static method; use this
16809         instead of `klass->parent == mono_defaults.array_class' everywhere
16810         since this also works for the new generic array class.
16811
16812 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16813
16814         * inssel.brg: Remove warnings.
16815
16816 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
16817
16818         * mini-ia64.c: Ongoing IA64 work.
16819
16820         * basic-float.cs: Add float->i1 conversion test.
16821
16822         * iltests.il: Add conv.u4 test.
16823
16824 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
16825
16826         * inssel-long.brg: Fix bug caused by last change.
16827
16828 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
16829
16830         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
16831         BSDs.  Allows the x86 JIT to work on OSX86
16832
16833 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
16834
16835         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
16836         u4->i8 conversion.
16837
16838         * mini-ia64.c: Ongoing IA64 work.
16839
16840 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16841
16842         * mini-ia64.c: Ongoing IA64 work.
16843
16844         * driver.c: Clean up jit_code_hash as well when using --regression.
16845
16846         * inssel-long.brg: Fix long->i4/u4 conversion rules.
16847
16848         * basic-long.cs: Add tests for long->u4 conversion.
16849
16850 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
16851
16852         * mini.c: Take mono_get_domainvar out of macros. This makes sure
16853         that we do not depend on undefined C behavior: the order stuff
16854         gets evaluated within an expression. Fixes mono when compiled on
16855         GCC 4.
16856
16857 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
16858
16859         * *-ia64.*: Ongoing IA64 work.
16860
16861         * aot.c: Lower memory usage while loading AOT methods.
16862
16863         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
16864
16865         * mini.h: Bump AOT file format version.
16866
16867 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16868
16869         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
16870
16871 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
16872
16873         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
16874         not on callee assembly). Fixed some comments.
16875
16876 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
16877
16878         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
16879         it gets proper disassembly.
16880         (emit_method_info): Remove some dead code.
16881
16882         * mini.c (mini_method_compile): Allways allocate the GOT var in
16883         mono_method_to_ir for emulating opcodes.
16884
16885 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
16886
16887         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
16888         before freeing the code memory. Fixes #74990.
16889
16890         * objects.cs: Add regression test for #74992.
16891
16892         * liveness.c: Extend live ranges of arguments to the beginning of the
16893         method. Fixes #74992.
16894
16895         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
16896         so it points into the faulting instruction.
16897
16898 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
16899
16900         * jit-icalls.c (mono_imul_ovf): Add exception handling.
16901
16902         * *-ia64.*: Ongoing IA64 work.
16903
16904         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
16905
16906 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
16907
16908         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
16909
16910         * *-ia64.*: Ongoing IA64 work.
16911
16912 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
16913
16914         * basic-long.cs: Add tests for add/sub.ovf.
16915
16916         * basic.cs: Add tests for sub.ovf.
16917
16918         * *-ia64.*: Ongoing IA64 work.
16919
16920 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
16921
16922         * *-ia64.*: Ongoing IA64 work.
16923
16924         * basic.cs: Add conv.ovf.i4.un test.
16925
16926 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16927
16928         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16929         
16930 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16931
16932         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16933
16934 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16935
16936         * *-ia64.*: Ongoing IA64 work.
16937
16938 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16939
16940         * trace.[ch]:
16941         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16942
16943 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16944
16945         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16946
16947 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16948
16949         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16950
16951         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16952         of a call is callable by a near call.
16953
16954 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16955
16956         * mini-ia64.c: Ongoing IA64 work.
16957
16958 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16959
16960         * genmdesc.c: Make the generated array non-static.
16961
16962         * inssel-long.brg: Fix LSHR_IMM rule.
16963
16964         * *-ia64.*: Ongoing IA64 work.
16965
16966         * *-ia64.*: Ongoing IA64 work.
16967
16968 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16969
16970         * *-ia64.*: Ongoing IA64 work.
16971
16972         * *-ia64.*: Ongoing IA64 work.
16973         
16974         * mini-ia64.c: Ongoing IA64 work.
16975
16976         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16977
16978 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16979
16980         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16981         
16982         * objects.cs basic-long.cs: Move some tests to objects.cs.
16983
16984 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16985
16986         * *-ia64.*: Ongoing IA64 work.
16987
16988         * iltests.il: Add a new test.
16989
16990         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16991         newobj. Fixes #75042.
16992
16993 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16994
16995         * *-ia64.*: Ongoing IA64 work.
16996         
16997         * *-ia64.*: Ongoing IA64 work.
16998         
16999         * *-ia64.*: Ongoing IA64 work.
17000
17001         * basic.cs objects.cs: Move tests accessing static variables as well.
17002
17003         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17004
17005 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17006
17007         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17008
17009         * driver.c: Always print failed tests.
17010
17011         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17012         frame pointer.
17013
17014         * *ia64*: Ongoing IA64 work.
17015
17016 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17017
17018         * basic.cs: Add tests for add.ovf. Fix warnings.
17019
17020 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17021
17022         * driver.c (mono_main): Avoid crash if no argument is passed to
17023         --break;  Do not use g_error, but f_printf.   And fix all other
17024         ocurrences of the same crash.
17025
17026 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
17027
17028         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
17029         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
17030         Fixes #74742.
17031
17032 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
17033
17034         * *-ia64.*: Add beginnings of IA64 backend.
17035
17036         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
17037
17038 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
17041         Fixes #74925.
17042
17043         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
17044
17045         * mini-amd64.c: Fix a warning.
17046
17047 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
17048
17049         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
17050         in float_neg. Fixes #74897.
17051
17052         * mini-amd64.c (emit_call): Fix another near call bug.
17053
17054 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
17055
17056         * declsec.c: Keep the appdomain information in the structure. Added a 
17057         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
17058         value gets overwritten).
17059         * declsec.h: Set the default MonoArray for the the stack to 6. Added
17060         an MonoAppDomain member to MonoSecurityFrame.
17061         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
17062         used in the stack walk. Now use a MonoArray which grow (double) when
17063         it gets full.
17064
17065 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17066
17067         * mini.c: Re-enabled runtime cleanup, since running threads should
17068         now properly stop when exiting.
17069
17070 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17071
17072         * mini-codegen.c: New file contaning the arch-independent local
17073         register allocator. Not used by any architectures yet.
17074
17075         * mini.h linear-scan.c: Merge some changes from the 
17076         mini-xp-local-regalloc branch.
17077
17078 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17079
17080         * mini-amd64.c (emit_call): Fix calls to native functions when the
17081         runtime is compiled as a shared library. Fixes #74756.
17082
17083         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
17084         on a literal field. Fixes #74751.
17085
17086 2005-04-25  Raja R Harinath  <rharinath@novell.com>
17087
17088         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
17089
17090 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17091
17092         * objects.cs: Add missing null casting test.
17093
17094 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17095
17096         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
17097         in wrapper methods. Also rename 'address' variable to 'offset'.
17098
17099 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17100
17101         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
17102         warnings.
17103         
17104         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
17105
17106         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
17107         work on windows.
17108
17109 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17110
17111         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
17112
17113 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
17116         just the last bytes.
17117
17118 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17119
17120         * aot.c (mono_compile_assembly): Fix warning.
17121
17122         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
17123         by the _MSC_VER stuff.
17124
17125 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17126
17127         * inssel-long.brg: Fix #74588.
17128
17129         * cpu-amd64.md: Fix #74591.
17130
17131         * iltests.il: Add new regression tests.
17132
17133 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17134
17135         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
17136         valuetype.
17137
17138 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
17139
17140         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
17141
17142         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
17143         from Bill Middleton <flashdict@gmail.com>.
17144
17145 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17146
17147         * arrays.cs: Add new regression test. Fix warnings.
17148
17149 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
17150
17151         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
17152         and leakage in CKFINITE.
17153
17154         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
17155         this to a null op since it is called on amd64 too.
17156
17157         * exceptions-amd64.c (get_throw_trampoline): Align stack.
17158
17159         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
17160         body since this is not used on amd64.
17161         
17162         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
17163
17164         * mini-amd64.c: Remove obsolete fixmes.
17165
17166         * mini.c (print_method_from_ip): Fix debugging support.
17167
17168 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17169
17170         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
17171         so that expressions that don't give much gain are not reduced.
17172         * ssapre.h: Likewise.
17173
17174 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17175
17176         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
17177
17178         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
17179
17180         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
17181
17182 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
17183
17184         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
17185
17186         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
17187
17188 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
17189
17190         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
17191         stack touching.
17192
17193         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
17194
17195         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
17196
17197         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
17198
17199         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
17200         MONO_ARCH_USE_SIGACTION. Fixes #74252.
17201
17202         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
17203
17204         * mini-x86.c: Fix up stack overflow handling.   
17205
17206         * exceptions.cs: Add new regression test.
17207
17208 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
17209
17210         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
17211         mono_jit_thread_attach.
17212
17213         * mini.c (mono_method_to_ir): Verify called method is not abstract.
17214
17215 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17216
17217         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
17218         avoid calling constructors using callvirt.
17219
17220         * inssel.brg: Fix #74073.
17221
17222 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17223
17224         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
17225         compilation with non-GCC compilers.
17226         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
17227         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
17228
17229 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
17230
17231         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
17232         klass->interface_offsets (will likely fix bug#74073).
17233
17234 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17235
17236         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
17237
17238 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
17241         to amd64_div_reg_size ().
17242         
17243         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
17244
17245 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17246
17247         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
17248
17249 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17250
17251         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
17252
17253 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17254
17255         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
17256         
17257         * mini.c (mono_precompile_assembly): Load and precompile referenced
17258         assemblies as well. Fixes #74015.
17259
17260 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17261
17262         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
17263
17264 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17265
17266         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
17267         a lot of checks and (anyway) permissions cannot work until corlib is 
17268         loaded.
17269
17270 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
17271
17272         * mini-ppc.c: fixed ABI issue on sysv/ppc.
17273
17274 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17275
17276         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
17277         calls (fixes bug#72824).
17278
17279 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17280
17281         * mini.c: fix tail recursion elimination (see test in bug#73936).
17282
17283 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
17284
17285         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
17286         some fp functions in sse2 mode.
17287
17288 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
17289
17290         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
17291
17292 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
17293
17294         * mini.h mini.c: Add mono_get_jit_tls_key ().
17295
17296         * mini-x86.c: Enable fast TLS support on windows.
17297
17298 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17299
17300         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
17301         * mini.c: Check for p/invoke method when generating code. If a
17302         p/invoke method, or it's class, isn't decorated with [Suppress
17303         UnmanagedCodeSecurity] then generate code to call System.Security.
17304         UnmanagedDemand (only if the security manager is active).
17305
17306 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17307
17308         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
17309         last change as it seems to cause strange crashes.
17310         
17311 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17312
17313         * *.c: handle unsafe function pointers where needed.
17314
17315 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17316
17317         * mini.c (mono_jit_free_method): Remove the fixme too.
17318
17319 2005-03-15  Miguel de Icaza  <miguel@novell.com>
17320
17321         * mini.c: As discussed, make the code actually free the delegate
17322         thunk now, to enable the debugging of delegate problems, use
17323         MONO_DEBUG=1 when running Mono. 
17324
17325         This takes also care of parts of the leaks as seen by Joe.
17326
17327 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
17328
17329         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
17330         thread_tls_offset calculation.
17331
17332 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
17333
17334         * declsec.c: Reworked linkdemand checks for icall. The previous code
17335         was using the declaration code (untrusted) and didn't work as expected
17336         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
17337         specific case.
17338
17339 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17340
17341         * iltests.il: Add new localloc test.
17342
17343         * mini-amd64.c: Handle large stack allocations the same way as on
17344         windows if stack overflow handling is working.
17345         
17346         * mini-amd64.c: Allocate the signal stack using mmap.
17347
17348         * mini.c (sigsegv_signal_handler): Fix reading of context.
17349
17350         * mini-exceptions.c: Fix up stack overflow handling.
17351
17352         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
17353
17354         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
17355
17356         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
17357
17358         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
17359
17360         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
17361         tramp_init functions as they are no longer needed.
17362
17363 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
17364
17365         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
17366         
17367         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
17368
17369         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
17370         
17371         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
17372         support that now.
17373
17374         * mini-ops.h: Add OP_LMUL_IMM.
17375
17376         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
17377         long mul/div opcodes as intrinsic.
17378
17379         * mini-amd64.c (emit_call): Handle the case when the callee might be
17380         an AOT method.
17381
17382 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17383
17384         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17385         extra safe.
17386         
17387         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17388
17389         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17390
17391 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17392
17393         * mini.c (mono_codegen): Don't leak here, to help people running
17394         monogrind.
17395
17396 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17397
17398         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17399         conversions in sse2 mode.
17400
17401         * basic-float.cs: Add regression test.
17402         
17403         * mini-amd64.c: Reenable sse2.
17404
17405 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17406
17407         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17408
17409 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17410
17411         * driver.c: Copyright text should include 2005.
17412         
17413 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17414
17415         * cpu-amd64.md (load_membase): Fix more max lengths.
17416
17417 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
17418
17419         * cpu-amd64.md (load_membase): Fix max length.
17420
17421         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
17422
17423         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
17424
17425         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
17426         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
17427
17428         * basic-float.cs: Add rounding regression test.
17429
17430         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
17431
17432 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
17433
17434         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
17435         structures in registers for pinvoke wrappers.
17436
17437 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17438
17439         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
17440
17441 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17442
17443         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
17444         wrapper to mono_jit_thread_attach.
17445
17446         * mini.c (mini_jit_thread_attach): New jit icall.
17447
17448         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
17449         native->managed wrappers.
17450
17451         * exceptions.cs: Add new regression test.
17452
17453         * mini.c (optimize_branches): Check regions in the cbranch to throw
17454         block case as well. Fixes #73242.
17455
17456 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17457
17458         * mini.c: thread safety fixes.
17459
17460 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
17461
17462         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
17463         patching stuff, since delegates use jump trampolines so there is
17464         no caller.
17465
17466         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
17467         jump trampolines.
17468         
17469         * tramp-amd64.c: Fix build.
17470
17471         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
17472         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
17473
17474         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
17475         Rename this to mono_arch....
17476         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
17477
17478         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
17479
17480         * mini-amd64.c (emit_call): If both the caller and the callee is
17481         guaranteed to have 32 bit addresses, emit a normal call.
17482
17483         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
17484
17485         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
17486         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
17487         method_ptr inside delegates.
17488
17489 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
17490
17491         * mini.c (mono_jit_free_method): Free the method info even if the native code is
17492         invalidated. Fixes #73001.
17493
17494         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
17495
17496         * mini-x86.c: Only use stdcall for pinvokes on windows.
17497
17498 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
17499
17500         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
17501         * mini-x86.c: remove unreliable __thread var offset detection,
17502         use the correct accessors and enable by default.
17503
17504 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17505
17506         * mini.c (mono_jit_free_method): Fix memory leak.
17507
17508 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
17509
17510         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
17511
17512 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
17513
17514         * cpu-amd64.md: Fix lengths of atomic opcodes.
17515
17516 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17517
17518         * driver.c: try to not imply using ICU is any good.
17519
17520 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17521
17522         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
17523         functions as inline ops.
17524
17525         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
17526         some Interlocked functions as inline ops.
17527
17528         * mini.c (move_basic_block_to_end): Fix bug in last patch.
17529
17530         * mini.h (MonoBasicBlock): Reorganize fields a bit.
17531
17532         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
17533
17534         * mini.c: Add support for OP_NOT_TAKEN.
17535
17536         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
17537         structures in registers for pinvoke wrappers.
17538
17539         * mini-amd64.c: Fix warnings.
17540
17541 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
17542
17543         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
17544
17545         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
17546
17547         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
17548         address instead of loading the address from it.
17549
17550         * mini-x86.c: Add support for returning small structs in registers
17551         on Win32. Fixes part of #70864.
17552         
17553 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * trace.c (get_token): Improve error checking.
17556
17557 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17558
17559         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
17560
17561 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
17562  
17563         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
17564         it can be reused for MonoClass.
17565         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
17566         _LINKDEMAND.
17567
17568 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
17569
17570         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
17571         instead of a MonoReflectionMethod. The method information wasn't used
17572         when displaying SecurityException details (but will be now).
17573
17574 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
17575
17576         * Makefile.am : windows build fix.
17577
17578 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17579
17580         * iltests.il: Add new regression test.
17581
17582         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
17583         #72522.
17584
17585 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
17586  
17587         * mini.c: Moved linkdemand check into helper function check_linkdemand
17588         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
17589         LDFTN, LDVIRTFTN).
17590
17591 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
17592
17593         * declsec.c: Added statistics counter for different kinds of 
17594         LinkDemands.
17595         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
17596         (and commented) declaration.
17597         * mini.c: Added statistics counter for security Demand code 
17598         generation. Added display of security statistics.
17599
17600 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17601
17602         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
17603         Fix compilation errors under gcc-2.95.
17604
17605 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17606
17607         * mini.c, driver.c: Use the new jit trampoline hashtable
17608
17609 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17610
17611         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
17612
17613 2005-02-11  Martin Baulig  <martin@ximian.com>
17614
17615         * debug-mini.c (mono_debug_close_method): Free the line number array.
17616
17617 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17618
17619         * aot.c: Break up large methods into smaller ones. Share GOT slots for
17620         icalls.
17621
17622         * mini.h: Bump AOT file format version. 
17623
17624 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17625
17626         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
17627         APTC and P/Invoke.
17628         * declsec.h: Added macros to get/set lazyly initialized security 
17629         informations about assemblies. Added new enum for different type of
17630         possible LinkDemand violation. Added function to check LinkDemands.
17631         * mini.h: Added a field to MonoCompile to hold any security violation
17632         detected when JITting a method (so it can be thrown later).
17633         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
17634         and CEE_CALLVIRT. Added code to throw exception at the end of
17635         mini_method_compile (note: the exception is unhandled right now).
17636
17637 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17638
17639         * mini.c, jit-icalls.c: use the managed implementation of
17640         memset for initobj and memset, to avoid managed <-> unmanaged
17641         transitions.
17642
17643 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17644
17645         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
17646         optimization if it would need a GOT var.
17647
17648         * basic.cs: Add tests for constant propagation and switch statements.
17649
17650         * ssa.c: Fix out-of-range constant propagation and switch statements.
17651
17652 2005-02-09    <vargaz@freemail.hu>
17653
17654         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
17655
17656 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
17657
17658         * cpu-amd64.md (load_membase): Fix max length of load_membase.
17659
17660 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17661
17662         * mini.c: update to new signature of mono_class_get_allocation_ftn().
17663
17664 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
17665
17666         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
17667         arithmetic operations.
17668
17669 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
17670
17671         * mini-ppc.c: add a workaround for broken user code that
17672         DllImports vararg functions with non-vararg signatures.
17673
17674 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17675
17676         * mini.c (mono_jit_compile_method_inner): Add detection and a 
17677         meaningfull error message for assemblies written in Managed C++.
17678
17679         * tramp-amd64.c mini-amd64.h: Add support for 
17680         create_trampoline_from_token ().
17681
17682         * aot.c mini-x86.c abcremoval.c: Applied patch from
17683         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17684
17685 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
17688         which takes a MonoImage/token as parameter instead of a MonoMethod.
17689
17690         * aot.c: Use the new trampoline for initializing vtables.
17691
17692         * aot.c: Add support for ldfld/stfld_remote wrappers.
17693
17694         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
17695         rules for compare <MEM>, IMM.
17696
17697         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
17698
17699         * aot.c: Handle inherited finalizers correctly.
17700
17701 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17702
17703         * inssel.brg (stmt): Add a missing _setup_... ().
17704
17705         * aot.c: Save some parts of the class state to the AOT file and use it
17706         to recompute that state when a class is initialized.
17707
17708         * mini.c: Install AOT hooks into the runtime.
17709
17710         * mini.h: Bump AOT file format version.
17711         
17712         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
17713         Fixes #72148.
17714
17715         * iltests.il: Add new test.
17716
17717 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17718
17719         * mini.c: fix typo.
17720
17721 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
17722
17723         * mini.c: setup the statistical profiler in the thread attach
17724         callback to cope with the new single thread code.
17725
17726 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17727
17728         * mini-ppc.c: ensure we have enough room for the profiler
17729         calls (fixed bug#72084).
17730
17731 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17732
17733         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
17734         it.
17735
17736 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17737
17738         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
17739
17740 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17741
17742         * ssapre.c: Fixed an issue with down safety (this allows IronPython
17743         to succesfully execute parrotbench).
17744         * ssapre.h: Likewise.
17745
17746 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17747
17748         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
17749         variable for stores to method arguments (fixes a SSAPRE issue).
17750
17751 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17752
17753         * mini.c: handle value types in dup, fixes gen-112.cs.
17754
17755 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
17756
17757         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
17758         sequence for calls in dynamic methods to avoid thunks.
17759
17760 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17761
17762         * mini.c: correctly remove dynamic methods from the hashtable.
17763
17764 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17765
17766         * driver.c: Disabled SSAPRE until fix the bug that appears
17767         in IronPython's parrotbench.
17768
17769 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17770
17771         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
17772
17773         * mini.c (mono_method_to_ir): Revert the previous change.
17774         
17775         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
17776         when AOT compiling.
17777
17778         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
17779         mono_jit_info_table_find () etc. when running under valgrind.
17780
17781         * inssel.brg: Fix warnings.
17782
17783         * mini-exceptions.c: Fix warnings.
17784
17785 2005-01-31  Martin Baulig  <martin@ximian.com>
17786
17787         * driver.c (compile_all_methods_thread_main): Don't try to compile
17788         generic methods or anything which has type parameters.
17789
17790 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17791
17792         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
17793
17794         * TestDriver.cs: Add --verbose flags.
17795
17796         * graph.c ssa.c: Fix 64 bit warnings.
17797         
17798         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
17799         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
17800         Fix 64 bit warnings.
17801
17802         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
17803         variable not spotted by gcc.
17804         
17805         * mini-amd64.c inssel-amd64.brg: Applied patch from  
17806         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
17807         X86_COMPARE_MEMBASE opcodes.
17808
17809         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
17810
17811 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17812
17813         * *: MonoMethod->signature might be NULL now. You *MUST* use
17814         mono_method_signature.
17815
17816 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17817
17818         * driver.c (compile_all_methods_thread_main): Compile the methods
17819         without invoking cctors.
17820
17821 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17822
17823         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
17824         * basic-calls.cs: test for the above.
17825
17826 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17827
17828         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
17829         MonoJitInfo changes.
17830
17831 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
17832
17833         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
17834         eagerly if it contains dynamic methods.
17835         
17836         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
17837
17838         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
17839         trace, it is now computed by an icall from trace_ips.
17840         
17841         * mini-exceptions.c: Fix a warning.
17842
17843 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17844
17845         * mini-exceptions.c: don't bother getting stack trace info if
17846         it's not going to be used.
17847
17848 2005-01-27  Raja R Harinath  <rharinath@novell.com>
17849
17850         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
17851         ssapre-mini-ops.h.
17852
17853 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
17854
17855         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
17856
17857         * aot.c: Avoid calling mono_method_get_header () if not needed.
17858
17859         * mini.h: Bump AOT file format version.
17860         
17861         * mini.c (mono_emit_native_call): Allocate a GOT var here.
17862
17863         * mini.c (mono_print_tree): Print more info for calls.
17864
17865 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17866
17867         * declsec.h: Remove warning by adding missing include for marshal.h
17868
17869 2005-01-26  Martin Baulig  <martin@ximian.com>
17870
17871         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
17872         `ip' twice.
17873
17874 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
17875
17876         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
17877         flags.
17878
17879         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
17880
17881         * aot.c (mono_compile_assembly): Fix a warning.
17882
17883 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
17884
17885         * declsec.c: Look for security attributes on the original MonoMethod 
17886         (and not the wrapped one). This fix permissions on icalls.
17887
17888 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17889
17890         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17891
17892         * mini.c (mono_allocate_stack_slots): Add a fixme.
17893
17894         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17895
17896 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17897
17898         * inssel.brg: optimize casts of sealed types (more
17899         optimizations waiting for fixes in remoting).
17900
17901 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17902
17903         * inssel.brg (stmt): Add another dummy rule.
17904
17905         * driver.c: Fix warnings.
17906
17907         * driver.c (mono_main): If running under valgrind, instruct glib to use
17908         the system allocation functions so valgrind can track the memory
17909         allocated by the g_... functions.
17910
17911         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
17912
17913         * mini-ops.h: Add OP_DUMMY_STORE opcode.
17914
17915         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
17916
17917         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
17918         variables in try regions.
17919
17920         * mini.c (mini_method_compile): Don't disable optimizations on large
17921         methods when AOT compiling.
17922
17923         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17924         allocate stack slots. Not yet used.
17925
17926 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17927
17928         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17929
17930 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17931
17932         * mini-ppc.c: make the branch info relative as the code
17933         buffer can be reallocated.
17934
17935 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17936
17937         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17938         * driver.c: Removed the AOT/security restriction. Now initialize the
17939         security manager (in metadata) if --security is used.
17940         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17941         rather than the pointer to declarative security, when AOT is used.
17942
17943 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17944
17945         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17946         basic blocks, reduced intrinsic exception throwing code size.
17947
17948 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17949
17950         * driver.c (mini_usage): Reorder the usage screen.
17951
17952 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17953
17954         * mini.c (mono_resolve_patch_target): Fix warning.
17955
17956 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17957
17958         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17959         previous patch.
17960
17961         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17962
17963         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17964         breaks the amd64 build.
17965
17966         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17967         register allocation. Fixes #71454.
17968
17969         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17970
17971         * arrays.cs: Add new regression test.   
17972
17973 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17974
17975         * ssapre.c: Turned usage of snprintf to GString.
17976         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17977         (I left it on by mistake in my previous commit).
17978
17979 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17980
17981         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17982         on cond branch optimization (fixes bug# 71515).
17983
17984 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17985
17986         * abcremoval.c: Fixed bug 71062.
17987         * abcremoval.h: Likewise.
17988
17989 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17990
17991         * mini.c: Added a new functionality to optimize_branches, the removal
17992         of useless basic blocks, and fixed some problem in the removal of
17993         critical edges; some utility functions added for both purposes.
17994         * ssapre.c: Added complex expression support, and fixed bug 70637.
17995         * ssapre.h: Likewise.
17996         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17997         enabled in SSAPRE.
17998         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17999         * driver.c: Re-enabled SSAPRE.
18000
18001 2005-01-19  Martin Baulig  <martin@ximian.com>
18002
18003         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18004         the result of mono_get_method_constrained().
18005
18006 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18007
18008         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18009         manager.
18010
18011 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18012
18013         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18014         be detected.  Fixes #59296.
18015
18016 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18017
18018         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18019         which can happen. Fixes #71361.
18020
18021 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18022
18023         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
18024         manager.
18025
18026 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18027
18028         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
18029         appdomain-unload.exe to fail.
18030         
18031         * mini.c: Fix some memory leaks.
18032
18033 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
18034
18035         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
18036         Fixed bug and sped up some codepaths.
18037
18038 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18039
18040         * mini.c: Fix some memory leaks.
18041
18042         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
18043         conversion.
18044
18045         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
18046
18047         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
18048         #71320.
18049
18050         * iltests.il: Add regression test for #71320.
18051
18052 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18053
18054         * mini.c (mono_codegen): Fix installation of profiler hooks.
18055
18056         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
18057
18058 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18059
18060         * mini.h, mini.c, cfold.c: optimize access to enum
18061         readonly fields, too. Eval conditional branches if possible
18062         to perform unreachable code removal in more cases.
18063
18064 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
18065
18066         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
18067
18068         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
18069         code manager.
18070
18071         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
18072         WinXP DEP. Fixes #71244.
18073
18074 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
18075
18076         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
18077
18078 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18079
18080         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
18081
18082 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18083
18084         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
18085         changes.
18086
18087         * mini.h: Bump AOT version.
18088
18089         * mini.h (MonoCompile): Change exvar to a hash table.
18090
18091         * mini.c: Allocate a separate exvar for each handler block.
18092
18093         * mini.c: Get rid of the computation of filter_lengths, its not needed.
18094
18095         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
18096         ex var with the pending exception and only throw if the two are equal.
18097         Fixes #68552.
18098         
18099         * exceptions.cs: Add tests for rethrow and nested catch clauses.
18100
18101         * mini-x86.c: Fix warnings.
18102
18103         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
18104         used by all the ports now.
18105
18106         * aot.c: Add write-symbols and save-temps options.
18107
18108 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18109
18110         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
18111
18112 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
18113
18114         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
18115         operations.
18116
18117         * tramp-s390.c: Check vtable slot belongs to the domain.
18118
18119         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
18120         as per other platforms.
18121
18122         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
18123
18124 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18125
18126         * driver.c: we don't run the Main() code in a subthread anymore.
18127
18128 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
18129
18130         * mini.c: added experimental rtc support in the statistical
18131         profiler: if the user has the permission, more accurate statistics
18132         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
18133         The MONO_RTC value must be restricted to what the linux rtc allows:
18134         power of two from 64 to 8192 Hz.
18135
18136 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18137
18138         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
18139
18140 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
18141
18142         * mini-ppc.c: better icache flush for smp.
18143
18144 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18145
18146         * mini-amd64.c (emit_move_return_value): Fix memory leak.
18147
18148         * mini-x86.c (get_call_info): Add the get_call_info () code from the
18149         amd64 port, not yet used.
18150
18151 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18152
18153         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
18154         a struct type.
18155
18156 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18157
18158         * driver.c: Added --security option to activate the security manager.
18159         Right now this will allow code generation for declarative demands and
18160         is disabled when AOT is specified.
18161         * mini.c: Add code generation for declarative security demands.
18162         * mini.h: Add mono_use_security_manager as an extern gboolean.
18163
18164 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18165
18166         * aot.c (mono_compile_assembly): Speed up compilation a bit by
18167         emitting more dense assembly code.
18168
18169         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
18170         exception throwing stuff.
18171
18172 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18173
18174         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
18175         dead code.
18176
18177         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
18178         left in by mistake.
18179
18180         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
18181         fixed.
18182
18183         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
18184
18185         * tramp-*.c: Only patch vtable slots if the object is in the current
18186         domain. Fixes appdomain-unload.exe.
18187
18188         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
18189         
18190         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
18191         x86 branch.
18192
18193 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18194
18195         * mini.c (reverse_branch_op): New helper function.
18196
18197         * mini.c (optimize_branches): Run the new optimization only on 
18198         platforms which support it. Also reverse all kinds of branches.
18199
18200         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
18201
18202         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
18203         a throw statement.
18204
18205         * mini.c (optimize_branches): Reverse not-equals branches if the false
18206         bblock is a throw. This happens a lot of time with argument checking in
18207         corlib.
18208
18209         * mini.c (mono_codegen): Add support for placing basic blocks after
18210         the function epilogue.
18211
18212         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
18213         function epilogue.
18214         
18215 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
18216
18217         * mini.c (setup_stat_profiler): Only set this up if the platform
18218         supports ITIMER_PROF.
18219
18220 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18221
18222         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
18223         previous patch.
18224
18225         * inssel.brg: Fix a warning.
18226
18227 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18228
18229         * mini.c: added support for statistical profiler 
18230         (run with: --profile=default:stat).
18231
18232 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
18233
18234         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
18235
18236         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
18237
18238         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
18239         related to global registers from the amd64 port.
18240
18241 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18242
18243         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
18244
18245         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
18246         with global registers.
18247         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
18248
18249         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
18250
18251 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * debug-mini.c (encode_value): Fix off-by-one.
18254
18255         * aot.c (encode_value): Likewise.
18256
18257         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
18258
18259 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18260
18261         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
18262         AOT.
18263
18264         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
18265         
18266         * aot.c (emit_method_info): Increase size of temp buffer.
18267
18268         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
18269         the AOT case.
18270
18271 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
18272
18273         * aot.c (emit_method_info): Fix build.
18274         
18275         * aot.c: Further rework of the AOT file format to reduce the size of
18276         the method info data.
18277
18278         * mini.h: Bump AOT file format version.
18279
18280 2004-12-27  Martin Baulig  <martin@ximian.com>
18281
18282         * mini.c (mini_get_method): New static method; call
18283         mono_get_method_full() and mono_get_inflated_method().
18284         (mono_method_to_ir): Use mini_get_method() instead of
18285         mono_get_method_full(). 
18286
18287 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
18288
18289         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
18290
18291 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
18292
18293         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
18294
18295         * inssel-amd64.brg: Add some optimization rules.
18296
18297 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18298
18299         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
18300         standard not GC'd stuff is fine.
18301
18302 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
18303
18304         * aot.c: Rework the AOT file format to get rid of most of the global
18305         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
18306
18307         * mini.h: Bump AOT file format version.
18308         
18309 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
18310
18311         * mini.h: Bump AOT file format version.
18312
18313         * aot.c (mono_aot_is_got_entry): New function to determine if an 
18314         address is inside a GOT.
18315
18316         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
18317
18318         * cpu-pentium.md: Increase the maximum size of some instructions which
18319         might involve a got access.
18320         
18321         * mini.c (get_method_from_ip): Another debug helper function.
18322
18323         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
18324         when got var accesses are created during the decompose phase.
18325
18326         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
18327
18328         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
18329         argument mini_compile_method and to MonoCompile, and use this to
18330         determine whenever a given method is compiled for AOT. This allows the
18331         other methods compiled during AOT compilation to be free of AOT stuff,
18332         so the backends does not need to add special support for them by
18333         creating a fake GOT etc.
18334
18335         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
18336         longer needed.
18337
18338 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18339
18340         * mini.c (mono_method_to_ir): It turns out that some of the
18341         x-appdomain wrappers are lax with types, so just ignore this for
18342         all wrappers.
18343
18344         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
18345         at the vtable->klass. If it is non-shared code we can just use the
18346         vtable.
18347
18348 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
18349
18350         * mini-ppc.c: access MonoDomain from tls, too.
18351
18352 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
18353
18354         * declsec.c: Removed unused variable (and related warning ;-)
18355
18356 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18357
18358         * iltests.il: New test for LDELEMA on an array of ref types.
18359
18360         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
18361         all ldelema's on reftypes.
18362         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
18363         it was the wrong place to put it.
18364
18365         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
18366         register to pop to make this cleaner, at the request of Paolo.
18367
18368 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18369
18370         * mini-ops.h (OP_GETHASHCODE): New op.
18371
18372         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
18373
18374         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
18375         operation.
18376
18377         For a microbenchmark, this reduces the cost of Hashtable.get_Item
18378         by 25%.
18379         
18380         * mini-x86.c (mono_arch_output_basic_block): Rather than
18381
18382         add ebp, 4
18383
18384         Emit
18385
18386         pop edx
18387
18388         The first is 3 bytes while the second is 1. This saves 36 kb on
18389         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18390         see a small boost because of icache locality.
18391
18392         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18393
18394 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18395
18396         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18397         started code sharing with the generic code.
18398
18399 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18400
18401         * mini-ppc.c, cpu-g4.md: added code for direct access to
18402         tls data slots.
18403
18404 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18405
18406         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18407          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18408         to OP_TLS_GET.
18409
18410 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18411
18412         * declsec.c|h: Added functions to cache the declarative stack modifiers
18413         in MonoJitInfo and to create a security frame from a MonoJitInfo 
18414         structure.
18415         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
18416         created. Register internal calls for System.Security.SecurityFrame::
18417         _GetSecurityFrame and _GetSecurityStack.
18418         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
18419         the definitions for the new stack walk/callback mechanism.
18420         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
18421         first security frame for LinkDemands and InheritanceDemands) and
18422         GetSecurityStack for Demands. Both use the new mono_walk_stack code
18423         from lupus.
18424         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
18425         walk initialization (lupus).
18426
18427 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18428
18429         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
18430         idiom.
18431         (handle_loaded_temps): Do not create a temporary variable for
18432         things that we know are temps. They will never be modified.
18433         (mono_spill_call): Set MONO_INST_IS_TEMP
18434         (mono_emulate_opcode): ditto
18435         (emit_tree): ditto
18436         (mono_method_to_ir.CEE_DUP): ditto
18437
18438 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
18439
18440         * mini.c (type_to_eval_stack_type): Make this handle the void type
18441         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
18442         (emit_tree): use ip_in_bb to special case some common idioms
18443         Update all callers to pass in the IP.
18444         (mono_method_to_ir): Make CEE_CALL* do the above as well.
18445
18446         This gives us a nice 2% speedup in mcs bootstrap.
18447
18448         * mini-x86.c (peephole_pass): Peephole pass to make
18449         mov  [foo], eax
18450         push [foo]
18451
18452         into
18453
18454         mov [foo], eax
18455         push eax
18456
18457         * mini.c (ip_in_bb): new method.
18458         (mono_method_to_ir): use this method rather than doing the hash
18459         lookup ourselves.
18460
18461         * linear-scan.c (mono_linear_scan): When expiring actives, you
18462         don't need to keep around variables that expire on this
18463         instruction. This makes it so that:
18464              a = b + 1
18465         will turn into:
18466              store (ebx add (ebx, 1))
18467         which will become
18468              add ebx, 1
18469
18470 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
18471
18472         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
18473         combination to avoid doing two copies. Fix up problems with previous
18474         patch.
18475
18476         * mini.c: Fix 64 bit warnings.
18477
18478         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
18479
18480 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
18481
18482         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
18483         changes from the x86 code.
18484
18485         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
18486
18487 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18488
18489         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
18490         throwing code to reduce its size, unify the AOT and non-aot code and 
18491         get rid of relocations in the AOT case.
18492
18493         * mini-x86.h mini.c exceptions-x86.c 
18494         (mono_arch_get_throw_corlib_exception): New arch specific function to 
18495         raise corlib exceptions which doesn't require relocations in the 
18496         caller.
18497
18498         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
18499
18500 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18501
18502         * mini.c (mono_emit_method_call): Only allocate the got var when it is
18503         needed.
18504
18505         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
18506         in the AOT case.
18507
18508 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18509
18510         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
18511         with add function when used from Inc/dec atomic 
18512         functions. Re-enabled optimization on x86.
18513         * mini-ops.h: renamed atomic_add functions to
18514         allow _add to match the Interlocked::Add and
18515         _add_next to match Interlocked::Inc/Dec.
18516
18517 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
18518
18519         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
18520         linking of BBs to the end BB, and enabled SSAPRE also with
18521         consprop and copyprop (which was prevented by that bug).
18522
18523 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18524
18525         * mini-x86.c: disabling the Interlocked optimizing code. 
18526
18527 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18528
18529         * aot.c (load_aot_module): Move reading of got_addr after the AOT
18530         file version check.
18531         
18532 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18533
18534         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
18535         interlocked optimization due lack of support on x86, rewrote 
18536         exchange to take into account that base may be in eax.
18537         
18538         xsp works again; activated Interlocked optimizing code.
18539         
18540 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18541
18542         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
18543
18544 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
18545
18546         * mini-ops.h: Add new opcodes.
18547
18548         * mini.h: Add new patch types. Add got_var to MonoCompile.
18549
18550         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
18551         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
18552         make it work with all kinds of patchable code.
18553
18554         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
18555         address of the GOT, and referencing entries in the GOT.
18556
18557         * mini.c: Add code to load the GOT address if needed by an opcode.
18558
18559         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
18560         independent AOT code on the x86 using an elf-style Global Offset Table.
18561
18562 2004-12-14  Raja R Harinath  <rharinath@novell.com>
18563
18564         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
18565
18566 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18567
18568         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
18569         when running xsp.
18570
18571 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
18572
18573         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
18574         of Interlocked:Increment/Decrement/Add as inline ops.
18575         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
18576
18577 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
18578
18579         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
18580         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
18581
18582 2004-12-12  Duncan Mak  <duncan@ximian.com>
18583
18584         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
18585         again. `patch_info->table_size' is no longer valid after Zoltan's
18586         commit #37636.
18587
18588 2004-12-12  Martin Baulig  <martin@ximian.com>
18589
18590         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
18591         if we are the "real" method, ie. not an inlined method inside it.
18592
18593 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
18594
18595         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
18596         before we look in the special fields table. This fixes
18597         ../tests/thread-static-init.cs.
18598
18599 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18600
18601         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
18602         for Array get_Rank and get_Length. Fixes bug #70465.
18603
18604 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
18605
18606         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
18607         separate structure to reduce the size of MonoJumpInfo.
18608
18609 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18610
18611         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
18612
18613 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
18614
18615         * mini.c (mini_get_inst_for_method): Changed to allow ports
18616         to return a MonoInst instead of opcode 
18617         (renamed mini_get_opcode_for_method to better reflect the new functionality)
18618         
18619         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
18620         Allow ports to return a created MonoInst instead of op-code, will enable
18621         new optimizations.
18622         (renamed mini_get_opcode_for_method to better reflected the functionality)
18623
18624 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
18625
18626         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
18627
18628 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18629
18630         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
18631         Fixes #69985.
18632
18633 2004-12-08  Martin Baulig  <martin@ximian.com>
18634
18635         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
18636         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
18637
18638 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
18641         correctly.
18642
18643         * exceptions.cs: Disable some tests which depend on properties of x86 fp
18644         arithmetic.
18645
18646 2004-12-08  Raja R Harinath  <rharinath@novell.com>
18647
18648         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
18649
18650 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
18653         bug introduced by the previous patch.
18654
18655 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18656
18657         * mini-ppc.c, objectc.cs: handle large structs passed by value
18658         (fixes bug #69972).
18659
18660 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18661
18662         * mini-ppc.c: OP_ARGLIST implementation from
18663         Geoff Norton  <gnorton@customerdna.com>.
18664
18665 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18666
18667         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
18668         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
18669
18670 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18671
18672         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
18673
18674 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18675
18676         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
18677         support.
18678
18679 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18680
18681         * mini-sparc.c: Zero out localled-ed memory.
18682
18683         * iltests.il: Add tests for zeroing out localloc-ed memory.
18684
18685 2004-12-04  Martin Baulig  <martin@ximian.com>
18686
18687         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
18688         mono_method_get_signature_full().       
18689
18690 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
18691
18692         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
18693         and some utility functions (always for SSAPRE), integrated SSAPRE.
18694         * mini.h: Likewise.
18695         * driver.c: Added ssapre option.
18696         * ssa.c: Small fix on OP_ARG handling.
18697         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
18698         * Makefile.am: Likewise.
18699
18700 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18701
18702         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
18703         now in the xp code.
18704
18705         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
18706         icall.
18707
18708 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18709
18710         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
18711         
18712         * cpu-s390.md : Increase instruction length of oparglist.
18713
18714         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
18715
18716 2004-11-30  Martin Baulig  <martin@ximian.com>
18717
18718         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
18719         virtual generic methods.  We call a special helper_compile_generic_method()
18720         icall to retrieve the method from the vtable, inflate and compile
18721         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
18722
18723         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
18724
18725 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
18726
18727         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
18728
18729 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
18730
18731         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
18732         Fixes #69929.
18733
18734 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
18735
18736         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
18737         platforms with PIC aot.
18738
18739 2004-11-28  Martin Baulig  <martin@ximian.com>
18740
18741         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
18742         Fixes gen-112.cs.
18743
18744 2004-11-28  Martin Baulig  <martin@ximian.com>
18745
18746         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
18747         the result of mono_type_get_underlying_type() to check whether
18748         we're byref.
18749
18750 2004-11-26  Martin Baulig  <martin@ximian.com>
18751
18752         * mini.c
18753         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
18754         in the g_assert().
18755
18756 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
18757
18758         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
18759         the same way as the other arguments so they won't get clobbered.
18760
18761         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
18762         calls through R11 since it is clobbered by the trampoline code.
18763
18764 2004-11-26  Raja R Harinath  <rharinath@novell.com>
18765
18766         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
18767         pick up in-tree mscorlib.dll.
18768
18769 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18770
18771         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
18772
18773         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
18774         runtime data/code are now stored in a table similar to the GOT in ELF. 
18775         This allows the code itself to be position independent.
18776
18777         * aot.c: Fix loading of referenced assemblies after the lazy assembly
18778         loading changes.
18779
18780         * aot.c: Attach ELF type (object/function) directives to all global
18781         symbols.
18782
18783         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
18784
18785         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
18786
18787         * mini-amd64.h: Turn on PIC AOT code.
18788
18789         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
18790         returning the offset within an OP_AOTCONST instruction where the GOT
18791         offset needs to be added.
18792
18793         * mini.h: Bump AOT file format version.
18794
18795 2004-11-25  Martin Baulig  <martin@ximian.com>
18796
18797         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
18798         uninflated generic methods.
18799
18800 2004-11-25  Martin Baulig  <martin@ximian.com>
18801
18802         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
18803
18804 2004-11-24  Martin Baulig  <martin@ximian.com>
18805
18806         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
18807         original klass (this only applies for generic instances).
18808
18809 2004-11-24  Martin Baulig  <martin@ximian.com>
18810
18811         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
18812         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
18813         that array).
18814
18815 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18816
18817         * mini.c (mono_method_to_ir): Disable inlining for methods containing
18818         localloc. Fixes #69678.
18819
18820         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
18821         
18822 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
18823
18824         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
18825         used SSE registers on pinvoke calls. Fixes #69774.
18826
18827 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
18828
18829         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
18830         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
18831
18832 2004-11-23  Raja R Harinath  <rharinath@novell.com>
18833
18834         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
18835         Refer directly to the mcs/ tree.
18836
18837 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18838
18839         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
18840         Check if a trampoline for a synchronized method is required. 
18841
18842 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
18843
18844         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
18845         with localloc if needed. Throe arithmetric exception in
18846         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
18847         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
18848
18849 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
18850
18851         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
18852         types before switching on type.  Fixes #69622.
18853
18854 2004-11-19  Raja R Harinath  <rharinath@novell.com>
18855
18856         * Makefile.am (check-local): New.  Integrate into 'make check'.
18857         (MCS,RUNTIME): Define using in-tree mono and mcs.
18858         (ILASM): New.
18859         (%.exe): Use $(ILASM).
18860
18861 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
18862
18863         * mini-ppc.c: adjust initial prolog size (bug #69691).
18864
18865 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
18866
18867         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
18868         #69664.
18869
18870 2004-11-17  Raja R Harinath  <rharinath@novell.com>
18871
18872         * Makefile.am (clean-local): Rename from 'clean'.
18873
18874 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18875
18876         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
18877         to mono_arch_is_int_overflow. 
18878         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
18879         SIGFPE events.
18880
18881 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18882
18883         * declsec.c|h: New files to support declarative security attributes.
18884         Added function to check if a method has (applicable) security.
18885         * mini.c|h: Add check for declarative security attributes in
18886         mono_method_check_inlining.
18887         * Makefile.am: Added declsec.c and declsec.h to the build.
18888
18889 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18890
18891         * mini.c, mini.h: update to keep dynamic code info per-domain.
18892
18893 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
18894
18895         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
18896         (mini_init): Get rid of it from here too.
18897
18898 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18899
18900         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
18901         implemented OP_RETHROW (patch by Geoff Norton
18902         <gnorton@customerdna.com>).
18903
18904 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
18905
18906         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
18907         between appdomains.  Fixes appdomain-unload on PPC.
18908
18909 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
18910
18911         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18912         mini-exceptions.c: handle the new wrapper types.
18913         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
18914         token value as a MonoClass* when compiling a wrapper.
18915         mono_jit_create_remoting_trampoline now takes an additional
18916         MonoRemotingTarget parameter.
18917         
18918 2004-11-10  Martin Baulig  <martin@localhost>
18919
18920         * mini.c (mono_method_to_ir): Use `generic_container->context'
18921         rather than creating a new one.
18922
18923 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18924
18925         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18926
18927         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18928
18929 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18930
18931         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18932         the experimental aot cache stuff.
18933
18934 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18935
18936         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18937         mini-exceptions.c: update to exception clause structure changes.
18938
18939 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18940
18941         * exceptions-x86.c (throw_exception): Fix warnings.
18942
18943         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18944         for OP_RETHROW.
18945
18946 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18947
18948         * exceptions-sparc.c (get_throw_exception): Really fix this.
18949
18950 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18951
18952         * tramp-*.c: we no longer support icalls without wrappers, so
18953         a bit of code can be removed here
18954
18955 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18956
18957         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18958         patch.
18959
18960         * cpu-sparc.md: Add op_rethrow.
18961
18962         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18963
18964         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18965
18966         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18967         * mini-ops.h: Add OP_RETHROW.
18968
18969         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18970
18971         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18972
18973 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18974         
18975         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18976         Makes the output much easier to read
18977
18978 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18979
18980         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18981         prevents another huge leak when compiling with ssa. Secondly, the
18982         performance of doing this rather than freeing the lists is much
18983         better. GList does a lock every time you allocate a list link,
18984         so that it can use a memory pool. So, it is better to just use
18985         a memory pool of our own.
18986         
18987         * ssa.c, linear-scan.c: replace g_list_remove_link with
18988         g_list_delete.  The remove one does not free the GList, so we were
18989         leaking memory. On -O=all --compile-all with corlib, this cut down
18990         3 MB of allocations.
18991
18992 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18993
18994         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18995
18996         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18997
18998         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18999         into a new function mono_create_jit_trampoline ().
19000
19001 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19002
19003         * trace.c (get_spec): Allow tracing of classes without a namespace.
19004
19005 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19006
19007         * mini.c: Fix pointer overwrite in mini_method_compile.
19008
19009 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19010
19011         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19012         The darwin ABI needs some special handling for 1 and 2 byte structs
19013         Lets use lbz/lhz instead of lwz everywhere.
19014         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19015         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19016         Use stb/sth for the former, and put the latter always on stack instead of in
19017         argument registers.
19018
19019 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * trace.c (is_filenamechar): Add '_'.
19022
19023 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
19024
19025         * mini-s390.c: Fix prolog length to allow for large trace requirements.
19026
19027         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
19028
19029 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
19030
19031         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
19032         depends on libmonogc. Fixes #68805.
19033
19034 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
19035
19036         * mini.c (mono_jit_free_method): Provide extra information for
19037         this error.  Currently this leaks, but will be turned into a
19038         developer option in the future.
19039
19040 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
19041
19042         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
19043
19044 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19045
19046         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
19047         boundary. Fixes reading of PATCH_INFO_R4 and R8.
19048         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
19049
19050 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
19051
19052         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
19053         trampolines for AOT code.
19054
19055 2004-10-22    <vargaz@freemail.hu>
19056
19057         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
19058         constructed types. Fixes #68136.
19059
19060 2004-10-21  Martin Baulig  <martin@ximian.com>
19061
19062         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
19063         if it returns true, unwind the stack to the call instruction.
19064
19065 2004-10-21    <vargaz@freemail.hu>
19066
19067         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
19068
19069         * mini.h: Bump AOT version number.
19070
19071         * objects.cs: Add another test for unbox trampolines.
19072
19073         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
19074         valuetype methods.
19075
19076 2004-10-20    <vargaz@freemail.hu>
19077
19078         * driver.c: Add SHARED to the set of optimizations tested.
19079
19080         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
19081
19082         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
19083         used by CEE_NEWARR.
19084
19085         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
19086
19087 2004-10-20  Martin Baulig  <martin@ximian.com>
19088
19089         * mini-exceptions.c (mono_handle_exception): Call
19090         mono_debugger_handle_exception() to tell the debugger about
19091         catch/finally clauses.
19092
19093 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19094
19095         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
19096
19097         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
19098         #68447.
19099
19100 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
19101
19102         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
19103         methods as their native size, fixed bug #57543, #57545.
19104         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
19105         This saves a temporary register and mullw call down into 1 (minor perf
19106         increase for cases like sum = sum * 5;  This use to translate into:
19107             li r11,5
19108             mullw r28,r28,r11
19109         It now translates to
19110             mulli r28,r28,5
19111
19112 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
19113
19114         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
19115         #68388.
19116
19117 2004-10-11  Martin Baulig  <martin@ximian.com>
19118
19119         * mini.c (mono_method_to_ir): If we're a generic method, get the
19120         MonoGenericContainer from our MonoMethodNormal and create a
19121         MonoGenericContext from it.
19122
19123 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19124
19125         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
19126
19127         * basic-long.cs: Add test for checked i8->i2 cast.
19128
19129 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19130
19131         * inssel-ppc.brg: added a couple of speedup rules.
19132
19133 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19134
19135         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
19136         to speed up rebuilds.
19137
19138 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19139
19140         * mini-s390.c: Minor fix to OP_OR_IMM.
19141
19142 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19143
19144         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
19145         better. Fixes appdomain-unload.exe on sparc.
19146
19147 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19148
19149         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
19150         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
19151         see bug 67324.
19152
19153 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
19154
19155         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
19156
19157 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19158
19159         * mini.c: Always generate a field read/write wrapper for members
19160         of the class MarshalByRefObject since the actual instance could
19161         be a CBO.
19162
19163 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19164
19165         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
19166
19167 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19168
19169         * driver.c mini.h trace.c: Move the setting of the main assembly into
19170         a separate function called mono_trace_set_assembly () and call it after
19171         actually loading the main assembly. Fixes #66872.
19172
19173 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19174
19175         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
19176         using the code manager.
19177
19178 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19179
19180         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
19181
19182 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19183
19184         * cpu-amd64.md: Fix bug in previous patch.
19185         
19186         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
19187         #66650.
19188
19189 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
19190
19191         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19192         mini-exceptions.c: updates for changed stack walk interface.
19193
19194 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19195
19196         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
19197
19198 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19199
19200         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
19201
19202 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19203
19204         * driver.c (mini_regression_list): Do not call mono_assembly_close 
19205         since assemblies can't be unloaded.
19206         
19207 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19208
19209         * cpu-amd64.md: Fix more instruction lengths.
19210
19211         * cpu-amd64.md: Fix lengths of some instructions.
19212
19213 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
19214
19215         * inssel.brg: Make the array ldelema check aot friendly.
19216
19217 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19218
19219         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
19220
19221         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
19222
19223 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19224
19225         * mini-x86.c: Fix build.
19226
19227         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
19228         mono_type_get_underlying_type () helper function to simplify code.
19229         
19230 2004-09-09  Martin Baulig  <martin@ximian.com>
19231
19232         * mini-amd64.c: Don't access `type->data.klass' directly, call
19233         mono_class_from_mono_type() instead since the type may be a
19234         generic instance.
19235
19236 2004-09-09  Martin Baulig  <martin@ximian.com>
19237
19238         * mini-amd64.c (get_call_info): Fix support for generic instances.
19239         (add_valuetype): Use mono_class_from_mono_type() to get the class
19240         since we can be a generic instance.
19241
19242 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
19243
19244         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
19245
19246 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19247
19248         * liveness.c: reset spill costs on each scan: bug 62107
19249
19250 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
19251
19252         * exceptions-sparc.c (mono_arch_find_jit_info): remove
19253         unnecessary line that doesn't compile
19254
19255 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
19256
19257         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
19258         trampolines, make them call an error function so people can fix their
19259         code.
19260
19261 2004-09-06  Martin Baulig  <martin@ximian.com>
19262
19263         * mini.c (mono_method_to_ir): When initializing locals, handle a
19264         generic instances like a valuetype if it's a valuetype and like a
19265         class if it's a class.
19266
19267 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19268
19269         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
19270         stack. Fixes #64674.
19271
19272         * exceptions.cs: Add test for unwinding of call arguments.
19273
19274 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
19275
19276         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
19277         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
19278         set the carry/borrow flag). The sparc and s390 implementations
19279         can now use optimized versions (and simplify the code). ppc bugfixes.
19280
19281 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19282
19283         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
19284
19285 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
19286
19287         * inssel-amd64.brg: Remove leftover 32 bit rule.
19288
19289         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
19290
19291 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
19292
19293         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
19294         mono_arch_find_jit_info functions into a new function. Fix a memory
19295         leak.
19296
19297         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
19298         refactored code.
19299         
19300 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19301
19302         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
19303         as well.
19304         
19305         * exceptions.cs: Add array size tests.
19306
19307         * mini.c: Allocate a separate icall wrapper for each arity of 
19308         mono_array_new_va. Fixes #59509.
19309
19310         * exceptions.cs: Add testcase for 64578.
19311
19312         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
19313
19314         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
19315         
19316 2004-09-02  Martin Baulig  <martin@ximian.com>
19317
19318         * mini.c (mono_method_to_ir): When initializing the locals, call
19319         handle_initobj() on the generic instance itself, not its
19320         underlying type.
19321
19322 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19323
19324         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
19325         MonoJitInfo for dynamic methods.
19326
19327         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
19328
19329         * mini.c: Add support for freeing JIT data for dynamic methods.
19330         
19331 2004-09-01  Martin Baulig  <martin@ximian.com>
19332
19333         * mini-x86.c (is_regsize_var): Added support for generic
19334         instances.
19335         (mono_arch_emit_prolog): Make this compile again, use
19336         `x86_push_imm_template (code)'.
19337
19338 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
19339
19340         * mini-x86.c: make all push_imm instructions that get
19341         patched always emit the long form
19342
19343 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
19344
19345         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
19346         in a per-domain hash.
19347
19348         * mini-amd64.c (merge_argument_class_from_type): Handle generic
19349         types.
19350
19351 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
19352
19353         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
19354         work.
19355         
19356         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
19357         work.
19358
19359         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
19360         Beginnings of SSE2 support.
19361
19362         * exceptions.cs: Add more tests for checked int<->uint casts.
19363
19364 2004-08-28  Martin Baulig  <martin@ximian.com>
19365
19366         * mini-x86.c (mono_arch_instrument_epilog): Added support for
19367         generic instances.
19368
19369         * mini.c
19370         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
19371         Handle generic instances recursively.
19372
19373 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19374
19375         * iltests.il: test for conv.u8 on a constant
19376
19377 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19378
19379         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19380         LCONV_x4 (shrun_32 (membase)).
19381
19382 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19383
19384         * inssel-x86.brg: c&p rules for push/setret of long
19385
19386 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19387
19388         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19389         compare (regvar, base)
19390
19391         * inssel-x86.brg: more burg love
19392
19393         * inssel.brg: more cleanup
19394
19395         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19396
19397 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19398
19399         * basic-long.cs, basic-calls.cs: new tests for optimization.
19400
19401 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19402
19403         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19404         patch.
19405
19406 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19407
19408         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19409         
19410 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19411
19412         * inssel.brg (mini_emit_memcpy): use 
19413         NO_UNALIGNED_ACCESS to disable memcpy optimization
19414
19415 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * mini-amd64.c: Handle generic types in various places.
19418
19419         * mini.c (mono_method_to_ir): Handle generic types in init locals.
19420
19421 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
19422
19423         * mini.c (handle_box): Fix warning.
19424
19425         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
19426
19427         * mini-amd64.h: Enable the emit_state optimization.
19428
19429         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
19430
19431         * mini-amd64.c: Add some new 64 bit peephole opts.
19432
19433         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
19434
19435         * cpu-amd64.md: sreg1 of div instructions must be %rax.
19436
19437         * mini-amd64.c: Register allocator fixes.
19438
19439         * mini.c: Add an optimization to emit_state to avoid allocation of new
19440         registers on some platforms.
19441
19442 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
19443
19444         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
19445
19446         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
19447         allocation. Fixes #63085.
19448
19449         * basic-long.cs: Add new regression test.
19450
19451         * mini-amd64.c: Register allocator improvements.
19452
19453 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
19454
19455         * mini-amd64.c (read_tls_offset_from_method): Add another code
19456         sequence.
19457
19458         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
19459         instruction sequence for nullifying class init trampolines.
19460
19461         * objects.cs: Add new regalloc test.
19462
19463         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
19464
19465 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
19468         
19469         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
19470         arguments.
19471
19472         * driver.c: Fix profiling after TLS changes.
19473         
19474         * driver.c (mono_main): Set mono_stats.enabled if needed.
19475
19476         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
19477         CEE_BOX.
19478
19479 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
19480
19481         * mini-x86.c: use a 1 op rather than a 2 op tls access
19482         instruction -> faster.
19483
19484 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
19487         x86 backend.
19488
19489 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
19490
19491         * exceptions-sparc.c (throw_exception): fix typo
19492
19493 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19494
19495         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
19496         set tree->dreg correctly with tls. Allow any
19497         register to be used.
19498
19499         * mini-x86.c (read_tls_offset_from_method): add new code
19500         generation pattern seen with GCC.
19501
19502
19503 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19504
19505         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
19506         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19507         exceptions-sparc.c: fix some performance issues in exception
19508         handling and setting of the stack trace for exceptions that were
19509         already thrown.
19510
19511 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19512
19513         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
19514         x86 backend.
19515         
19516         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
19517         registers.
19518
19519 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19520
19521         This patch inlines tls access, when possible.
19522         
19523         * mini.h: new arch functions for TLS intrinsics.
19524         All platforms updated with a stub.
19525
19526         * mini.c: use the new intrinsics
19527
19528         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
19529         arch specific intrinsic for tls variables
19530
19531 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19532
19533         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
19534         under windows.
19535
19536 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19537
19538         * mini.c: thread local allocation
19539
19540 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
19541
19542         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
19543
19544         * Makefile.am: Link against the static version of libmonogc.
19545         
19546         * Makefile.am: Link the static versions of the convenience libraries
19547         into the mono executable.
19548
19549         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
19550
19551 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
19554         on integer overflow.
19555
19556         * mini-amd64.c: Reorganize function call code.
19557
19558         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
19559
19560 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19561
19562         * inssel-x86.brg: use xor eax,eax.
19563         
19564         * basic.cs: new tests
19565
19566 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19567
19568         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
19569         in exception throwing code.
19570         
19571 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19572
19573         * inssel-x86.brg: use xor esi,esi.
19574
19575 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
19578         can trace methods compiled during mini_init () too.
19579
19580         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
19581         CEE_CONV_U4.
19582
19583 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19584
19585         * Makefile.am: static link on x86 (r=zoltan)
19586
19587 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
19590         code since it causes some programs to fail.
19591
19592 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
19595
19596 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19597
19598         * mini.c: ovfops_op_map - add STACK_OBJ case for
19599         CONV_I 
19600         * basic.cs: add test_0_pin_string as test
19601         case for above.
19602
19603 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19604
19605         * Makefile.am: build C# if srcdir != builddir
19606
19607 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19608
19609         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
19610         fall-through blocks.
19611
19612 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19613
19614         * driver.c: enable loop by default again and include abcrem in -O=all.
19615
19616 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
19617
19618         * iltests.il: Add some localloc tests.
19619
19620         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
19621
19622         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
19623         Fixes #62574.
19624
19625         * inssel-amd64.brg: Add some optimizations.
19626
19627         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
19628         for gcc-3.4.
19629
19630         * Makefile.am: Statically link mono against libmono on AMD64.
19631         
19632         * mini-amd64.c inssel-amd64.brg: Optimizations.
19633
19634 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
19637
19638         * tramp-amd64.c: Patch calling code in trampolines.
19639
19640 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * mini-amd64.c: pinvoke struct passing fixes.
19643
19644 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
19645
19646         * mini-sparc.c: redo change, make mono_arch_cpu_init call
19647         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
19648
19649 2004-08-05  Duncan Mak  <duncan@ximian.com>
19650
19651         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
19652         CEE_LDELEM_ANY.
19653
19654 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19655
19656         * mini-amd64.c (emit_move_return_value): Move return value for normal
19657         calls too.
19658
19659 2004-08-05  Martin Baulig  <martin@ximian.com>
19660
19661         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
19662         `type->type'; just modify `type' itself when dealing with enums
19663         and generic instances.
19664         (check_call_signature): Make `simple_type' a `MonoType *'.
19665
19666 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19667
19668         * mini.c: Use OP_PADD to add offsets to addresses.
19669
19670         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
19671
19672 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
19673
19674         * mini-sparc.c (mono_arch_emit_epilog): fix check
19675         for folding last op into restore instruction
19676
19677 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19678
19679         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
19680         helper methods using the code manager.
19681         
19682         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
19683
19684         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
19685
19686 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19687         
19688         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
19689           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
19690
19691         * mini-s390.c: fix tail processing
19692
19693 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
19694
19695         * mini-ppc.c: mul.ovf.un exception name fix.
19696
19697 2004-08-03  Martin Baulig  <martin@ximian.com>
19698
19699         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
19700         instances; before jumping to `handle_enum', also modify `ptype'.
19701
19702 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
19703
19704         * cpu-sparc.md: fcall maximal length too small.
19705
19706 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
19707
19708         * mini-amd64.c mini.h: Add initial support for passing/returning 
19709         structures to/from pinvoked methods.
19710
19711 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
19712
19713         * mini-ppc.c: reg allocator fix.
19714
19715 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
19716
19717         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
19718
19719         * inssel.brg: Optimize memset on 64 bit machines.
19720
19721         * mini-amd64.c: Fix some vararg cases.
19722
19723 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19724
19725         * mini-s390.c: Corrected macro in emit_float_to_int
19726
19727         * s390-abi.cs: Tests to exercise the s390 ABI
19728
19729 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19730
19731         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
19732         caller saved regs.
19733
19734         * basic.cs: Add a test for add.ovf.un.
19735
19736 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
19737
19738         * mini-sparc.c: add case for OP_IDIV_UN
19739
19740 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19741
19742         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
19743         
19744         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
19745
19746 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
19747
19748         * basic.cs: regression tests.
19749
19750         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
19751         regressions.
19752
19753 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * basic.cs: Add a new test.
19756
19757         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
19758         and AOT. Various fixes and optimizations.
19759
19760         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
19761
19762 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
19763
19764         * mini-ppc.c: make sure temp regs are not used for global reg
19765         allocation.
19766
19767 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
19768
19769         * cpu-sparc.md: conv_i8 fix for 64bits
19770
19771         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
19772
19773 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
19774         
19775         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
19776         add opcode for cmp BYTE PTR [eax], imm.
19777
19778         * inssel.brg: Make memcpy and memset takes bases.
19779
19780 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19781
19782         * *-amd64.*: More AMD64 work.
19783         
19784 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19785
19786         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
19787         add a compare-not-equal opcode.
19788         
19789 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
19790
19791         * mini.c: Use mono_init_from_assembly instead of mono_init.
19792         
19793 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
19796
19797         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
19798
19799         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
19800
19801         * inssel.brg: 64 bit fixes.
19802
19803         * mini.h (MonoCallInst): Add some AMD64 specific data.
19804
19805         * mini.h: Add some OP_P opcodes.
19806
19807 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19808
19809         * basic.cs: tests for 61797 and 61740
19810
19811 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19812
19813         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
19814         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
19815
19816 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
19817
19818         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
19819
19820         * *-amd64*.*: Ongoing AMD64 work.
19821
19822 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
19823
19824         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
19825
19826         * *-amd64*: Ongoing AMD64 work.
19827
19828         * mini-arch.h: Add AMD64 support.
19829
19830         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
19831
19832         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
19833
19834         * mini-ops.h: Add new opcodes.
19835
19836         * Makefile.am: Add AMD64 support.
19837
19838         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
19839         rules into the inssel-long*.brg files.
19840
19841         * *-amd64.*: Add beginnings of AMD64 backend.
19842
19843 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
19844
19845         * mini.c (print_dfn): commenting out the code that prints
19846         the cil. With -O=deadce, this makes -v -v crash.
19847         
19848         * cpu-pentium.md: make checkthis have a length of 2
19849
19850 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
19851
19852         * mini-sparc.h: fix implementations of __builtin
19853         functions for Sun compiler for V9.
19854
19855 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
19856
19857         * mini.c: use the new stelem.ref wrapper
19858         * exceptions.cs, arrays.cs: new stelem.ref tests
19859
19860 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19861
19862         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
19863         new XSP should work with these changes).
19864
19865 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
19866         
19867         * inssel-{long32,x86,}.brg: trivial optimizations.
19868         
19869 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
19870
19871         * mini.c: load value when emitting box operation in
19872         constrained calls.
19873
19874 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
19875
19876         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
19877         is one byte shorter than cmp DWORD PTR [eax], 0.
19878
19879 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19880
19881         * inssel-ppc.brg: arguments on the stack are always
19882         relative to the stack pointer (spotted by Neale Ferguson).
19883
19884 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19885
19886         * exceptions-x86.c: delay appending the method name to the trace until
19887         after mono_jit_info_table_find is called, as this gets the real
19888         MonoMethod.
19889
19890 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
19891
19892         * aot.c: register roots
19893
19894 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19895
19896         * aot.c : I could just use PLATFORM_WIN32 flag.
19897
19898 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19899
19900         * aot.c : Reverting the previous fix. This time it broke linux build.
19901
19902 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19903
19904         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
19905
19906 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
19907
19908         * mini.c (handle_stack_args): Remove some more debugging code.
19909         
19910         * mini.c (handle_stack_args): Remove debug output left in by mistake.
19911
19912         * driver.c mini.h aot.c: Allow additional options to be specified with
19913         --aot and pass them to mono_compile_assembly.
19914
19915         * aot.c: Add experimental code to AOT compile all loaded assemblies
19916         on demand and save the code into a cache in the filesystem.
19917
19918         * aot.c: Add support for more wrapper methods.
19919         
19920         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
19921         58863.
19922
19923         * cpu-*.md: Remove removed opcodes.
19924
19925         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19926         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19927         related icalls to marshal.c.
19928
19929 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19932
19933         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19934
19935         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19936
19937 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19938         * liveness.c: If liveness is recomputated we need to reset the information
19939         for each variable. This way, if the liveness range has been narrowed
19940         by optimizations that happened after the last computation, we can return
19941         a smaller range.
19942         
19943         For example, if you have
19944         
19945         {
19946                 int i = 0;
19947                 
19948                 // Tons of code that does not affect i
19949                 
19950                 i = foo ();
19951                 ...
19952         }
19953         
19954         i = 0 is dead code and will be removed by SSA. However, when
19955         linear scan gets to the code, i will still appear to be live
19956         throughout the entire block. This prevents good register allocation.
19957
19958 2004-07-06  Martin Baulig  <martin@ximian.com>
19959
19960         * debug-mini.c (mono_debug_init_method): Allow
19961         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19962         (mono_debug_add_icall_wrapper): New method.
19963
19964         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19965
19966 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19967
19968         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19969         optimization.
19970
19971 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19972
19973         * aot.c (mono_aot_load_method): Fix loading of debug info.
19974
19975 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19976
19977         * aot.c: Add logging support.
19978
19979 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19980
19981         * mini.h: Add prototype for mono_print_method_from_ip.
19982
19983         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19984
19985         * inssel.brg: 64 bit fixes.
19986
19987         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19988         inssel-long32.brg.
19989
19990         * Makefile.am: Add SPARC64 support.
19991
19992 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19993
19994         * aot.c: Fix alignment problems on 32 bit platforms.
19995
19996 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19997
19998         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19999         SPARC64.
20000
20001         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20002         problems.
20003
20004         * mini.h: Bump AOT file version. Some 64 bit fixes.
20005
20006 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20007
20008         * inssel-sparc.brg: Add new rule to avoid register moves.
20009
20010         * inssel.brg: Add ldind_to_load_membase helper function.
20011
20012 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20013
20014         * mini.c: OffsetToStringData intrinsic.
20015         
20016 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20017
20018         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20019
20020         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20021         regression tests.
20022
20023         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
20024 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20025
20026         * mini.c: reinstated mono_compile_get_interface_var()
20027         on x86, too, since the change breaks the Gtk# build there as well.
20028
20029 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20030
20031         * driver.c: remove loop from the default optimizations: it seems to
20032         interact badly with some of the other options (see bug #60613).
20033
20034 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
20037         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
20038
20039 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
20040
20041         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
20042         vararg-using methods.
20043
20044 2004-06-21  Martin Baulig  <martin@ximian.com>
20045
20046         * mini/mini-exceptions.c
20047         (mono_handle_exception): Added `gpointer original_ip' argument.
20048         After calling mono_unhandled_exception(), call
20049         mono_debugger_unhandled_exception() and if that returns true,
20050         restore the context and return.
20051
20052 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20053
20054         * mini-ppc.c: prefer the use of relative branches so
20055         they won't need to be patched in aot code (patch from Patrick Beard).
20056
20057 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20058
20059         * aot.c: patch from Patrick Beard to make the output assembly
20060         more correct for the MacOSX assembler. Small tweak to
20061         generate sane images on Linux/PPC, too.
20062
20063 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20064
20065         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
20066         case until bug #59509 is fixed (shows up in #60332).
20067
20068 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20069
20070         * mini.c: make sure the needed wrappers are compiled, too, with
20071         precomp.
20072
20073 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
20074
20075         * driver.c: remove NPTL reference in --version output.
20076
20077 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20078
20079         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
20080         generate valid assembly for the Mach-O assembler.
20081
20082 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20083
20084         * driver.c: don't include abcrem in the all optimization specifier
20085         since it slows down jit compilation too much for now.
20086
20087 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
20088
20089         * mini.c: use BIGMUL only if both operands have the same signage.
20090         * iltests.il: Test for bug 60056. (errors related to signage in
20091         BIGMUL).
20092
20093         r=lupus.
20094
20095 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
20096
20097         * mini.c, aot.c: memory leak fixes.
20098
20099 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20100
20101         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
20102
20103 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
20104
20105         * Makefile.am: remove the -static hack completely, it links in
20106         statically glib as well.
20107
20108 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
20109
20110         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
20111         * exceptions.cs: make it compile with new mcs/csc.
20112
20113 2004-06-03 Massimiliano Mantione <massi@ximian.com>
20114         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
20115         and added relevant test case.
20116
20117 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20118
20119         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
20120         regressions in gtk-sharp.
20121
20122 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
20123
20124         * exceptions.cs: New regression tests.
20125
20126         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
20127
20128 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20129
20130         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
20131
20132 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
20133
20134         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
20135
20136         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
20137
20138 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
20139
20140         * mini.c (mono_jit_runtime_invoke): Init class in this
20141         method instead of trusting mono_jit_compile_method to
20142         do the work (because wrappers can be in object class)
20143
20144 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
20145
20146         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
20147
20148         * basic-long.cs: New regression test.
20149
20150 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
20151
20152         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
20153         and div/rem checks.
20154
20155 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20156
20157         * Makefile.am: fix miguel's change to build mono statically against
20158         libmono (track build dependencies).
20159
20160 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * cfold.c: Some glib versions do not have G_MININT32.
20163
20164 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
20165
20166         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
20167         with precision of tan, atan, sin and cos, and implemented related
20168         regressions tests (fixes bug 54467, but one new problem appeared and
20169         is not fixed yet).
20170
20171 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
20174
20175         * exceptions.cs: Add test for constant folding && division by zero.
20176
20177         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
20178         since driver.c is in libmono too, so the optimization was useless.
20179
20180         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
20181         variable to driver.c so the compiler can emit more efficient code to
20182         access them.
20183
20184 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20185
20186         * Makefile.am: don't distribute generated inssel.[ch] files.
20187
20188 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
20189
20190         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
20191         into the default appdomain. Fixes #58707.
20192
20193         * jit-icalls.c: Remove the broken approximation for truncl, doing
20194         no conversion is better.
20195
20196         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
20197         Fixes #58863.
20198
20199 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20200
20201         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
20202         of the mcrxr instruction which is not available on some processors
20203         even if it's documented to be. Implement add and sub overflow correctly
20204         (still not complete for long unsigned). Speed up icalls a bit.
20205
20206 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
20207
20208         * mini.c (mono_jit_compile_method_with_opt): Make sure that
20209         we run .cctor in the current domain instead of target_domain.
20210         
20211         Fixes bug #58558, .cctor not being called in -O=shared.
20212
20213 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20214
20215         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
20216
20217 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
20218
20219         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
20220         which can be done with an imm8, do it that way.
20221         (mono_arch_output_basic_block): ditto for a jmp
20222         (mono_arch_emit_prolog): Computate maximum offset of a label.
20223
20224 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
20225
20226         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
20227         now tries to allocate prefered physical reg's for virtual
20228         regs. This reduces the number of emited spills/loads with
20229         20-30% on our core assemblies.
20230
20231 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20232
20233         * jit-icalls.c: truncl() is not needed and trunc() is
20234         the correct thing to do anyway (bug #58287).
20235
20236 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
20237
20238         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
20239         if available.
20240
20241 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20242
20243         * driver.c: enable loop optimizations by default.
20244
20245 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20246
20247         * mini-x86.c: fix calc of max loop size when aligning loops start.
20248
20249 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
20250
20251         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
20252         the stack.
20253
20254 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
20255
20256         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
20257         should set carry.
20258
20259         * basic-long.cs: Add tests for add/subtract of immediates with carry.
20260
20261         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
20262         
20263         * mini.c (inline_method): Allways inline some wrappers even if the cost
20264         is too large. Fixes #58785.
20265
20266         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
20267         
20268 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
20269
20270         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
20271         (crichton@gimp.org). Beginning of support for sparc/linux.
20272
20273         * mini-sparc.c: Optimize retrieval of LMF address.
20274
20275 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
20276
20277         * exceptions-ppc.c:  handle alloca in methods with clauses.
20278
20279 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
20280
20281         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
20282
20283 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
20284
20285         * mini.c: Delegate most of the abort signal work to 
20286           mono_thread_request_interruption, which also handles Stop and Suspend
20287           states.
20288
20289 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
20290
20291         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
20292         supports the save/restore lmf opcodes.
20293
20294 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
20295
20296         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
20297         by gcc-3.4 as well.
20298
20299         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
20300
20301 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20302
20303         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
20304         methods which contain array accesses.
20305
20306         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
20307         boundaries. Fixes #58537.
20308
20309         * iltests.il: Add regression test for #58537.
20310
20311 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20312
20313         * mini-x86.c (mono_arch_local_regalloc): Last part of
20314         fix for bug #58633 (releasing register to early).
20315
20316 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
20317
20318         * basic-long.cs: Add new regression test.
20319
20320 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20321
20322         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
20323         register too early on the chain.
20324
20325 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20326
20327         * mini.c (create_helper_signature): Use a helper function to reduce
20328         the code which needs to be written. Also set the calling convention of
20329         icalls on windows. Fixes #57840.
20330
20331 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20332
20333         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
20334         exceptions-ppc.c: added helper function to get the instruction address
20335         from a signal handler context.
20336
20337 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20338
20339         * helpers.c: use g_get_tmp_dir. Invokes happyness 
20340         from gonzalo.
20341
20342 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20343
20344         * helpers.c: Add new env variable to pass args to objdump.
20345         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
20346
20347 2004-05-17  Radek Doulik  <rodo@ximian.com>
20348
20349         * Makefile.am (common_sources): added abcremoval.h so it get
20350         disted and daily mono packages on go-mono.com will build again
20351
20352 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
20353
20354         * abcremoval.c: Fixed coding style, added copyright header.
20355
20356         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
20357
20358         * mini.h: Added prototype for abc removal main function.
20359
20360         * build_relations_propagation_table.pl: Added copyright header.
20361
20362 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20363
20364         * basic-long.cs: reg test for complex ceq_long bug.
20365
20366 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20367
20368         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
20369         reg in long and clob case (bug #58343). Fixed/added comments.
20370
20371 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20372
20373         * mini.c (mono_jit_runtime_invoke): Follow new convention
20374         of calling the invoke method with an function pointer.
20375
20376 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20377
20378         * ChangeLog: Fix author of memory leak patch.
20379
20380 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20381
20382         * Makefile.am: fix make dist as well...
20383
20384
20385 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20386
20387         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20388         on archs where pointers are 4 bytes long.
20389
20390         * Makefile.am: Added abcremoval.c source file.
20391
20392         * abcremoval.c: Added abcremoval.c.
20393
20394         * abcremoval.h: Added abcremoval.h.
20395
20396         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20397
20398         * inssel.brg: Enabled bounds check removal.
20399
20400         * mini.c: Added support for abcrem optimization.
20401
20402         * mini.h: Added abcrem optimization label.
20403
20404         * driver.c: Added support for abcrem optimization.
20405
20406         * propagated_relations_table.def: Added propagated_relations_table.def.
20407
20408 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20409
20410         * mini.c, cfold.c: fix style.
20411
20412 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20413
20414         * mini.c: handle issue with the low-level implementation of
20415         some long opcodes (bug #54209).
20416
20417 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
20418
20419         * basic.cs: test for my new cmov stuff.
20420
20421 2004-05-13      Patrik Torstensson
20422
20423         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
20424         opt and added peephole documentation.
20425
20426 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20427
20428         * tramp-ppc.c: rewrote the generic trampoline code.
20429
20430 2004-05-11      Patrik Torstensson
20431
20432         * mini-x86.c: optimize long shl/shr asm code (one less branch)
20433
20434 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20435
20436         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
20437
20438         * mini.h mini.c dominators.c: Applied patch from Derek Woo
20439         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
20440
20441         * mini.c: Add new icalls for AsAny marshalling.
20442
20443 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20444
20445         * tramp-ppc.c, mini-ppc.c: more cleanups.
20446
20447 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20448
20449         * mini.c: no warnings.
20450
20451 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20452
20453         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
20454
20455 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20456
20457         * mini.c: In the thread abort signal handler, if the thread is in the
20458         process of being stoped, don't throw the Abort exception, just stop the
20459         thread.
20460
20461 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
20462
20463         * tramp-ppc.c: removed old code.
20464
20465 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20466
20467         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
20468         do some simple speed optimizations on ppc.
20469
20470 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20471
20472         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
20473         and large offsets in load/store.
20474
20475 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20476
20477         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
20478         it causes regressions.
20479
20480 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20481
20482         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
20483         support.
20484
20485 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20486
20487         * jit-icalls.c: remove warnings.
20488         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
20489         speedups for unsafe code.
20490
20491 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20492
20493         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
20494
20495 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
20496
20497         * basic-calls.cs: Add new regression test.
20498
20499         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
20500         more portable.
20501
20502         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
20503
20504         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
20505         is no longer used.
20506
20507 2004-05-06      Patrik Torstensson
20508
20509         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
20510         long reg allocation in any reg (not only eax:edx) and implemented 
20511         long shl/shr ops in asm instead of helpers.
20512
20513 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20514
20515         * mini-sparc.h: Fix warnings.
20516
20517         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
20518         stack.
20519
20520         * mini-exceptions.c (mono_handle_exception): Call the filter in a
20521         separate statement for clarity.
20522
20523         * mini-sparc.c: Update status.
20524
20525 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
20526
20527         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
20528         here.
20529
20530 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20531
20532         * inssel-ppc.brg: another small pre-release workaround:
20533         we don't do overflow detection for long_sub_un.
20534
20535 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20536
20537         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
20538         (also works around a weird ppc bug: 57957).
20539
20540 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
20541
20542         * tramp-ppc.c: trampoline fixes.
20543
20544 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
20545
20546         * mini-ppc.c: fixed typos.
20547
20548 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20549
20550         * mini-ppc.c, exceptions-ppc.c: more code saves registers
20551         at the top of the stack. Fixed typos. Use a frame registers
20552         for all the methods with exception clauses.
20553
20554 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20555
20556         * exceptions-ppc.c: restore fp registers.
20557
20558 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20559
20560         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
20561         order from the stack top (moved the stack room to save the
20562         return value for trace after the param area). Fixed corruption
20563         in restoring registers on unwind.
20564
20565 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20566
20567         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
20568
20569 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20570
20571         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
20572         and prolog/epilog for methods that use it. Allow
20573         enough param area room for varargs methods. Fix miguel's
20574         breakage in exception handling.
20575
20576 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20577
20578         * Makefile.am: run genmdesc only on current arch.
20579
20580 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20581
20582         * exceptions-x86.c:
20583         * mini-x86.h: fix the build on windows.
20584
20585 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
20586
20587         * 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.
20588
20589         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
20590
20591         * mini-exceptions.c: New file.
20592         
20593         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
20594         Move some parts of the x86 exception handling code to an 
20595         arch-independent file so it can be shared with other ports.
20596
20597 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
20598
20599         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
20600
20601 2004-04-26  David Waite  <mass@akuma.org>
20602
20603         * driver.c: remove comma from end of enumeration declaration
20604
20605 2004-04-26  Jackson Harper  <jackson@ximian.com>
20606
20607         * driver.c: parse config file before loading first assembly. This
20608         allows the user gac to be enabled/disabled. 
20609         
20610 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
20611
20612         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
20613         simpler mechanism: we do not care what is encoded initially
20614         (branch absolute or relative), we care about the code and its
20615         target.  I kept the old code for reference for now.
20616
20617         The new code tries first to determine if the jump is anywhere in
20618         the -/+32 absolute meg range, if it succeeds, it encodes using the
20619         absolute branch;  If not, it tried to find something in the
20620         relative range, if not, it uses the handle_thunk code. 
20621
20622 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
20623
20624         * exceptions-ppc.c: use the correct ip register on macosx.
20625
20626 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
20627
20628         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
20629
20630 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
20631
20632         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
20633         Raise exception on integer divide by zero by hand since the hw
20634         doesn't support it. Handle NaNs in FP compares.
20635
20636 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20637
20638         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
20639         code reducing duplication between the platforms and enabled
20640         signal exception handling (on linux for now).
20641
20642 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
20643
20644         * exceptions-ppc.c: more macosx support.
20645
20646 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20647
20648         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
20649
20650 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20651
20652         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
20653
20654 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20655
20656         * iltests.il: more tests.
20657
20658 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20659
20660         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
20661         vars as well.
20662
20663 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20664
20665         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
20666
20667 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20668
20669         * liveness.c: Mark variables as volatile in all basic blocks reachable
20670         from exception clauses.
20671
20672 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
20673
20674         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
20675         inlining.
20676
20677 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20678
20679         * iltests.il, basic.cs: more tests for regalloc.
20680
20681 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20682
20683         * iltests.il: Some tests for register allocation modifications
20684         I have locally.
20685
20686 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
20687
20688         * exceptions.cs: Add regression test for bug #56782.
20689
20690         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
20691         original stack trace if an exception is rethrown. Fixes #56782. Oh,
20692         the beauty of fixing the same thing in 5 different files...
20693
20694 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
20695
20696         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
20697         methods.
20698
20699 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
20700
20701         * mini.c: Add support for STRWLPARRAY marshalling convention.
20702
20703 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20704
20705         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
20706         to init the context to setup the regs pointer).
20707
20708 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20709
20710         * exceptions-ppc.c: more exceptions work.
20711
20712 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20713
20714         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
20715         not allowed.
20716
20717 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20718
20719         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
20720         can use the memory directly.
20721
20722         * cpu-pentium.md: Update documentation from a post from Zoltan. 
20723
20724         add x86_add_membase, x86_sub_membase, x86_mul_membase
20725
20726 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20727
20728         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
20729         GENERAL_REGS they were also hardcoded for all PPC ports.
20730
20731         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
20732
20733         Remove hard-coded limit for floating point registers, use
20734         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
20735
20736         Notice that in MacOS X calling conventions you can fit a lot more
20737         floating point values in registers, so I should update the PInvoke
20738         test to excercise the passing of floating point values on the
20739         stack (currently broken).
20740         
20741 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
20742
20743         * tramp-ppc.c (create_trampoline_code): Added
20744         JUMP_TRAMPOLINE_SIZE. 
20745         (ppc_magic_trampoline): Follow the pattern from
20746         x86_magic_trampoline: if code is set to zero, return. 
20747         (create_trampoline_code): Always pass MonoMethod to the jump
20748         trampoline, before it was passing a null.
20749         (mono_arch_create_jump_trampoline): Implement the jump stub, could
20750         share the code with mono_arch_create_jit_trampoline. 
20751
20752         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
20753         implemented.
20754         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
20755         implemented.  
20756
20757         * cpu-g4.md: Added length for jmp instruction, the worst case
20758         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
20759         for save_lmf).
20760
20761 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
20762
20763         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
20764
20765 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
20766
20767         * mini.c: Only set bblock->real_offset when adding a new bblock, and
20768         before each IL instruction.
20769
20770         * mini.c (CEE_BOX): Fix warnings.
20771
20772 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20773
20774         * mini.c: removed a few unused vars and extra whitespace.
20775
20776 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
20777
20778         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
20779         checks.
20780         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
20781         index.
20782         (OP_GETCHR): use the above
20783         (CEE_LDELEMA): use the above.
20784
20785         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
20786         version of the generic impl.
20787         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
20788         (CEE_LDELEMA): use the above.
20789
20790 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20791
20792         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
20793         Fixes #56317.
20794
20795         * iltests.il: Added new regression test for #56317.
20796
20797 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20798
20799         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
20800         under NetBSD. Fixes #56450.
20801
20802         * liveness.c (update_gen_kill_set): Fix previous patch.
20803
20804 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20805
20806         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
20807
20808 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
20809
20810         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
20811         ldsfld and ldsflda.
20812
20813         * inssel-sparc.brg: Add more optimizations.
20814
20815         * mini-sparc.c: Replace multiply/divide with shifts if possible.
20816
20817 2004-04-01  Martin Baulig  <martin@ximian.com>
20818
20819         * mini.c (handle_box): New static function; moved the
20820         implementation of CEE_BOX here.
20821         (mono_method_to_ir): Added `constrained_call' variable.
20822         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
20823         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
20824         mono_method_get_constrained() to get the method.
20825
20826 2004-04-01  Martin Baulig  <martin@ximian.com>
20827
20828         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
20829         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
20830         (mono_method_to_ir): We don't need these macros anymore since
20831         mono_class_get_full() already takes care of it. 
20832
20833 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20834
20835         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
20836         use @function (as doesn't accept #function here) and check the return
20837         value of system and stop if fails.
20838
20839 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20840
20841         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
20842
20843 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
20844
20845         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
20846
20847         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
20848
20849         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
20850         #56223.
20851
20852         * basic-long.cs: Add test for negation of Int64.MinValue.
20853
20854 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
20855
20856         * mini-sparc.c: Update status.
20857
20858         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
20859
20860         * exceptions-sparc.c: Fix return value in filters.
20861
20862         * inssel-sparc.brg: Fix register allocation in some rules.
20863
20864 2004-03-28  Martin Baulig  <martin@ximian.com>
20865
20866         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
20867         if neccessary.  
20868
20869 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20870
20871         * mini-x86.c (mono_arch_patch_code): Fix warnings.
20872         
20873         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
20874         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
20875         remove unused conv_u4 opcode.
20876
20877         * mini-x86.c: Remove valgrind workaround since it slows down things
20878         even when mono is not run under valgrind.
20879
20880 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
20881
20882         * mini-sparc.c: Update status.
20883
20884         * inssel-sparc.brg: Add some optimizations.
20885
20886         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
20887         future delay slot filling. Add support for varargs, tail calls and JMP.
20888
20889         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
20890         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
20891
20892         * inssel.brg: Fix register allocation in OP_ARGLIST.
20893
20894         * inssel.brg: Fix warnings.
20895
20896 2004-03-25  Martin Baulig  <martin@ximian.com>
20897
20898         * mini.c (inflate_generic_field): Removed.
20899         (mini_get_method): Removed, use mono_get_method_full(),
20900         (mini_get_class): Removed, use mono_class_get_full().
20901         (mono_method_to_ir): Pass our generic context to
20902         mono_field_from_token().        
20903
20904 2004-03-25  Martin Baulig  <martin@ximian.com>
20905
20906         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
20907         of a `MonoMethod *'.
20908         (mini_get_method): Take a `MonoGenericContext *' instead
20909         of a `MonoMethod *'.
20910         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
20911         a new local variable called `generic_context' which holds the
20912         current `MonoGenericContext *'; use it to lookup things.
20913
20914 2004-03-24  Martin Baulig  <martin@ximian.com>
20915
20916         * mini.c (mini_get_class): New static method; if we're inside a
20917         generic instance, inflate the class if neccessary.
20918         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
20919
20920 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20921
20922         * iltests.il: New regression test for #55976.
20923
20924         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20925         #55976.
20926
20927 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20928
20929         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20930         output.
20931
20932 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20933
20934         * liveness.c: Consider SSA stores as well as loads when making vars
20935         volatile.
20936
20937         * exceptions.cs: New regression tests for register allocation.
20938         
20939 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20940
20941         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20942         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20943           domain lock only to protect puntual access to data structures.
20944           Added access lock for sighash, jit_icall_hash_name, 
20945           jit_icall_hash_addr and domain->code_mp.
20946
20947 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20948
20949         * driver.c: Print SIGSEGV handling method.
20950
20951         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20952
20953         * mini.c (setup_jit_tls_data): Handle case when this is called
20954         multiple times for a thread.
20955
20956         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20957         is different from fbxx_un. Fixes #54303. Also use constants instead of
20958         magic numbers in a lot of places.
20959
20960 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20961
20962         * exceptions.cs: Fix cctor test when --regression is used.
20963
20964 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20965
20966         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20967         for Linux/ppc.
20968
20969 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20970
20971         * inssel-ppc.brg: fixed register assignments for some rules.
20972
20973 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20974
20975         * exceptions.cs: Add test for exceptions in static constructors.
20976
20977         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20978         static constructors outside the domain lock. Fixes #55720.
20979
20980 2004-03-17  Martin Baulig  <martin@ximian.com>
20981
20982         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20983         (inflate_generic_field): Take the `MonoMethod *' instead of the
20984         `MonoClass *' and added support for generic method.
20985         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20986         have a `field->parent->gen_params', only inflate the field if it's
20987         an open constructed type.
20988
20989 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20990
20991         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20992         exception object instead of the preconstructed ones.
20993
20994 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20995
20996         * mini.c: reverted changed to sigsegv_signal_handler commited
20997         accidentally in the previous patch.
20998
20999 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21000
21001         * mini.c:
21002         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21003         running --aot with an old assembly.
21004
21005 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21006
21007         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21008         point values.
21009
21010         * mini-sparc.c: Add support for v9 branches with prediction.
21011
21012 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21013
21014         * mini.c (mini_init): #warning is GNUC only
21015
21016         * mini-sparc.h: implement __builtin_frame_address
21017         and __builtin_return_address for Sun C compiler
21018
21019 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21020
21021         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
21022
21023 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21024
21025         * basic-calls.cs: Add test for unaligned byref long argument passing.
21026
21027         * mini-ops.h: Add sparcv9 compare and branch instructions.
21028
21029         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
21030         v9 instructions if we have a v9 cpu.
21031
21032         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
21033         registers for global allocation.
21034
21035         * exceptions-sparc.c: Fixes.
21036         
21037 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
21038
21039         * liveness.c (mono_analyze_liveness): Optimized version.
21040
21041         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
21042
21043         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
21044         sparc work.
21045
21046         * basic-float.cs basic-calls.cs: New regression tests.
21047
21048 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
21049
21050         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
21051         sigaltstack implementation.
21052
21053         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
21054         
21055         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
21056         stuff if SIGSEGV_ON_ALTSTACK is not defined.
21057
21058 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
21059
21060         * mini.c: Fix warnings.
21061         
21062         * mini.c (mono_resolve_patch_target): New function which contains the
21063         arch independent part of the patching process.
21064
21065         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
21066         patching code to a separate function.
21067
21068 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
21069
21070         * mini.c (add_signal_handler): ifdef out on Windows
21071
21072 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
21073
21074         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
21075         cpu-sparc.md: Add exception handling support + other fixes.
21076
21077         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
21078         typed GC detection in --version.
21079
21080         * basic.cs exceptions.cs: New regression tests.
21081
21082         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
21083         the arch specific code can store data during a compilation.
21084
21085         * mini-ops.h: Add OP_SETFRET.
21086
21087         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
21088         function, register a separate icall for each arity, so the icalls can
21089         get a wrapper.
21090         
21091         * mini.c (mono_print_tree): Print negative offsets in a more readable
21092         form.
21093         
21094         * mini.c: Make signal handling work on sparc.
21095         
21096         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
21097
21098         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
21099
21100         * jit-icalls.c: Emulate truncl by aintl on solaris.
21101
21102         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
21103
21104 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
21105
21106         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
21107
21108 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21109
21110         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
21111         a MarshalByRef type, inline a method that performs the check, taking into
21112         account that the object can be a proxy. Also implemented tow new opcodes:
21113         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21114         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
21115         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21116
21117 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21118
21119         * mini-ppc.c: if a relative branch displacement is too big
21120         but it points to and area reachable with an absolute branch, 
21121         avoid the thunks.
21122
21123 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21124
21125         * mini.c: optimize small copies in cpblk.
21126
21127 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
21128
21129         * basic-calls.cs basic-float.cs: New regression tests.
21130
21131         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
21132         negative offsets from %fp. Implement localloc. Fix local register 
21133         allocation. Fix the case when the this argument needs to be saved to
21134         the stack. Implement some missing opcodes.
21135
21136 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
21137
21138         * mini.c (mini_method_compile): Reenable global regalloc in methods
21139         with exception handlers.
21140
21141         * linear-scan.c (mono_varlist_sort): Fix warning.
21142
21143         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
21144
21145         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
21146         regalloc costs.
21147
21148         * liveness.c: Make all variables uses in exception clauses volatile, to
21149         prevent them from being allocated to registers. Fixes #42136.
21150
21151 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
21152
21153         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
21154         causes regressions.
21155
21156         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
21157         argument to mono_arch_regalloc_cost.
21158
21159         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
21160         precisely.
21161
21162 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
21163
21164         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
21165         Make the cost of allocating a variable to a register arch dependent.
21166
21167         * basic-calls.cs: Fix compilation of tests.
21168         
21169         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
21170         helper function to cut back on the number of #ifdefs needed.
21171
21172         * mini-ppc.c: Fix compilation.
21173
21174         * basic-calls.cs: New regression tests.
21175
21176         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
21177
21178         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
21179         of l0 since that is callee saved.
21180
21181         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
21182         to virtual calls.
21183
21184         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
21185         of delay instruction.
21186
21187         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
21188
21189         * mini.h (MonoCallInst): Add 'virtual' flag.
21190
21191         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
21192
21193 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
21194
21195         * *.cs: New regression tests.
21196
21197         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
21198         work.
21199
21200         * mini.c (mono_runtime_install_handlers): Fix build.
21201
21202         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
21203         'signal_stack_size' members.
21204
21205         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
21206         alternate signal stack.
21207
21208         * exceptions-x86.c: Add stack overflow handling.
21209
21210         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
21211         functions to arch independent code.
21212
21213         * mini.c (mono_print_tree): Print more detailed info for load_membase
21214         opcodes.
21215         
21216 2004-02-23  Martin Baulig  <martin@ximian.com>
21217
21218         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
21219
21220 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21221
21222         * mini-x86.c: fixed reg allocation for div/rem.
21223
21224 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
21225
21226         * driver.c (mono_main): Report some configuratio options on --version.
21227
21228 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
21229
21230         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
21231         low in the address space. Correctly flush memory in thunks where we
21232         output native code.
21233
21234 2004-02-20  Martin Baulig  <martin@ximian.com>
21235
21236         * mini.c (mini_get_method): New static method; inflate all generic
21237         methods and methods in open generic instances.
21238         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
21239         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
21240
21241 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21242
21243         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
21244
21245         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
21246
21247 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
21248
21249         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
21250
21251         * mini-sparc.c (flushi mono_arch_output_basic_block): make
21252         it compile using Sun's compiler.
21253
21254 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21255
21256         * 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.
21257
21258         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
21259
21260 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21261
21262         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
21263         code.
21264         * mini-ppc.c: handle calls outside of the allowed range with thunks
21265         allocated using the code manager.
21266         * tramp-ppc.c: use the code manager to hold generated native code.
21267         Fixed the magic trampoline to just patch vtable entries.
21268
21269 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
21270
21271         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
21272         independent file.
21273
21274 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
21275
21276         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
21277         PPC.
21278
21279         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
21280         if we have a working __thread implementation.
21281
21282         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
21283         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
21284
21285 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
21286
21287         * mini-x86.c: Fix compilation under gcc 2.
21288         
21289 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
21290
21291         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
21292         contains a call to the wrapped function.
21293
21294         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
21295         OP_<CALL>_IMM opcodes, and use them under X86.
21296         
21297         * mini.c (mono_jit_find_compiled_method): Fix warning.
21298
21299         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
21300
21301         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
21302
21303         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
21304         functionality to mini.c.
21305
21306         * mini.c (mono_create_jump_trampoline): New function to create a jump
21307         trampoline. Return a compiled method instead of a trampoline if it
21308         exists. Add a cache for jump trampolines.
21309
21310         * mini.c (mono_jit_find_compiled_method): New function to return a
21311         compiled method if it exists.
21312
21313         * mini-x86.c: Call mono_create_jump_trampoline instead of 
21314         mono_arch_create_jit_trampoline.
21315
21316         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
21317         a jump trampoline. Fixes #52092.
21318         
21319 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
21320
21321         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
21322         which is not up-to-date. Add check_corlib_version () instead.
21323
21324         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
21325         have to call it.
21326         
21327         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
21328         since newer valgrind versions do not need it.
21329
21330         * mini.c (mono_jit_compile_method_with_opt): New helper function to
21331         compile a method with a given set of optimizations.
21332
21333         * mini.c: Compile icall wrappers on-demand instead of at startup.
21334
21335         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
21336         wrapper for an icall.
21337
21338 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
21339
21340         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
21341         #54063.
21342
21343         * iltests.il: Add test for non-empty stack before switch instruction.
21344
21345 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
21346
21347         * mini.c: Add support for new stringbuilder marshalling conventions.
21348
21349         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
21350
21351 2004-02-01  Martin Baulig  <martin@ximian.com>
21352
21353         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
21354         in `ginst->mtype_argv'.
21355
21356 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
21357
21358         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
21359         facilitate grepping.
21360
21361 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
21362
21363         * mini.c: fixed buglet in initobj generic implementation for references.
21364
21365 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
21366
21367         * Makefile.am: make the version script conditional.
21368         * jit-icalls.c: handle missing truncl().
21369
21370 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21371
21372         * exceptions.cs: Add more tests for double->int conversion.
21373
21374         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
21375         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
21376
21377 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
21378
21379         * driver.c: make --verbose --version emit an error
21380         if the loaded corlib doesn't match the runtime version.
21381
21382 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21383
21384         * mini-ppc.h: export ppc_patch().
21385         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21386         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21387         on par or better than on MacOSX.
21388
21389 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21390
21391         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21392         mono_lookup_pinvoke_call.
21393
21394         * mini-x86.c: Under windows, the default pinvoke calling convention is
21395         stdcall. Fixes #52834.
21396
21397         * mini.c (optimize_branches): Add an upper bound to the number of
21398         iterations to prevent infinite loops on strange loops. Fixes #53003.
21399
21400 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21401
21402         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21403         and ISINST. Fixes #52093.
21404
21405         * objects.cs (test_0_vector_array_cast): New tests.
21406         
21407 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21408
21409         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21410         checking in Array.Set ().
21411
21412         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21413         #52590.
21414
21415         * object.cs (test_0_multi_array_cast): New regression test.
21416
21417 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
21418
21419         * exceptions-ppc.c: fix build on Linux/PPC.
21420
21421 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
21422
21423         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
21424         running under valgrind.
21425         (x86_magic_trampoline): Fix build bustage.
21426
21427         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
21428         negative values as well. This is needed for the encoding of the line number
21429         info, since sometimes the line numbers are not in increasing order.
21430
21431 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21432
21433         * cpu-pentium.md (localloc): Increase the size of the localloc 
21434         instruction since it is a loop under Win32.
21435
21436         * debug-mini.c (record_line_number): Get rid of unneccesary memory
21437         allocation.
21438
21439 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21440
21441         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
21442         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
21443         Max Horn (max@quendi.de). Fix file names in comments.
21444
21445 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
21446
21447         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
21448         avoid stack overflow.
21449         (replace_usage): Avoid uninitialized variable warnings.
21450
21451         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
21452         and taking the address of valuetype variables.
21453
21454 2004-01-03  Patrik Torstensson
21455
21456         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
21457         for other purposes than FP later on.
21458
21459 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
21460
21461         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
21462         of tail calls.
21463
21464 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21465
21466         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
21467
21468 2003-12-30  Patrik Torstensson <p@rxc.se>
21469
21470         * mini-x86.h: Decreased number of availiable fp regs.
21471         Solves corner cases with FP spilling.
21472
21473 2003-12-23  Patrik Torstensson <p@rxc.se>
21474
21475         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
21476         for floating point stack tracking / spilling on x86. 
21477         Fixes bug #49012.
21478         
21479         * basic-float.cs: added float mul overflow test.
21480
21481 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
21482
21483         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
21484
21485 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21486
21487         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
21488         supports for cond branches that overflow the immediate
21489         overflow offset. mcs can compile simple programs.
21490
21491 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21492
21493         * exceptions-ppc.c: exception handling support wip:
21494         finally handlers get run on exception.
21495
21496 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21497
21498         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
21499         profiling.
21500
21501 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21502
21503         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
21504         initial support for stack walking and unwinding.
21505
21506 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
21507
21508         * driver.c (mono_main): Make corlib-out-of-sync message more 
21509         descriptive. Also remove verify_corlib call.
21510
21511 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21512
21513         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
21514         not overlap with other call's arguments, too.
21515
21516 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
21517
21518         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
21519         move to arch-specific code the choice of arch-specific
21520         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
21521         * mini.c: ensure emulation calls will not interleave
21522         with other calls.
21523
21524 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
21525
21526         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
21527         the magic trampoline stack frame is dropped before executing
21528         the new method.
21529
21530 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21531
21532         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
21533         and integer to fp conversions. Added support for overflowing
21534         arguments on the stack. Reserve a couple more registers as temps.
21535         Added support for aot compilation (as output still needs to be
21536         tweaked, though).
21537
21538 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21539
21540         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
21541         Don't overwrite return register in some corner cases.
21542
21543 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
21544
21545         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
21546         static constructors when AOT compiling.
21547
21548         * driver.c (mono_main): Call mono_check_corlib_version.
21549
21550 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21551
21552         * cpu-g4.md, basic.cs: fixed div target register.
21553
21554 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21555
21556         * mini-ppc.c, basic.cs: shl_imm fix with test.
21557
21558 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21559
21560         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
21561         structures by value. Misc fixes.
21562         * objects.cs: more tests.
21563
21564 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
21565
21566         * mini-ppc.c: lconv.ovf.i implemented.
21567
21568 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21569
21570         * mini.c:
21571         (mini_init): don't error out if someone already called g_thread_init.
21572
21573 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21574
21575         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
21576         to be any type per the spec. Fix abnormal memory usage when
21577         the same object is repeatedly thrown.
21578
21579 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
21580
21581         * mini.c: check for overruns in IL code.
21582
21583 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
21584
21585         * TODO: Add/remove some todo entries.
21586
21587 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
21588
21589         * driver.c (mono_main): Call mono_verify_corlib.
21590
21591 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
21592
21593         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
21594         This has been moved to mini.c
21595         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
21596         type being casted is marshalbyref it could be a proxy, so instead of
21597         emitting the type check code, emit a call to a runtime method that will
21598         perform the check by calling CanCastTo if needed.
21599
21600 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
21601
21602         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
21603         methods with large stack frames under Win32.
21604
21605 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
21606
21607         * Makefile.am: Distribute regression tests.
21608
21609         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
21610         at the end instead of inserting each variable into the sorted list.
21611
21612         * linear-scan.c (mono_varlist_sort): New helper function.
21613         
21614 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21615
21616         * mini.c: ensure arguments and locals are within bounds.
21617
21618 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21619
21620         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
21621         related fixes.
21622
21623 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21624
21625         * mini.c (mono_cprop_copy_values): Fix crash.
21626
21627         * aot.c: Set verbosity back to 0.
21628         
21629 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21630
21631         * regalloc.c: complete memory leak fix by Laurent Morichetti
21632         (l_m@pacbell.net).
21633
21634 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * driver.c (main_thread_handler): Revert the previous patch.
21637
21638         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
21639         under valgrind.
21640
21641         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
21642         memory from the memory pool.
21643
21644         * driver.c (main_thread_handler): Turn on all optimizations when
21645         --aot is used.
21646
21647         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
21648         an array for better performance.
21649
21650         * regalloc.c (mono_regstate_assign): Fix memory leak.
21651
21652         * debug-mini.c (mono_debug_serialize_debug_info): New function to
21653         serialize the debug info.
21654
21655         * debug-mini.c (mono_debug_add_aot_method): New function to load the
21656         debug info from the serialized representation.
21657
21658         * aot.c: Save debug info into the generated file and load it when 
21659         loading a method.
21660
21661         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21662
21663 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21664
21665         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
21666         More FP-related fixes.
21667
21668 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21669
21670         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
21671         and register allocation buglet. Hello world now runs.
21672
21673 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21674
21675         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
21676         * tramp-ppc.c: fixed class init trampoline.
21677         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
21678
21679 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21680
21681         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
21682         mini.c: more ppc changes/fixes.
21683
21684 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21685
21686         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
21687         Also optimize the case when the arguments are the same in the caller 
21688         and in the callee.
21689
21690         * iltests.il: Add tests for tail calls with valuetype arguments.
21691
21692 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21693
21694         * mini-ppc.c: fixes for struct return type.
21695
21696 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
21697
21698         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
21699         mono_spillvar_offset() to arch-specific code.
21700
21701 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21702
21703         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
21704
21705 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21706
21707         * exceptions-x86.c: Fix stack space leaks.
21708         
21709         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
21710         registers from the lmf if the method has save_lmf set.
21711
21712 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
21713
21714         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
21715         of icall wrappers into InvokeInDomain, since these are now per-domain.
21716
21717 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
21718
21719         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
21720         make some opcode emulation and intrinsic ops enabled/disabled 
21721         according to the architecture. More fixes.
21722
21723 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21724
21725         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
21726
21727 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21728
21729         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
21730         arch-specific handling for 'this' and struct return type to
21731         arch-specific code.
21732
21733 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21734
21735         * aot.c: prevent divide by zero error when reporting (it happened with
21736         Accessibility.dll).
21737
21738 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
21739
21740         * mini.h (inst_switch): Remove unused macro.
21741
21742 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21743
21744         * aot.c:
21745         (load_aot_module): free 'info->methods' and 'info' properly. No more
21746         "free(): invalid pointer blah" messages when you have an old aot
21747         compiled assembly.
21748
21749 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
21750
21751         * jit-icalls.c, mini.c: Added support for context static fields.
21752
21753 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21754
21755         * mini.c (mono_method_blittable): Methods which set LastError are not 
21756         blittable either. Fixes #51108.
21757         
21758 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21759
21760         * mini.c: flush icache.
21761         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
21762
21763 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21764
21765         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
21766
21767 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21768
21769         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
21770         safe on IA32.
21771
21772         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
21773         vararg calls.
21774
21775         * inssel.brg (CEE_MKREFANY): Fix AOT case.
21776
21777 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21778
21779         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
21780         instruction when the result is discarded.
21781
21782         * iltests.il (test_0_div_regalloc): New regression test.
21783
21784         * arrays.cs: Fix compilation error.
21785
21786 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
21787
21788         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
21789         float rules to inssel-x86.brg: sane architectures with FP registers
21790         don't need to implement these rules.
21791
21792 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21793
21794         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
21795
21796 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21797
21798         * mini.h, inssel-long32.brg: fixed endianess issues in int64
21799         implementation of 32 bit systems.
21800
21801 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21802
21803         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
21804         (Jeroen Zwartepoorte).
21805
21806 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
21809         the caller and the callee matches.
21810         
21811         * mini.c (mono_method_to_ir): Add comment.
21812
21813         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
21814         signbit is missing on some platforms.
21815
21816 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21817
21818         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
21819
21820         * mini.c (setup_jit_tls_data): Call the new function.
21821         
21822         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
21823
21824         * mini-x86.c: Add experimental support for fast access to the lmf
21825         structure under NPTL/Linux 2.6.x.
21826
21827 2003-11-06  Martin Baulig  <martin@ximian.com>
21828
21829         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
21830         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
21831         the debugger.
21832
21833 2003-11-02  Martin Baulig  <martin@ximian.com>
21834
21835         * mini.c (inflate_generic_field): New static method.
21836         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
21837         generic instance and the field is declared in a generic type, call
21838         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
21839
21840 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
21841
21842         * mini.h mini.c (mono_method_same_domain): New function to return
21843         whenever the caller and the callee are in the same domain.
21844
21845         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
21846
21847 2003-10-30  Martin Baulig  <martin@ximian.com>
21848
21849         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
21850         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
21851         method parameters.
21852         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
21853         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
21854
21855 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
21856
21857         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
21858         propagation.
21859
21860         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
21861         object here, so it is in the correct appdomain etc.
21862
21863 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
21864
21865         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
21866         already done.
21867         (mono_method_to_ir): Avoid freeing the type created returned from
21868         mono_type_create_from_typespec, since it is put into an internal cache
21869         by the function. Fixes pointer.exe.
21870
21871         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
21872         trampolines for icalls and pinvokes as well. Fixes #33569.
21873
21874 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * mini.c: Update after appdomain changes.
21877
21878         * mini.c (mono_jit_compile_method_inner): Allways compile native
21879         method wrappers in the root domain, since there can only be one
21880         instance of them, whose address is stored in method->info.
21881
21882 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
21883
21884         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
21885         environment variable. Instead detect automatically whenever running
21886         under valgrind using the magic macro RUNNING_ON_VALGRIND from
21887         valgrind.h.
21888
21889 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
21890
21891         * trace.c, trace.h: New files that implement the new trace option
21892         parsing. 
21893
21894         * driver.c: Document new --trace options.
21895
21896         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
21897         mini-x86.c: Apply:
21898
21899         -       if (mono_jit_trace_calls)
21900         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
21901
21902         * mini.h: prototypes.
21903         
21904 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
21905
21906         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
21907
21908         * mini.c inssel.brg: Implement typedefbyref opcodes.
21909
21910         * mini.c (mono_jit_compile_method): Remove unused local variable.
21911
21912         * mini.c (mono_jit_compile_method_inner): Ditto.
21913         
21914 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
21915
21916         * tramp-x86.c (x86_class_init_trampoline): Fix build.
21917         
21918         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
21919
21920 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21921
21922         * mini.c (mono_no_aot): Remove unused global variable.
21923
21924         * mini.c: Thread safety fixes.
21925
21926 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21927
21928         * mini.c (mono_create_class_init_trampoline): Add a lock around
21929         class_init_hash_addr.
21930
21931         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21932         #30073.
21933
21934         * mini.c: Decompose the NEWARR instruction before decomposing its
21935         arguments. Fixes #30073.
21936
21937 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21938
21939         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21940         convention.
21941
21942 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21943
21944         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21945
21946         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21947
21948         * driver.c: Add support for compiling icall wrappers to --compile.
21949
21950 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21951
21952         * inssel.brg: The empty value in class->interface_offsets is -1, not
21953         0. Fixes #49287.
21954
21955 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21956
21957         * objects.cs: New test for 'is' operator on an array of interfaces.
21958
21959 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21960
21961         * tramp-ppc.c: update trampoline code to support jumps
21962         and class initialization.
21963
21964 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21965
21966         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21967
21968         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21969
21970         * inssel.brg (OP_UNBOX): Remove unused rule.
21971
21972         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21973         region instead of one for each method. Fixes #47813.
21974
21975 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21976
21977         * exceptions.cs (test_0_nested_finally): New regression test for
21978         nested exception handlers.
21979
21980         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21981
21982         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21983
21984         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21985         inlining.
21986
21987         * mini.c (mono_method_check_inlining): Make the inlining limit 
21988         configurable by an environment variable.
21989         
21990         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21991
21992         * mini.h: Bump AOT file version.
21993
21994         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21995         token, store the image along with the token, since the token might not 
21996         refer to the same image as the method containing the relocation, 
21997         because of inlining.
21998
21999 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22000
22001         * mini.c (mono_precompile_assemblies): New function to compile
22002         all methods in all loaded assemblies.
22003
22004         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22005
22006         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22007         iassign and fassign to int*, since they can contain large negative
22008         values if the register is spilled. Also added some comments. Fixes
22009         #45817.
22010
22011         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22012         under Win32. Fixes #42964.
22013
22014 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22015
22016         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22017
22018         * aot.c: Added support for AOT compiling methods which contain calls
22019         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22020         handled.
22021         
22022         * driver.c (compile_all_methods): Run the compilation in a thread
22023         managed by mono. Fixes #44023.
22024
22025         * mini.c (mono_codegen): Print full method name in verbose output.
22026
22027         * mini-x86.c (mono_arch_patch_code): Fix warning.
22028         
22029         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
22030         jumps, since the method we are jumping to might be domain-specific.
22031
22032         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
22033
22034 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22035
22036         * inssel.brg: string chars are unsigned.
22037
22038 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22039
22040         * TODO: New todo item.
22041
22042         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
22043         which calls mono_runtime_class_init and patches the call site to
22044         avoid further calls.
22045         (mono_arch_create_class_init_trampoline): New arch specific function 
22046         to create a class init trampoline.
22047         (create_trampoline_code): Generalized so it can create
22048         class init trampolines as well.
22049
22050         * mini.c (helper_sig_class_init_trampoline): New helper variable.
22051         (mono_create_class_init_trampoline): New function to create and cache
22052         class init trampolines.
22053         (mono_find_class_init_trampoline_by_addr): New function to lookup the
22054         vtable given the address of a class init trampoline. Used by the
22055         patching process.
22056         (mono_codegen): Generate a call to a trampoline instead of
22057         mono_runtime_class_init in LDSFLD[A].
22058         (mono_codegen): Add relocations for the new trampoline.
22059         
22060         * mini.h mini-x86.c aot.c: Added a new relocation type: 
22061         MONO_PATCH_INFO_CLASS_INIT.
22062
22063         * mini.h: Bump AOT version number.
22064
22065         * aot.c: Create a copy of the loaded code instead of using the original
22066         so methods which call each other will be close in memory, improving
22067         cache behaviour.
22068         
22069         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
22070         patch since it breaks the regression tests.
22071         
22072         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
22073         for the register saving instruction sequence since the 
22074         frame_state_for function in glibc 2.3.2 don't seem to detect it.
22075
22076 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
22077
22078         * TODO: Fix todo item && remove another.
22079
22080 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
22081
22082         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
22083         previous checkin.
22084
22085         * aot.c: Moved the check for MONO_LASTAOT into the initialization
22086         function of the module.
22087
22088         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
22089         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
22090         --no-aot command line option.
22091
22092 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22093
22094         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
22095         by Bernie Solomon (bernard@ugsolutions.com).
22096
22097         * inssel.brg: Refactor the interface offset table related code into
22098         its separate functions and add support for the AOT case.
22099
22100 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22101
22102         * aot.c (mono_aot_get_method_inner): Fix memory leak.
22103         
22104         * aot.c: Added mono_aot_verbose variable and made all debugging
22105         output depend on the value of this variable.
22106
22107         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
22108         method_label and info_label.
22109
22110         * mini.h mini-x86.c aot.c: Added a new relocation type 
22111         MONO_PATCH_INFO_IID for klass->interface_id.
22112
22113         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
22114         the MonoJitInfo structure.
22115
22116         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
22117         a non-root appdomain in shared mode.
22118
22119 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22120
22121         * aot.c: make aot loader less verbose. Remove free of unused variable.
22122
22123 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22124
22125         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
22126
22127         * .cvsignore: Added *.dll.
22128
22129         * mini.c (mono_print_tree_nl): New function callable while debugging.
22130
22131         * mini.c (mono_print_code): Export this.
22132
22133         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
22134         patched code.
22135
22136 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * mini.h (MonoCompile): Added 'jit_info' field.
22139
22140         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
22141         the cfg structure, since it is needed by the AOT compiler.
22142
22143         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22144
22145         * aot.c: A major rewrite. Changes include:
22146         - save exception tables for methods which have them.
22147         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
22148         to g_module_symbol.
22149         - reworked the file format so it is now much smaller and needs
22150         fewer relocation entries.
22151         
22152 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22153
22154         * aot.c (load_aot_module): Fix build bustage on platforms without
22155         Boehm GC.
22156
22157 2003-09-04  Martin Baulig  <martin@ximian.com>
22158
22159         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
22160
22161 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22162
22163         * TODO: Some new optimization ideas.
22164
22165         * aot.c: Move AOT module loading logic here from mono_assembly_open.
22166
22167         * aot.c: Save the optimization flags used to compile the code into
22168         the AOT module.
22169
22170         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
22171         support emitting domain specific code.
22172         
22173         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
22174         no longer domain neutral. It can be made domain neutral by compiling 
22175         with --optimize=shared.
22176
22177         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
22178         between appdomains.
22179
22180         * driver.c mini.h mini.c: New --no-aot debugging option which disables
22181         loading of AOT code.
22182
22183         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
22184         
22185         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
22186         if there is no domain neutrality information.
22187
22188 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22189
22190         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
22191         format version into the generated library.
22192
22193         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
22194         callee method into the caller since one of them could be shared.
22195
22196         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
22197         system exceptions from AOT code now works.
22198
22199         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
22200         method if it is domain neutral and the callee is not.
22201
22202         * graph.c (cfg_emit_one_loop_level): Fix warning.
22203
22204 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22205
22206         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
22207         last checkin.
22208
22209 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22210
22211         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
22212         is needed  by code which is executed before mono_runtime_init ().
22213         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
22214         
22215         * mini.c (mono_thread_abort): Fix warning.
22216         (mono_jit_compile_method): Call static constructor in the AOT case too.
22217
22218         * aot.c (mono_compile_assembly): Fix warning.
22219
22220 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22221
22222         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
22223
22224 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
22225
22226         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
22227
22228         * cpu-pentium.md: Fix the length of call opcodes so they include the
22229         ESP restoring instruction. Fixes #47968.
22230
22231 2003-08-28  Martin Baulig  <martin@ximian.com>
22232
22233         * mini-x86.c (mono_arch_call_opcode): Added support for
22234         MONO_TYPE_GENERICINST.
22235
22236         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
22237
22238 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22239
22240         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
22241         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
22242
22243         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
22244         metadata_section.
22245
22246 2003-08-26  Martin Baulig  <martin@ximian.com>
22247
22248         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
22249         when reporting an error, set this to the actual error location.
22250         (mono_method_to_ir): Report the correct error location if
22251         get_basic_blocks() returned an error.
22252
22253 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
22254
22255         * mini.c (mono_type_blittable): OBJECT is not blittable.
22256         (mono_method_blittable): Methods which have marshalling descriptors
22257         are not blittable either. Fixes #47842.
22258
22259 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
22260
22261         * driver.c mini.c: Use an environment variable instead of a global 
22262         variable. Also fix the build.
22263
22264         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
22265         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
22266         reporting this. 
22267
22268         * driver.c mini.c: Added --with-valgrind option to turn off some
22269         code which prevents mono from running under valgrind.
22270
22271         * mini.c (mono_emit_call_args): Fixed warning.
22272
22273         * mini.c (mono_emulate_opcode): Fixed warning.
22274
22275 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22276
22277         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
22278         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
22279         regalloc.c, regalloc.h: specify available registers in arch-specific
22280         code and support floats in the regallocator (patch by Laurent Morichetti 
22281         <l_m@pacbell.net>)
22282
22283 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22284
22285         * mini.c: mono_thread_current() can be called only after
22286         mono_runtime_init(): rearrange code to not call it early on.
22287
22288 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22289
22290         * mini.c: allocate jump tables in the code mempools.
22291
22292 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22293
22294         * mini.c, mini.h: make sure per-thread data allocated by the jit is
22295         freed.
22296
22297 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
22298
22299         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
22300         12 to 16.  This fixes bug #47453.
22301
22302
22303 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22304
22305         * mini-ppc.c: fixed indexed load and unsigned compares.
22306
22307 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
22308
22309         * mini.c: reenabled installation of handler for
22310           thread abort signal.
22311
22312 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22313
22314         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
22315         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
22316         until it's fixed and actually useful.
22317
22318 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22319
22320         * inssel-long32.brg: couple more opcodes implemented.
22321
22322 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22323         
22324         * mini-sparc.c: Even more opcodes implemeted.
22325
22326 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
22327
22328         * mini-sparc.c: More opcodes implemented.
22329
22330 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
22331
22332         * mini-sparc.c: More opcodes implemented.
22333
22334 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22335
22336         * inssel-sparc.brg: Add some needed rules.  Direct
22337         copy from PPC.
22338         * Makefile.am: Use inssel-sparc.brg
22339         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
22340         an assert happy for now.
22341
22342 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
22343
22344         * mini-sparc.c: Fixed compile errors.
22345         * exceptions-sparc.c: Same.  We now produce a mono binary 
22346         on sparc-linux.  Yea.
22347
22348 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
22349
22350         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
22351         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
22352         They compile, but do not work.
22353
22354 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22355
22356         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
22357         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
22358         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
22359         (ct@gentoo.org).
22360
22361 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22362
22363         * mini.c: more opcodes implemented and better support for generics.
22364
22365 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22366
22367         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
22368         * mini.c, mini.h: first cut at generics support: some new instructions 
22369         added and changed the behaviour of some of the existing ones.
22370
22371 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22372
22373         * mini.c: Removed definition of metadata_shared mutex here.
22374
22375 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22376
22377         * mini-x86.c: make vararg calls work for instance methods.
22378
22379 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22380
22381         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22382         returns the arguments in a separte list, now.
22383
22384 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22385
22386         * aot.c, mini.c: updates for array type representation changes.
22387
22388 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22389
22390         * mini.c: register function to perform jit shutdown.
22391
22392 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22393
22394         * mini.c: use a faster allocator if possible.
22395
22396 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22397
22398         * aot.c: some cleanups and portability changes.
22399
22400 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22401
22402         * mini.c: use faster allocation for CEE_BOX if possible.
22403
22404 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22405
22406         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22407         Moved inlined mempcy code to its own function so that is can be
22408         reused. Added an inline memset function as well (optimized initobj).
22409         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22410
22411 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22412
22413         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
22414
22415 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22416
22417         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
22418         arch code can setup the cpu for CLR execution, if needed.
22419         We use it on x86 to set the precision of FP operations.
22420
22421 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22422
22423         * mini.c: disable some optimizations if we can guess they'll cost too
22424         much for a given method.
22425
22426 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22427
22428         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
22429         
22430 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22431         * mini.h mini.c mini-x86.c: Added instruction level coverage 
22432         info collection support.
22433
22434 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22435
22436         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
22437         is now implemented in the profiling API. Get rid of a couple of
22438         unnecessary global variables.
22439
22440 2003-06-15  Nick Drochak <ndrochak@gol.com>
22441
22442         * basic-long.cs: tests for negative values for bigmul, and unsigned.
22443         * cpu-g4.md: add op_bigmul and op_bigmul_un
22444         * cpu_pentium.md: add op_bigmul_un
22445         * inssel-long32.brg: add rule for unsigned bigmul
22446         * mini-ops.h: define OP_BIGMUL_UN
22447         * mini-x86.c: THE BUG: handle (un)signed properly
22448         * mini.c: choose unsigned opcode if needed.
22449         This set of patches fixes bug #44291
22450
22451 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
22452
22453         * mini.c (optimize_branches): improved to handle all kinds of
22454         conditional branches.
22455
22456 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22457
22458         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
22459         don't raise exceptions.
22460
22461 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22462
22463         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
22464         to arch-specific files.
22465
22466 2003-06-09  Martin Baulig  <martin@ximian.com>
22467
22468         * Makefile.am (libs): Added $(LIBGC_LIBS).
22469
22470 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
22471
22472         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
22473         and OP_ATAN (fixes bug#44293).
22474
22475 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
22476
22477         * Makefile.am, mini-x86.c: rename cpu description array to
22478         pentium_desc, since some compilers define the 'pentium' preprocessor
22479         symbol.
22480
22481 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
22482
22483         * mini.c (mini_select_instructions): add explicit branch if the
22484         following block is not the false target of a conditional branch -
22485         we need this with any optimization that reorder or remove bblocks
22486
22487         * mini.c (optimize_branches): bug fixes
22488
22489 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
22490
22491         * mini.c (mono_method_to_ir): inline static readonly fields
22492
22493         * ssa.c (fold_tree): start cfold support for long (very simple
22494         cases only)
22495
22496         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
22497
22498 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22499
22500         * inssel.brg: fixed memcpy (bug #44219).
22501
22502 2003-06-05  Dick Porter  <dick@ximian.com>
22503
22504         * driver.c: Set the glib log levels to not abort if g_message
22505         recurses.
22506
22507         g_set_prgname() has to happen before mini_init() so that the
22508         process handle gets the info.
22509         
22510 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22511
22512         * driver.c: add intrins to the default optimizations to get wider
22513         exposure.
22514
22515 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22516
22517         * mini.h: some large basic blocks will overflow a 16-bit
22518         integers for symbolic registers.
22519
22520 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22521
22522         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
22523         (mono_arch_output_basic_block): fix bug 43499 
22524
22525 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22526
22527         * mini.c: kill duplicated definition of mono_debug_format.
22528
22529 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22530
22531         * mini-x86.c, arrays.cs: fixed register allocation bug.
22532
22533 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22534
22535         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
22536
22537         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
22538
22539 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22540
22541         * mini.c:
22542         (print_method_from_ip): also print source location information if
22543         available.
22544
22545 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
22546
22547         * mini.c (mono_find_block_region): bug fix in region code
22548         (mini_method_compile): enable removing unreachable code again, but
22549         only in methods without exception clauses.
22550
22551 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22552
22553         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
22554         Implemented arglist opcode and handling of TypedReference type.
22555         Fixed x86 call convention when a structure is returned.
22556         Minimal support for calling static vararg methods.
22557
22558 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
22559
22560         * mini.c (mini_method_compile):  always remove unreachable code,
22561         because the code in them may be inconsistent  (access to dead
22562         variables for example).
22563
22564 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22565
22566         * driver.c, debug-mini.c: warning fixes.
22567
22568 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22569
22570         * Makefile.am, jit.h, mini.h: install header for embedding mono.
22571
22572 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
22573
22574         * mini.c: thread-static fields are registered in mono_class_vtable(),
22575         so ensure the function is called before checking for them.
22576
22577 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
22578
22579         * mini.c (optimize_branches): fix for bug 43586
22580
22581         * jit-icalls.c (mono_llmult_ovf): added an additional check for
22582         overflow (fixes Bug #43639)
22583
22584 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22585
22586         * mini.c, objects.cs: allow the use of stobj for primitive types.
22587
22588 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22589
22590         * mini.c: be less strict about argument checking until we support
22591         running the verifier.
22592
22593 2003-05-27  Nick Drochak <ndrochak@gol.com>
22594
22595         * basic-long.cs: tests for (ulong)int * (ulong)int also
22596         * mini.c: use the same trick for (ulong)int * (ulong)int
22597
22598 2003-05-27  Nick Drochak <ndrochak@gol.com>
22599
22600         * basic-long.cs: add regression test for (long)int * (long)int
22601         * cpu-pentium.md: add op_bigmul specification
22602         * inssel-long32.brg: add OP_BIGMUL rule
22603         * mini-ops.h: add OP_BIGMUL
22604         * mini-x86.c: register allocator: handle case where src1 needs to be
22605         in EAX.
22606         * mini.c: substitute special BIGMUL opcode in the tree for 
22607         (long)int * (long)int
22608
22609 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22610
22611         * jit-icalls.c: call the type ctor on field access if needed.
22612
22613 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22614
22615         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
22616         to a method (including results of ldelema, bug#43207).
22617
22618 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
22619
22620         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
22621         colors to show exception handler blocks.
22622
22623         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
22624         (fix for pinvoke7.cs).
22625
22626 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22627
22628         * mini.h, mini.c: ensure correct initialization order for types that
22629         require it. Prepare for lazy compilation of jit icall wrappers.
22630         Provide a name for opcode emulation to reduce unneeded mallocing.
22631
22632 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22633
22634         * mini-x86.c: better register restoring code and profiling
22635         support for tail calls.
22636
22637 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22638
22639         * mini.h, driver.c: prepare for leaf methods optimization.
22640
22641 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22642
22643         * mini.c: get targets of branches before converting a method.
22644
22645 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
22646
22647         * mini.c (optimize_branches): added some experimental code (disbaled) 
22648
22649 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
22650
22651         * mini.c (optimize_branches): fix branch to branch optimization 
22652
22653         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
22654
22655         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
22656
22657         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
22658
22659         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
22660         if needed.
22661
22662 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
22663
22664         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
22665         enable use of interface variables again.
22666
22667         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
22668         I1 to registers because there is no simply way to sign extend 8bit
22669         quantities in caller saved registers on x86.
22670
22671         * inssel-float.brg: set costs of some rules to 2 so
22672         that monobure always select the arch. specific ones if supplied,
22673         regardless of the order we pass the files to monoburg.
22674
22675 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22676
22677         * mini.c, mini-x86.c: since the magic trampoline for jumps
22678         can't patch the code directly, we do it as soon as the
22679         method gets compiled.
22680
22681 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22682
22683         * mini-x86.c, mini.h: introduce a new patching method
22684         to support CEE_JMP and tail calls.
22685         * mini.c: obey tail.call. Don't precompile methods target
22686         of CEE_JMP.
22687         * tramp-x86.c: new trampoline code to handle methods
22688         reached through a jump.
22689
22690 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
22691
22692         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
22693         bit values to registers
22694
22695 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
22696
22697         * mini.c (mono_compile_get_interface_var): share interface
22698         variables if possible.
22699
22700 2003-05-16  Martin Baulig  <martin@ximian.com>
22701
22702         * debug-mini.c (mono_init_debugger): New function to initialize
22703         the debugger.  This is not in the debugger since it needs to
22704         access some of mini's internals.
22705
22706 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22707
22708         * mini.c (mono_method_to_ir): inlining fixes/cleanups
22709
22710 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
22711
22712         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
22713         for value type handling.
22714
22715 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22716
22717         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
22718         (mono_method_check_inlining): enable inlining of all kinds of wrappers
22719
22720 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
22721
22722         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
22723           the constructor through a proxy.
22724
22725 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22726
22727         * jit-icalls.c, inssel.brg: fixes to array element address
22728         calculations.
22729
22730 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
22731
22732         * mini-x86.c (is_regsize_var): allocate pointer to registers
22733
22734 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22735
22736         * driver.c: fixed typo, added intrins to the set of optimizations
22737         tested with regressions.
22738
22739 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22740
22741         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
22742         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
22743         test case.
22744
22745 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
22746
22747         * inssel.brg: remove some common pop instructions without side effects
22748
22749 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22750
22751         * inssel-x86.brg: fixed thinko in int to double conversions.
22752
22753 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22754
22755         * mini.c, jit-icalls.c: added runtime thread-static variable support.
22756
22757 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22758
22759         * inssel-long32.brg: two more missing instructions.
22760
22761 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
22762
22763         * mini.c (mono_emit_call_args): set the cil_code for all arguments
22764         if not already set.
22765
22766 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
22767
22768         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
22769         correctly.
22770
22771         * basic-float.cs: Added tests for negative zero.
22772
22773 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22774
22775         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
22776         a couple of missing operations for long casts, with test cases.
22777
22778 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22779
22780         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
22781
22782 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
22783
22784         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
22785         code size estimation.
22786
22787 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
22788
22789         * mini.c (mono_jit_create_remoting_trampoline): make it work with
22790         abstract methods (fix bug 42542)
22791
22792         * aot.c: add ability to handle array types
22793         
22794 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
22795
22796         * mini.c: Call the _specific versions of the object allocation
22797         functions if possible.
22798
22799 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22800
22801         * driver.c: call setlocale ().
22802
22803 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22804
22805         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
22806         windows build.
22807
22808 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
22809
22810         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
22811
22812         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
22813         wrappers (fix bug 42122)
22814
22815 2003-05-04  Martin Baulig  <martin@ximian.com>
22816
22817         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
22818
22819         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
22820         s/mini_set_defaults/mono_set_defaults/g.
22821
22822 2003-05-04  Martin Baulig  <martin@ximian.com>
22823
22824         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
22825
22826 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22827
22828         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
22829         (reported by Don Roberts).
22830
22831 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22832
22833         * mini.c: temporarily work around two bugs for this release.
22834
22835 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22836
22837         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
22838         that contains -export-dynamic and it makes using the ld script
22839         useless.
22840         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
22841
22842 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22843
22844         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
22845         specific cpu.
22846
22847 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22848
22849         * mini.c: make sure leave calls all the needed finally blocks,
22850         even when the target jumps out of multiple exception clauses.
22851
22852 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22853
22854         * ldscript, Makefile.am: add linker script to reduce the number of
22855         exported symbols (should also fix the issues with libwine defining
22856         some of the same symbols in io-layer).
22857
22858 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
22859
22860         * driver.c (mini_main): Avoid assertion when no file name is given on 
22861         the command line.
22862
22863 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
22864
22865         * driver.c: added --version/-V command line option.
22866         Added the inline optimization in the regression tests.
22867
22868 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22869
22870         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
22871         to the type in the method signature (fixes bug#42134).
22872
22873 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
22874
22875         * mini.c: when inlining, check this is not null only when needed (bug #42135).
22876
22877 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
22878
22879         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
22880
22881 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22882
22883         * driver.c: fixed bug #42100.
22884
22885 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22886
22887         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
22888
22889 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22890
22891         * mini.c: moved most of the code required to do inlining to its own
22892         function so it can be reused. Inline also ctors if appropriate.
22893
22894 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22895
22896         * Makefile.am: Link with -export-dynamic so shared libs loaded by
22897         the runtime can call mono API functions.
22898
22899 2003-04-27  Martin Baulig  <martin@ximian.com>
22900
22901         * debug-mini.c (mono_debug_init_method): Added
22902         `guint32 breakpoint_id' argument; if the method has a breakpoint,
22903         send a notification to the debugger.
22904
22905         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
22906         running in the Mono Debugger, just pass the breakpoint number to
22907         mono_debug_init_method().
22908
22909         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
22910
22911 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
22912
22913         * mini.c: allow some more unsafe compares.
22914
22915 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22916
22917         * mini-x86.c, Makefile.am: make distcheck works (partially from
22918         a patch by Richard Lee <r.h.lee@attbi.com>).
22919         * regset.c, regset.h: removed, they are unused.
22920
22921 2003-04-25  Dick Porter  <dick@ximian.com>
22922
22923         * driver.c: Usage reports the name as 'mono' not 'mini'
22924         * exceptions-x86.c: Build and run on freebsd
22925
22926 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22927
22928         * Makefile.am: install the program with the 'mono' name and
22929         the library as libmono instead of mini and libmini.
22930
22931 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22932
22933         * driver.c: provide the APIs for the embedding interface of the old jit.
22934
22935 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22936
22937         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22938
22939 2003-04-23  Martin Baulig  <martin@ximian.com>
22940
22941         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22942
22943         * driver.c: Added `--debug' command line argument to enable
22944         debugging support.
22945
22946 2003-04-23  Martin Baulig  <martin@ximian.com>
22947
22948         * debug.[ch]: Removed.  The code is now in
22949         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22950
22951         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22952         last six months.
22953
22954 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22955
22956         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22957
22958 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22959
22960         * mini.c:
22961         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22962         mono_domain_finalize.
22963         (mini_method_compile): use mono_method_profile* if the the option is
22964         enabled.
22965
22966 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22967
22968         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22969         methods with their wrapper.
22970
22971         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22972         methods with their wrapper.
22973
22974         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22975         their wrapper.
22976
22977         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22978         wrapper.
22979
22980         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22981         methods.
22982
22983 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22984
22985         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22986
22987 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22988
22989         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22990         of the mempool. This is slightly faster and uses less memory
22991
22992 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22993
22994         * mini.c: avoid O(n) allocation for variables.
22995
22996 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22997
22998         * mini.c: handle items on the stack after inlining methods.
22999
23000 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23001
23002         * mini.c: make the method->opcode optimization dependent
23003         on MONO_OPT_INSTRINS and do it lazily.
23004
23005 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23006
23007         * driver.c: print overall results at the end of regression run.
23008
23009 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23010
23011         * inssel.brg: don't overwrite symbolic registers.
23012
23013 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23014
23015         * inssel-x86.brg: fix conversion from long to float.
23016
23017 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23018
23019         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23020
23021 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
23024
23025         * driver.c: Added --print-vtable option as in the old JIT.
23026
23027 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23028
23029         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
23030
23031 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
23032
23033         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
23034
23035 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
23036
23037         * mini.c regalloc.c regalloc.h: Fix memory leak.
23038
23039 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
23040
23041         * aot.c (mono_aot_get_method): register all used strings
23042
23043 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23044
23045         * mini.c: always intern strings references with ldstr at compile time.
23046
23047 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23048
23049         * Makefile.am: add BUILT_SOURCES.
23050
23051 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23052
23053         * driver.c: give a better error message when the assembly to execute
23054         doesn't have an entry point.
23055
23056 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
23057
23058         * Makefile.am: added hack for automake
23059
23060         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
23061         correct sematics.
23062
23063         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
23064
23065 22003-04-07  Martin Baulig  <martin@ximian.com>
23066
23067         * Makefile.am: Added Makefile.am.
23068
23069         * debugger-main.c: Removed, this is now in the debugger where it
23070         belongs.
23071
23072         * mini.pc.in: Call this package `mini' for the moment.
23073
23074
23075
23076
23077
23078
23079
23080
23081
23082
23083
23084
23085
23086
23087