2009-11-24 Geoff Norton <gnorton@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
4         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
5         correctly.
6
7         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
8         regs. Pass the real size of the regs array to mono_unwind_frame ().
9
10         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
11         ones instead.
12
13 2009-11-24  Geoff Norton  <gnorton@novell.com>
14
15         * mini-darwin.c: Work around apple bug rdar://7209349  See
16         http://openradar.appspot.com/7209349 for details.  Synopsis,
17         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
18         never been initialized before.
19
20 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
21
22         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
23
24         * mini-arm.c (mono_arm_thumb_supported): New helper function.
25
26 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
27
28         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
29         OP_SHL_IMM is not 32 bit.
30
31 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
32
33         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
34
35 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
36
37         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
38         encountered.
39
40         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
41         > 0 since some threads can resume if their resume_count is > 0.
42         (invoke_method): Avoid reading freed memory.
43
44         * debugger-agent.c (process_suspend): Extract the suspend code from
45         process_single_step_inner () to a separate function. Rework the code to prevent
46         races between this function and thread interrupts.
47
48         * debugger-agent.c (suspend_current): Check the resume_count field instead
49         of resume_one so suspends+resumes during single threaded invokes work
50         correctly.
51
52 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
53
54         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
55         to make the generated code smaller.
56
57         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
58         sequence generated by recent LLVM versions.
59
60         * mini-llvm.c: Add support for a few simple cases which weren't supported
61         before.
62
63         * mini-trampolines.c (mono_magic_trampoline): Don't call
64         mono_arch_get_vcall_slot () when llvm is enabled.
65
66         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
67
68         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
69         into a new function called common_call_trampoline () which is used by the
70         llvm vcall trampoline as well.
71
72         * debugger-agent.c: Implement single threaded invokes.
73
74         * debugger-agent.c: Revert change which broke the agent on linux.
75
76         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
77         #557606.
78
79         * generics.cs: Add a test.
80
81 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
82
83         * debugger-agent.c: Fix the cygwin build.
84
85 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
86
87         * cprop.c: Remove this unused file.
88
89 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
90
91         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
92         #557262.
93
94         * basic.cs: Add a test.
95
96 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
97
98         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
99         in one more place.
100
101 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
102
103         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
104         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
105         it. Use this flag to control llvm related code paths instead of #ifdef
106         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
107         AOT code.
108
109         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
110
111         * mini.h: Bump AOT file format version.
112
113         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
114         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
115
116         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
117         was used as an assembly filter.
118
119 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
120
121         * unwind.c: Fix support for ppc.
122
123         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
124         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
125
126 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
127
128         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
129         port.
130         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
131         added by the ps3 changes.
132
133 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
134
135         * mini-gc.c: Resurrect this, so at least it compiles.
136
137         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
138
139 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
140
141         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
142         create_event_list () so assembly filters can be used.
143
144         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
145         from the LMF.
146
147 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
148
149         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
150         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
151         is disabled.
152
153         * aot-compiler.c (add_generic_instances): Emit instances of common generic
154         classes for char/bool too.
155
156         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
157
158         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
159         used.
160
161         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
162         Fix warnings.
163
164 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
165
166         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
167         
168         Code contributed under MIT/X11 license.
169
170 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
171
172         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
173         threads in native code work.
174
175         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
176         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
177         version.
178
179 2009-11-13 Jonathan Chambers <joncham@gmail.com>
180
181         * debugger-agent.c: Implementation for Windows platform.
182
183         * mini-x86.c: Add support for Windows. Use mono-* synchronization
184         primitives. Use SEH to implement breakpoints and single stepping.
185
186         * mini-x86.h: Enable soft debugger on Windows.
187
188         Code contributed under MIT/X11 license.
189
190 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
191
192         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
193         under XEN. Fixes #522894.
194
195         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
196
197         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
198         interface calls in LLVM AOT code.
199
200         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
201         is found.
202
203         * mini-llvm.c: Add support for OP_VPHI.
204
205         * objects.cs: Add a test.
206
207 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
208
209         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
210         this is called on the debugger thread.
211
212 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
213
214         * mini-llvm.c: Add soft-float support.
215
216         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
217         FCALL which returns an R4.
218
219         * driver.c (mono_main): Add a missing '\n'.
220
221         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
222         platforms which doesn't support the LLVM IMT trampoline.
223
224 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
225
226         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
227
228         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
229
230         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
231         virtual calls.
232
233         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
234
235 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
236
237         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
238         Instead of emitting a method_order table, sort the contents of the code_offsets
239         table and do a binary search in the sorted table. The previous approach doesn't
240         work with LLVM which emits methods in a arbitrary order.
241
242         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
243         in the .eh_frame section in ELF files.
244
245         * mini.h: Bump corlib file format version.
246
247         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
248
249         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
250         LDMIA->LDM macro name change.
251
252 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
253
254         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
255         x86.
256
257         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
258         SVN.
259
260         * aot-compiler.c: Ditto.
261
262         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
263         &align to mini_type_stack_size_full ().
264
265         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
266
267         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
268
269 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
270
271         * mini-arm.c: Compute the stack space used by arguments using
272         mini_type_stack_size_full ().
273
274 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
275
276         * optflags-def.h: Remove dead TREEPROP optimization.
277
278 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
279
280         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
281
282         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
283
284 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
285
286         * driver.c (mono_jit_parse_options): New public API function to parse options
287         as done by the runtime executable.
288
289         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
290         when handling named arguments.
291
292 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
293
294         * mini-arm.c: Implement support for returning vtypes in registers, fix support
295         for passing small vtypes in registers, make the CallInfo structures more
296         similar to the code on the other platforms.
297
298         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
299         the code in the prolog requires it.
300
301 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
302
303         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
304         (koush@koushikdutta.com).
305
306         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
307         where the thunk memory should be allocated from. Fixes appdomain unloading
308         on arm.
309
310 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
311
312         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
313         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
314
315 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
316
317         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
318         AOT, as it is not implemented yet.
319
320         * mini-x86.c (mono_arch_output_basic_block): Ditto.
321
322 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
323
324         * debugger-agent.c: Fix windows build.
325
326 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
327
328         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
329         after the client connects/disconnects.
330
331         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
332         when an exception of a given type is thrown.
333
334         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
335         only on an uncaught exception.
336
337         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
338
339         * debugger-agent.c: Add a 'launch' option.
340
341 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
342
343         * debugger-agent.c: Add a 'timeout' option.
344
345 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
346
347         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
348         the JDWP agent.
349
350 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
351
352         * debugger-agent.c (set_breakpoint): Emit a log message.
353
354 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
355
356         * mini-arm.c: Fix the arm build.
357
358 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
359
360         * aot-compiler.c: don't leak the value returned from
361         mono_type_full_name().
362
363 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
364
365         * debugger-agent.c: defer including mono-mutex.h until we know the
366         agent is supported.
367
368 2009-11-04 Jonathan Chambers <joncham@gmail.com>
369
370         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
371         of pthreads directly.
372
373         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
374         exception handlers. Pass info argument.
375
376         * mini.h: Adjust signatures of soft debugger functions to pass void*
377         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
378
379         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
380         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
381         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
382         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
383
384         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
385
386         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
387         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
388         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
389         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
390
391         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
392
393         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
394
395         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
396
397         * mono-semaphore.h: Skeleton implementation for Windows.
398
399         Code contributed under MIT/X11 license.
400
401 2009-11-04 Jonathan Chambers <joncham@gmail.com>
402
403         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
404
405         Code contributed under MIT/X11 license.
406
407 2009-11-04 Jonathan Chambers <joncham@gmail.com>
408
409         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
410
411         Code contributed under MIT/X11 license.
412
413 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
414
415         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
416         debug info to 100 because 10 still slows down gdb too much.
417
418         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
419         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
420         them in the wrappers.
421
422 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
423
424         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
425
426         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
427
428         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
429         function mono_aot_get_array_helper_from_wrapper ().
430
431         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
432         array helper methods.
433
434 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
435
436         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
437         the value was loaded from memory.
438
439         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
440         the value was loader from there.
441
442         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
443         without constant swizzle.
444
445 2009-11-02 Jonathan Chambers <joncham@gmail.com>
446
447         * mini-amd64.c: Put soft debugger functions behind a
448         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
449
450         * mini-amd64.h: disable the soft debugger in windows.
451
452         Code contributed under MIT/X11 license.
453
454 2009-11-02 Jonathan Chambers <joncham@gmail.com>
455
456         * mini-x86.c: Put soft debugger functions behind a
457         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
458
459         Code contributed under MIT/X11 license.
460
461 2009-11-02 Jonathan Chambers <joncham@gmail.com>
462
463         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
464         to mono_arch_find_jit_info_ext.
465
466         Code contributed under MIT/X11 license.
467
468 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
469
470         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
471
472         * debugger-agent.c: Add support for filtering events by assemblies.
473
474         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
475         the agent is not enabled.
476
477 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
478
479         * exceptions-x86.c: hopefully last change to fix the windows build.
480         This one courtesy of Jonathan Chambers.
481
482 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
483
484         * debugger-agent.c: remove unused function.
485
486 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
487
488         * debugger-agent.c: add #ifdefs for a few header files.
489         * mini-x86.h: disable the soft debugger in windows.
490         Step 1 of 2 to make this compile on windows with gcc.
491
492 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
493
494         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
495         as it breaks the build.
496
497 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
498
499         Merge the soft debugger branch.
500
501         * debugger-agent.h debugger-agent.c: New files containing the soft
502         mode debugger module.
503
504         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
505         at the appropriate locations.
506
507         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
508         opcode.
509
510         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
511         enable/disable single stepping.
512
513         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
514         which returns all information in a StackFrameInfo structure, and can handle the
515         LMF frames added by the debugger.
516
517         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
518         about an LMF frame.
519
520         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
521         walker function which works on a specific thread and passes a StackFrameInfo
522         structure to its callback.
523
524         * mini.c (mini_init): Initialize the debugger agent.
525
526         * aot-compiler.c aot-runtime.c: Add soft-debug support.
527
528         * mini-ops.h: Add OP_SEQ_POINT opcode.
529
530         * driver.c (mono_main): Add new '--debugger-agent' option for passing
531         arguments to the debugger agent.
532
533 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
534
535         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
536         speed things up.
537
538         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
539
540         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
541
542         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
543
544         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
545         if needed.
546         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
547         sets the IMT argument and makes a virtual call.
548
549         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
550
551 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
552
553         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
554         the windows build.
555
556 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
557
558         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
559         runtime. Fixes #551228.
560
561 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
562
563         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
564
565         * basic.cs: Add a test.
566
567         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
568         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
569         CONSTRAINED. Fixes #550964.
570
571         * generics.cs: Add a test.
572
573 2009-10-28  Mark Probst  <mark.probst@gmail.com>
574
575         * mini-posix.c (add_signal_handler): Use
576         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
577
578 2009-10-28 Jerry Maine <crashfourit@gmail.com>
579
580         Contributed under the terms of the MIT/X11 license by
581         Jerry Maine <crashfourit@gail.com>.
582
583         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
584         sse4a for simd intrinsics.
585
586         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
587         sse4a for simd intrinsics.
588
589 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
590
591         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
592         instead of inst_p1 which is not the same on ILP32 platforms.
593
594 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
595
596         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
597         not the mscorlib one before calling mono_get_lmf_addr.
598
599         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
600         of the ip to the LMF.
601
602         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
603         immediate in the op->op_imm optimization.
604
605         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
606         understand. VTypes now work, but are not abi compliant, as they are
607         split into 4 byte parts instead of 8.
608         (emit_memcpy): Fix the unrolled case to work on the PS3.
609
610         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
611
612         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
613         the default when static linking.
614
615         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
616
617         * aot-compiler.c: Add an autoreg option to automatically register
618         statically linked aot modules using ELF .ctors.
619
620         * genmdesc.pl: Add __ppc64__ to allowed defines.
621
622 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
623
624         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
625         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
626
627 2009-10-24  Mark Probst  <mark.probst@gmail.com>
628
629         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
630
631 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
632
633         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
634         which will contain the domain where the method was found.
635
636         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
637         mini_jit_info_table_find ().
638
639         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
640
641         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
642
643 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
644
645         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
646         set, its not supported yet.
647
648 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
649
650         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
651         iface wrapper is not found.
652         (mono_aot_get_method): Ditto for GetGenericValueImpl.
653
654 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
655
656         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
657         which have a different name.
658
659         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
660         wrappers and Array.GetGenericValueImpl ().
661
662         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
663         because of the change above.
664
665         * generics.cs: Add a test for full aot + generic array ifaces.
666
667 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
668
669         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
670         that hides the previous one.
671
672 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
673
674         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
675         marshalled. Fixes #541623.
676
677 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
678
679         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
680
681 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
682
683         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
684
685 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
686
687         * mini-posix.c (sigprof_signal_handler):
688         Implemented support for building stat call chans in different ways.
689
690 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
691
692         * mini-exceptions.c (mono_find_jit_info):
693         Also check that a jit info has been found (fixes a profiler crash).
694
695 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
696
697         * mini.c (mono_codegen):
698         Call mono_profiler_code_buffer_new with correct code address.
699
700 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
701
702         * driver.c (mono_main): Change the date in the copyright.
703
704 2009-10-14  Mark Probst  <mark.probst@gmail.com>
705
706         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
707         allocator in shared generic code for open classes, because we
708         can't get those classes' vtables.  We need to make managed
709         allocators not depend on the vtable at compile-time to solve this.
710
711 2009-10-13  Martin Baulig  <martin@ximian.com>
712
713         * debug-mini.c (mono_debugger_trampoline_compiled): Add
714         `const guint8 *trampoline' argument; send both the old and the new
715         notification.
716
717 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
718
719         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
720         mono_runtime_capture_context () without calling mono_runtime_invoke ().
721         (can_marshal_struct): Skip structures with auto layout.
722
723         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
724
725 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
726
727         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
728         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
729         a variable to hold the stack slot used by the int<->float conversion opcodes.
730
731         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
732
733 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
734
735         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
736         when using full-aot.
737
738 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
739
740         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
741         each instance of Comparer<T>.
742
743         * generics.cs: Add a new test.
744
745 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
746
747         * driver.c (parse_debug_options): Add a 'gdb' option.
748
749         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
750
751         * image-writer.c: Add support for emitting the image into a memory buffer.
752
753         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
754
755         * aot-compiler.c: Add support for registering debug info with GDB using the
756         new JIT debugging interface in GDB 7.0. It can be turned on by setting
757         MONO_XDEBUG to 'gdb'.
758
759 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
760
761         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
762         gdb mode.
763
764 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
765
766         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
767         can be used to set breakpoints in gdb.
768
769         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
770         segment to an absolute address.
771
772 2009-10-13  Mark Probst  <mark.probst@gmail.com>
773
774         * method-to-ir.c: Use the managed array allocator method if
775         available.
776
777 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
778
779         * aot-compiler.c : Fix the MSVC builds
780
781         Code is contributed under MIT/X11 license.
782
783 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
784
785         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
786         avoid registering 1 symbol file per method with gdb.
787
788 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
789
790         * mini-sparc.c: Fix the handling of enums with base type long.
791
792         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
793
794         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
795         instead of using type->data.klass as the later doesn't work with generics.
796
797 2009-09-25  Mark Probst  <mark.probst@gmail.com>
798
799         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
800         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
801         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
802         works differently now and we don't handle it in the JIT anymore.
803
804         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
805         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
806         the Thread class split.
807
808 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
809
810         * driver.c: Don't run tests with the obsolete treeprop optimization.
811
812         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
813         variable volatile. Fixes #541577.
814
815         * basic-calls.cs: Add a new test.
816
817         * basic-long.cs: Remove tests which are now in basic-calls.cs.
818
819 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
820
821         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
822         work/required with recent iphone sdk versions.
823
824         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
825         structures.
826
827         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
828         in the VCALL decomposition code.
829
830 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
831
832         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
833
834         * basic.cs: Add a test.
835
836         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
837         generic invokes.
838
839         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
840         searches all the domains of the current thread.
841
842         * exceptions-<ARCH>.c: Use it. Fixes #539394.
843
844 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
845
846         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
847         so catching exceptions thrown in the same method works. Fixes exception17.exe.
848
849         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
850         for non-jit trampolines.
851
852         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
853
854         * aot-compiler.c (add_wrappers): Ditto.
855
856         * mini-arm.c: Implement support for passing vtypes and floats, and increase
857         the size of the param area used by dyn_call to 6 which covers the majority of
858         methods.
859
860         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
861
862         * mini-arm.c: Implement support for passing/receiving
863         longs and receiving floats in the dyn_call code.
864
865         * mini-amd64.c: Implement support for receiving vtypes in registers in
866         the dyn_call code.
867
868         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
869         the dyn_call code.
870
871 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
872
873         * mini-arm.c (get_call_info): Return more precise information in
874         ArgInfo->regtype.
875         (dyn_call_supported): Use the information in CallInfo.
876
877         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
878
879         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
880         code.
881
882         * mini-arm.c: Update after the dyn_call api changes.
883
884         * mini.c (mini_create_jit_domain_info): Register a destructor function
885         for the runtime_invoke_hash.
886
887         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
888         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
889         this function.
890         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
891         (dyn_call_supported): Simplify this by using get_call_info ().
892         (mono_arch_dyn_call_free): New destructor function.
893
894         * generics.cs: Remove a printf.
895
896         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
897
898         * mini-arm.c: Add support for enum return values and passing a few arguments
899         on the stack.
900         
901         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
902         dyn invoke.
903
904         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
905
906         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
907         the dynamic invoke wrappers.
908
909         * mini-arm.c: Implement OP_DYN_CALL for arm.
910
911         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
912         supported by the dynamic runtime invoke wrapper.
913
914         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
915         runtime invoke wrapper.
916
917         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
918         if possible when running with full-aot.
919
920         * mini-ops.h: Add OP_DYN_CALL opcode.
921
922         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
923         with dynamic arguments lists similar to libffi.
924
925 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
926
927         * method-to-ir.c: Fix the previous change on 64 bit platforms.
928         
929         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
930         to NEWARR.
931
932         * iltests.il.in: Add a new test.
933         
934 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
935
936         * aot-compiler.c (add_generic_instances): Add more instances of
937         GenericEqualityComparer.
938
939 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
940
941         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
942
943 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
944
945         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
946         comments on some functions that now can fail.
947
948 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
949
950         * Makefile.am: Add Info.plist to EXTRA_DIST
951
952 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
953
954         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
955         static synchronized wrappers. Fixes #539500.
956
957 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
958
959         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
960         properly.
961
962 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
963
964         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
965         lmf before calling filter clauses as well. Fixes #539550.
966
967         * exceptions.cs: Add a test.
968         
969 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
970
971         * aot-compiler.c (add_generic_class): Add instances of
972         Array.GetGenericValueImpl as well.
973
974         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
975         can be tested too.
976
977         * generics.cs: Add a fullaot linq test.
978
979 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
980
981         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
982         reg r1 on arm.
983
984 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
985
986         * mini-trampolines.c (mono_delegate_trampoline) : Call
987           mono_cominterop_get_invoke if the delegate target object
988           is a COM object.
989
990         Code is contributed under MIT/X11 license.
991
992 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
993
994         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
995         internal call is defined outside platform code. Reduce code 
996         duplication with existing [Method|Field]AccessException
997
998 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
999
1000         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
1001         if the return value is a small struct passed on regs.
1002
1003 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
1004
1005         * cpu-arm.md mini-arm.c: Remove unused opcodes.
1006
1007         * mini-codegen.c: Enable the cpu description validation for arm.
1008
1009 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
1010
1011         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
1012         test which depends on structs to objects.cs.
1013         
1014         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
1015         require object model related stuff working.
1016
1017         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
1018
1019         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
1020
1021         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
1022         against the instruction metadata in mini-ops.h. amd64 only for now.
1023
1024         * mini-ops.h: Fix some instruction descriptions.
1025
1026         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
1027         unused instructions.
1028
1029 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * exceptions.cs: Add a new test.
1032
1033 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
1034
1035         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
1036
1037 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1038
1039         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
1040         skip empty phi opcodes.
1041         
1042         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
1043         correctly by zero extending after loads. Skip methods containing calls
1044         to the monitor enter/exit trampolines.
1045
1046         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
1047         when calling mono_thread_force_interruption_checkpoint ().
1048
1049         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
1050
1051         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
1052         64 bit thunks.
1053         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
1054
1055         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
1056         bootstrap could run.
1057
1058 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
1061
1062 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1063
1064         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
1065         of the method to
1066         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1067         LLVM might be very short.
1068
1069         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
1070         in OP_THROW/RETHROW.
1071
1072         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
1073         alignment on osx.
1074
1075 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1076
1077         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
1078         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1079         LLVM might be very short.
1080
1081 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
1082
1083         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
1084         the alignment for the value of sp.
1085
1086 2009-09-01  Geoff Norton  <gnorton@novell.com>
1087
1088         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
1089         managed wrappers in full aot.
1090
1091 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
1092
1093         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
1094
1095 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
1098
1099 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
1102
1103         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
1104         saved info.
1105
1106         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1107
1108         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
1109         depend on the info MonoMethodHeader which could be missing in IL stripped
1110         assemblies.
1111
1112 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1113
1114         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
1115         they are only 4 byte aligned.
1116
1117 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
1118
1119         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
1120         was done previously, since using SP causes too many problems.
1121
1122         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
1123         frames without a frame pointer works.
1124
1125         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
1126         global register in methods with calls, since the calls can go through
1127         a static rgctx trampoline which doesn't save it.
1128
1129 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
1130
1131         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
1132
1133 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1134
1135         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
1136
1137 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1138
1139         * method-to-ir.c: Fix warnings for uninitialized variables.
1140
1141 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1142
1143         * mini-exceptions.c:
1144         * aot-compiler.c: Fix printf warnings.
1145
1146 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1147
1148         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
1149         Add GetGenericValueImpl<string>.
1150         
1151         * aot-compiler.c (add_generic_instances): Add instances of
1152         GenericEqualityComparer<T> for primitive types. Only emit the array
1153         wrappers into the mscorlib image.
1154
1155 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
1158         the methods_loaded array using amodule->info->nmethods.
1159
1160         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
1161         (MONO_AOT_FILE_VERSION): Bump this.
1162
1163         * aot-compiler.c: Emit more generic instances allowing some parts of linq
1164         to work.
1165
1166         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
1167         MonoJitInfo doesn't belong to its methods aot image.
1168
1169 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
1170
1171         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
1172
1173         * mini-arm.c: Fix warnings.
1174         
1175         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
1176
1177         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
1178         supports it.
1179
1180 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
1183         avoid clobbering IP.
1184
1185         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
1186         hold the trampoline argument, so its initial value is available during
1187         debugging.
1188
1189 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1190
1191         * exceptions-arm.c:
1192         * exceptions-hppa.c:
1193         * mini.c:
1194         * exceptions-s390x.c:
1195         * exceptions-mips.c:
1196         * exceptions-ppc.c:
1197         * exceptions-sparc.c:
1198         * exceptions-alpha.c:
1199         * aot-runtime.c:
1200         * mini-trampolines.c:
1201         * exceptions-x86.c:
1202         * exceptions-s390.c: add and use #define's instead of sizeof()
1203         for MonoJitInfo and MonoJitInfoTable.
1204
1205 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1206
1207         * tramp-arm.c:
1208         * tramp-amd64.c:
1209         * tramp-ppc.c:
1210         * tramp-x86.c: use a #define instead of sizeof() for a few
1211         structures that use a zero-length array.
1212
1213 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1214
1215         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1216         case when the method is dynamic. Fixes #529238.
1217
1218 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1219
1220         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1221         of asserting when a method is JIT compiled in full-aot mode.
1222
1223 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1224         
1225         Contributed under the terms of the MIT/X11 license by
1226         Jerry Maine <crashfourit@gail.com>.
1227         
1228         * fixed wrong dates in changelog.
1229
1230 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1231         
1232         Contributed under the terms of the MIT/X11 license by
1233         Jerry Maine <crashfourit@gail.com>.
1234
1235         * basic-simd.cs: added test for packed double square root.
1236         * cpu-amd64.md: added opcode info for packed double square root.
1237         * cpu-x86.md: added opcode info for packed double square root.
1238         * mini-ops.h: added IR opcode for packed double square root.
1239         * mini-x86.c: added IR to native translation code for packed double square root.
1240         * mini-amd64.c: removed todo for packed double square root.
1241         * simd-intrinsics.c: added method to IR opcode converstion for
1242         packed double square root.
1243
1244 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1245
1246         Contributed under the terms of the MIT/X11 license by
1247         Jerry Maine <crashfourit@gail.com>.
1248
1249         * mini-amd64.c: Added a change to help tell the difference as 
1250         to what perpose the xmm register is being used--mainly to help
1251         with debuging.
1252         * mini-amd64.h: Changed callee regs to use 15 out of 16 
1253         (one used for special cases) xmm registers for both fp
1254         and simd ops. Added define to turn on new feature in the regalloc
1255         that allows fp and simd ops to share the xmm regs happily.
1256         * codegen.c: Added code to detect for which perpose an xmm reg is
1257         being used (fp or simd) and to translate back and forth to the
1258         correct logical reg bank (fp or simd) for 'spill load's.
1259
1260 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1261
1262         Contributed under the terms of the MIT/X11 license by
1263         Jerry Maine <crashfourit@gail.com>.
1264
1265         * basic-simd.cs: Added tests for stressing the regalloc when running with
1266         16 simd regs and when simd and fp ops share the same reg bank.
1267
1268 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1269
1270         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
1271         in shared generic code, we might have to look up the class in the
1272         RGCTX.  If we use the class directly, compute its GC descriptor.
1273
1274 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1275
1276         * mini.c (mono_jit_runtime_invoke): Fix a warning.
1277
1278 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1279
1280         * mini.c (mono_jit_runtime_invoke): Initialize the class and
1281         check for errors. Fixed the case when the class with the Main
1282         method is broken.
1283
1284 2009-07-31 Jerry Maine <crashfourit@gmail.com>
1285
1286         Contributed under the terms of the MIT/X11 license by
1287         Jerry Maine <crashfourit@gail.com>.
1288
1289         * cpu-amd64.md: Fixed simple bug in machine discrition file.
1290
1291 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
1292
1293         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
1294
1295 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1296
1297         * method-to-ir.c: Fix naming of stelem and ldelem.
1298
1299 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1300
1301         * driver.c (main_thread_handler): Check that the assembly loaded
1302         matches the filename when doing AOT.
1303
1304 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1305
1306         * mini.c: get_ip_from_sigctx installer has been removed, so don't
1307         call it anymore.
1308
1309         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
1310         utils/mono-sigcontext.h).
1311
1312         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
1313         #ifdef.
1314
1315 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1316
1317         * mini.c (mono_codegen):
1318         Call profiler hook to keep track of method code buffers.
1319
1320 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1321
1322         * method-to-ir.c: Invoke write barriers for the
1323         Interlocked.(Compare)Exchange JIT intrinsics.
1324
1325 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
1326
1327         * Makefile.am (version.h): Fix issues when built out of tree.
1328         Remove some redundant 'grep's piped through 'sed's.
1329
1330 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1331
1332         This patch is contributed under the terms of the MIT/X11 license
1333
1334         * mini-ppc.c (mono_arch_output_basic_block):
1335         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
1336         for bits 32-47 with signed load/store diplacements for bits
1337         48-63.  Use prefered base/offset order for indexed form.
1338         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
1339         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
1340         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
1341         OP_LOADI2_MEMBASE): Same.
1342         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
1343         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
1344         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
1345         indexed form.
1346         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
1347         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
1348         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
1349         OP_LOADI1_MEMINDEX): Same
1350         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
1351         OP_STORER8_MEMINDEX): Same
1352         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
1353         computations.
1354         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
1355         for bits 32-47 with signed load/store diplacements for bits
1356         48-63.  Use prefered base/offset order for indexed form.
1357
1358 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1359
1360 This patch is contributed under the terms of the MIT/X11 license
1361
1362         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
1363         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
1364         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
1365         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
1366         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
1367         cfg->stack_usage to avoid size warnings.
1368         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
1369         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
1370         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
1371         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
1372         to convert.
1373         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
1374         after code varible is initialized.
1375         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
1376         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
1377         (mono_arch_emit_epilog): 
1378         Move Use ppc_load32 for cfg->stack_usage to avoid size
1379         warnings.
1380
1381 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1382
1383         * method-to-ir.c: The write barrier doesn't do the store anymore,
1384         so we have always to emit it.  Also, emit the wbarrier after the
1385         store.
1386
1387 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
1390         for argument count 3 too.
1391
1392 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
1395         the caller handle the exceptions.
1396         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
1397         method. Fixes #524498.
1398
1399 2009-07-22  Geoff Norton  <gnorton@novell.com>
1400
1401         * mini-exceptions.c: Fix build on ia64.
1402
1403 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1404
1405         * mini-exceptions.c (ves_icall_get_frame_info): Use write
1406         barriers.
1407
1408 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
1409
1410         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
1411         code.
1412
1413 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1414
1415         * basic-simd.cs (Main): Pass args to the test driver.
1416
1417 2009-07-20  Geoff Norton  <gnorton@novell.com>
1418
1419         * mini-x86.h: Fix the x86 version guards to use Apple's
1420         properly defined macros.
1421
1422 2009-07-20  Geoff Norton  <gnorton@novell.com>
1423
1424         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
1425         aligned access.
1426
1427 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1428
1429         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
1430         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
1431         the information which is needed for invokes, so only one locking+hash table
1432         lookup is needed.
1433
1434         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
1435         
1436         * aot-compiler.c (add_generic_instances): Emit instances of 
1437         GenericComparer<T> for primitive types.
1438
1439 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
1440
1441         * mini-posix.c: Fix linux build.
1442
1443 2009-07-19  Geoff Norton  <gnorton@novell.com>
1444
1445         * mini.h: Add prototypes for mono_runtime_syscall_fork and
1446         mono_gdb_render_native_backtraces
1447         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
1448         so we implement the sane semantics to the runtime here
1449         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
1450         so we need to call it differently (mono_gdb_render_native_backtraces)
1451         * mini-posix.c: Move the old semantics from mini.c to the prototypes
1452         here for default implementations.
1453         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
1454         support Apple's weird syscall (SYS_fork) implementation and not busy
1455         loop in abort() on native crashes on OSX anymore.
1456
1457 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
1458
1459         * aot-runtime.c (load_method): Change the handling of the
1460         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
1461         are used.
1462
1463         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
1464
1465 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
1466
1467         * mini.c (mono_patch_info_equal): Revert the last change for now as it
1468         seems to break the aot tests.
1469         
1470         * mini.c (mono_patch_info_equal): Fix the handling of 
1471         MONO_PATCH_INFO_RGCTX_FETCH.
1472
1473 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1474
1475         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
1476
1477         * mini.c (mono_patch_info_hash): Fix the handling of 
1478         MONO_PATCH_INFO_INTERNAL_METHOD.
1479         (mono_patch_info_equal): Ditto.
1480
1481 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
1484         in a few places.
1485         
1486         * mini-llvm.c: Add some infrastructure for AOT support.
1487
1488 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1489
1490         * mini-llvm-cpp.c: Update to the latest llvm api.
1491         
1492         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
1493         option to false to prevent llvm from installing signal handlers which
1494         trip up the gc.
1495         
1496 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1497
1498         * cpu-x86.md:
1499         * cpu-amd64.md: Revert previous change as those instructions
1500         take 2 separate arguments. Remember to read the arch docs more
1501         carefully next time.
1502
1503 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
1506
1507 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
1508
1509         * mini-ppc.c: exploit multiple load/store units if available (rest of
1510         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
1511         http://bugzilla.novell.com/show_bug.cgi?id=487846).
1512
1513 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
1514
1515         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
1516         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
1517
1518 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1519
1520         * cpu-x86.md: Fix missing clobbering from trancendental simd
1521         ops.
1522
1523         * cpu-amd64.md: Same.
1524
1525 2009-07-14 Jerry Maine <crashfourit@gmail.com>
1526
1527         Contributed under the terms of the MIT/X11 license by
1528         Jerry Maine <crashfourit@gail.com>.
1529
1530         * basic-simd.cs: Added tests for single and doulble indexers.
1531
1532         * cpu-amd64.md: Added simd opcode information.
1533
1534         * mini-amd64.c: Added IR to native simd generation code.
1535         Added simd register names and function that returns them.
1536
1537         * mini-amd64.h: Added marcos to turn on simd code compilation in
1538         amd64. Added max simd register count marco. Added caller/callee
1539         register mask marcos. Added marcos to use simd register bank.
1540
1541         * mini.h: Added helper marco for shufling dwords and simple
1542         floats.
1543
1544 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
1545
1546         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
1547
1548         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
1549
1550         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
1551         the length of the native code as well.
1552
1553         * basic-simd.cs: Add a test for #521662.
1554
1555 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
1556
1557         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
1558
1559 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1560
1561         * mini.c: Register function for getting the IP from a signal
1562         context with metadata.
1563
1564 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
1565
1566         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
1567         call a generic class init trampoline if needed. Fixes #519336.
1568
1569         * generics.cs: Add a test.
1570         
1571 2009-07-09  Mark Probst  <mark.probst@gmail.com>
1572
1573         * method-to-ir.c: When doing a call which might be remote from
1574         shared generic code to other shared code with open type arguments,
1575         get the remoting invoke wrapper from the RGCTX and do an indirect
1576         call to it.
1577
1578 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
1581         after the unbox trampoline in the full-aot case.
1582
1583 2009-07-02  jonas echterhoff <jonas@unity3d.com>
1584         
1585         * mini.c: Move initialization of jit_mutex before debugger initialization
1586         
1587         to avoid crashes.
1588         
1589         
1590         * Info.plist: added Info.plist and link flag to enable the mono executable
1591         to access other processes. Requires codesigning of the executable to work.
1592         
1593         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
1594         
1595         compile on OS X.
1596         
1597
1598 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
1599
1600         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
1601
1602 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
1603
1604         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
1605         when the generic instance is an instantiation of a subclass of the
1606         methods class. Fixes #517166.
1607
1608 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
1611         code.
1612
1613         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
1614         AOTed code.
1615
1616         * CMakeLists.txt: Add minimal support for installation.
1617
1618 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
1619
1620         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
1621         determine whenever a method is directly callable to a separate function.
1622
1623         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
1624         needed ones as a result of the previous change.
1625
1626         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
1627         type of register arrays.
1628
1629         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
1630         type of register arrays.
1631
1632 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
1633         
1634         Contributed under the terms of the MIT/X11 license by
1635         Jerry Maine <crashfourit@gail.com>.
1636
1637         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
1638
1639 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1640
1641         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
1642
1643 2009-06-24  Neale Ferguson <neale@sinenomine.net>
1644
1645         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
1646         dump of structure return value. Fix some formatting.
1647         * cpu-s390x.md: Fix lengths of instruction sequences.
1648         * mini-s390.c: Minor formatting changes.
1649
1650 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
1653         Use sigaction on freebsd as well.
1654
1655 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
1656
1657         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
1658         uses #ifdef on it.
1659         
1660         * mini.c (mini_init): Revert a change which breaks cross-compilation.
1661
1662 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1663
1664         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
1665
1666 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1667
1668         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
1669
1670 2009-06-20  Martin Baulig  <martin@ximian.com>
1671
1672         * debug-mini.c
1673         (MonoDebuggerThreadFlags): New enum typedef.
1674         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
1675         (mono_debugger_thread_created): Added `gpointer func' argument;
1676         initialize the new `thread_flags' field.
1677
1678 2009-06-18  Martin Baulig  <martin@ximian.com>
1679
1680         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
1681         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
1682
1683         * debug-debugger.c
1684         (mini_debugger_set_attach_ok): New function; sets the attach-ok
1685         flag in `MONO_DEBUGGER__info.runtime_info'.
1686
1687         * driver.c
1688         (mono_main): Call mini_debugger_set_attach_ok() if generics
1689         sharing is disabled.
1690
1691 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
1692
1693         * aot-compiler.c (add_wrappers): Fix a warning.
1694
1695         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
1696         the ppc load/store macro changes.
1697
1698 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
1699
1700         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
1701
1702         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
1703         not just the got symbol.
1704
1705         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
1706         on ppc.
1707
1708         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
1709         ppc.
1710         
1711         * aot-compiler.c: Remove some fixmes.
1712
1713         * driver.c (mono_main): Print a helpful message when cross-compiling.
1714
1715         * mini.c (mini_init): Disable signal handlers when cross-compiling.
1716
1717         * method-to-ir.c (initialize_array_data): Do the optimization if the
1718         target byte order is little endian, instead of the host byte order.
1719
1720         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
1721         wrappers into the mscorlib image, Emit a unique plt symbol for each
1722         image, emit symbols for plt entries.
1723
1724         * image-writer.c (img_writer_emit_symbol_size): New function to emit
1725         a .size directive.
1726         
1727 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
1728
1729         * aot-compiler.c (add_wrappers): Avoid calling 
1730         mono_marshal_get_type_info () since it can assert for some types.
1731
1732         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
1733         ldtoken are used inside wrappers.
1734
1735         * helpers.c: Add support for prefixing tools with the arch name.
1736
1737         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
1738         quantities when using ilp32.
1739
1740         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
1741         spill slots. Use sizeof(mgreg_t) for the spill slot size.
1742
1743         * image-writer.c: Use .long on ilp32.
1744
1745         * aot-compiler.c: Use 32 bit loads on ilp32.
1746         
1747 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1748
1749         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1750
1751         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1752
1753         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1754
1755         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1756         second got slot of every aot image.
1757         
1758         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1759         aot on platforms with function pointers.
1760
1761         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1762         support for aot/full aot on ppc/ppc64.
1763         
1764         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1765         arguments which are needed on ppc.
1766
1767         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1768         argument.
1769
1770         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1771         
1772         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1773
1774         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1775
1776         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1777
1778         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1779
1780 2009-06-17  Geoff Norton  <gnorton@novell.com>
1781
1782         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1783
1784 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1787         to control whenever the dwarf writer is in xdebug or aot mode.
1788         (emit_class_dwarf_info): Use a separate abbrev for structures without
1789         children.
1790
1791         * aot-compiler.c: Pass the appending parameter to 
1792         mono_dwarf_writer_create ().
1793
1794         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1795         falls through to its next bblock. Fixes #513931.
1796
1797         * iltests.il: Add a test.
1798
1799         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1800         infor even if emit_line is FALSE, as the apple linker seems to require it.
1801
1802         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1803
1804         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1805         gcc does.
1806         (emit_fde): Ditto.
1807
1808 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1811         mips build.
1812
1813 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1816         'has_call_handler' fields.
1817
1818         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1819
1820         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1821         first bblock if not needed. Fixes #512790.
1822         
1823 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1826         
1827         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1828         wrappers.
1829
1830         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1831         remoting-invoke-with-check wrappers, which are not needed when running with
1832         full-aot, since it doesn't support remoting.
1833         
1834 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1837
1838         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1839         method info, it is not used anymore.
1840
1841         * mini.h: Bump AOT file format version.
1842         
1843         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1844         word smaller.
1845
1846         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1847         change above.
1848         
1849         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1850
1851         * mini.h: Bump AOT file format version.
1852         
1853 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1856         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1857         iphone.
1858
1859         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1860         of CKFINITE and FBGE for VFP.
1861
1862 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * aot-compiler.c: Don't align code to 16 bytes on arm.
1865         
1866         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1867         before the methods they belong to.
1868
1869         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1870         the full-aot case if possible, since the trampoline will be called right 
1871         away.
1872
1873         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1874         trampolines to 1024 after the change above.
1875
1876         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1877         trampoline to save 8 bytes per trampoline.
1878
1879         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1880         change above.
1881
1882 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1883
1884         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1885
1886 2009-06-08  Martin Baulig  <martin@ximian.com>
1887
1888         * debug-mini.c
1889         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1890         (_mono_debugger_throw_exception): Don't make this static.
1891         (_mono_debugger_unhandled_exception): Likewise.
1892         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1893
1894         * debug-mini.c
1895         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1896         (_mono_debugger_throw_exception): Add function prototype.
1897         (_mono_debugger_unhandled_exception): Likewise.
1898
1899         * mini-exceptions.c
1900         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1901         arg; return the first exception handler if the exception is caught
1902         and we're running inside the debugger.
1903         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1904         improve exception handle inside runtime-invoke, check whether the
1905         exception is actually caught in the method being invoked and not
1906         by the runtime-invoke-wrapper.
1907
1908 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1909
1910         * image-writer.c: Improve support for the osx assembler.
1911
1912         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
1913         support them.
1914
1915 2009-06-08  Martin Baulig  <martin@ximian.com>
1916
1917         * debug-mini.c
1918         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1919         (_mono_debugger_throw_exception): Don't make this static.
1920         (_mono_debugger_unhandled_exception): Likewise.
1921         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1922
1923         * debug-mini.c
1924         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1925         (_mono_debugger_throw_exception): Add function prototype.
1926         (_mono_debugger_unhandled_exception): Likewise.
1927
1928         * mini-exceptions.c
1929         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1930         arg; return the first exception handler if the exception is caught
1931         and we're running inside the debugger.
1932         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1933         improve exception handle inside runtime-invoke, check whether the
1934         exception is actually caught in the method being invoked and not
1935         by the runtime-invoke-wrapper.
1936
1937 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
1938
1939         * image-writer.c (append_subsection): Don't align subsections of the
1940         debug_line section as a workaround.
1941
1942         * dwarfwriter.c: Emit line number info in the AOT case as well.
1943
1944 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
1945
1946         This patch is contributed under the terms of the MIT/X11 license
1947
1948        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
1949        code_len <= code_size
1950
1951 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
1954
1955 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
1958         invoke wrappers, we now use trampolines instead.
1959
1960 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1961
1962         * mini-darwin.c: The exception thread must not be registered with
1963         the GC.
1964
1965 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1966
1967         * mini-gc.c: Disable the code because it makes SGen crash.
1968
1969 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1970
1971         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
1972         instead of asserting.
1973
1974 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * aot-compiler.c (mono_compile_assembly): Move the creation of the
1977         output file after the code has been compiled.
1978
1979 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
1982
1983 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
1986         entries distinction to simplify the code.
1987
1988         * mini.h: Bump AOT file format version.
1989         
1990 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * objects.cs: Fix the signature of one of the tests.
1993
1994         * mini.c (mini_create_ftnptr): New helper function, moved here from
1995         object.c.
1996         (mini_get_addr_from_ftnptr): Ditto.
1997         (mini_init): Install the new helpers.
1998
1999 2009-05-28  Martin Baulig  <martin@ximian.com>
2000
2001         Correctly initialize the debugger when embedding Mono.
2002
2003         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
2004         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
2005         see documentation in mini_debug_running_inside_mdb().
2006
2007         * debug-debugger.c
2008         (mini_debug_running_inside_mdb): New function to check whether
2009         we're running inside mdb.
2010
2011         * mini.c (mini_init): Call mini_debugger_init() if we're running
2012         inside the debugger.
2013
2014         * driver.c (mono_main): Moved the call to mini_debugger_init()
2015         into mini_init() to make this work when embedding Mono.
2016
2017         * debug-debugger.c (mini_debugger_init): Warn about duplicate
2018         calls to mini_debugger_init().
2019
2020         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
2021         mono_debugger_main() -> mini_debugger_main() and put them inside a
2022         `MONO_DEBUGGER_SUPPORTED' conditional.
2023
2024 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
2025
2026         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
2027         this is no longer in use.
2028         * mini.h: Same.
2029
2030 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
2031
2032         * mini-sparc.c (add_outarg_load): Fix the sparc build.
2033
2034         * aot-compiler.c (emit_method_code): Always write out C style symbols for
2035         methods.
2036
2037 2009-05-27  Martin Baulig  <martin@ximian.com>
2038
2039 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2040
2041         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
2042         long_conv_to_r_un to 64 bits.
2043
2044         * cpu-x86.md: Increase the instruction size due to the changes.
2045
2046         * iltests.il.in: Add regression test.
2047
2048         Fixes #467201.
2049
2050 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2051
2052         * objects.cs: Move the previous test from basic.cs to here.
2053
2054 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2055
2056         * basic.cs: Add regression test for #506915.
2057
2058 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2059
2060         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
2061         optimization we must check the bb of the first byte of stobj as
2062         it's the only one set in cil_offset_to_bb.
2063
2064         Fixes #506915.  
2065
2066 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * image-writer.c: Fix pointer directive on ppc64.
2069
2070 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * image-writer.c (asm_writer_emit_section_change): Avoid using
2073         .bss subsections on ppc too.
2074
2075 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
2076
2077         * image-writer.c: Fix the definition of TARGET_ASM_....
2078         
2079         * image-writer.c: Fix the emission of assembler directives in the last
2080         change.
2081
2082         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
2083         exception throwing code to accomodate ppc64.
2084
2085         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
2086         size to work on ppc64 too.
2087
2088         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
2089         too.
2090
2091         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
2092         the assembler dialect instead of using platform specific defines.
2093
2094 2009-05-22  Geoff Norton  <gnorton@novell.com>
2095
2096         * mini-arm.c (get_call_info): If a structure is split between the stack
2097         and argument registers, we should not advance the stack pointer by the entire
2098         native size, but just by the amount that spilled.
2099
2100 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
2101
2102         * mini-arm.c (get_call_info): Handle structures with alignment requirements
2103         correctly.
2104
2105 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2106
2107         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
2108         wrappers normally.
2109         
2110         * aot-compiler.c (add_extra_method): Fix up the collection of extra
2111         methods so wrapper don't get added twice.
2112         (add_generic_instances): Don't add methods of arrays.
2113
2114         * generics.cs: Mark one test as !FULLAOT.
2115
2116 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2117
2118         * mini-x86.c (emit_move_return_value): Remove unused vars.
2119
2120 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2121
2122         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
2123         decomposing 8 bytes structs into a LCALL.
2124
2125         * mini-x86.c (emit_move_return_value): We no longer push the vtype
2126         pointer for where to store the returned regs.
2127
2128         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
2129         state the concern.
2130
2131         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
2132
2133 2009-05-20  Miguel de Icaza  <miguel@novell.com>
2134
2135         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
2136         without getenv.
2137
2138 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2139
2140         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
2141
2142         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
2143         generics.
2144
2145 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
2146
2147         * local-propagation.c (mono_local_cprop): Avoid local propagation
2148         across paired add/sub if the first instruction dest reg is it's
2149         source reg. For example:
2150
2151         int_add_imm R12 <- R12 [1] clobbers: 1
2152         int_sub_imm R42 <- R12 [1] clobbers: 1
2153
2154         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
2155         maintain the math identify.
2156
2157         Fixes #505375.
2158
2159 2009-05-20  Andreia Gaita  <avidigal@novell.com>
2160
2161         * Makefile.am: avoid going on the network just to get the revision,
2162         use git log instead
2163
2164 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
2165
2166         Fixed estimate for short branches on amd64 (they were off mark, and
2167         enabling call prolog-epilog instrumentations caused assertions).
2168         * mini.h (struct MonoBasicBlock): added max_length field to hold the
2169         estimate for the maximum length of this basic block.
2170         * mini-amd64.c:
2171         - mono_arch_emit_prolog: compute max_length for each basic block
2172           (instead of max_offset), and inflate size estimate also for entry bb
2173           in case of code instrumentation.
2174         - mono_arch_output_basic_block: get rid of "cpos" (the current
2175           estimated "position" in the code), and always use "offset" instead,
2176           which is accurate; at the beginning of the function quickly recompute
2177           max_offset for all the remaining blocks, starting from the current
2178           cfg->code_len (which is correct, and not estimated) and using the
2179           estimated block lengths computed previously.
2180
2181 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * exceptions-ppc.c: Remove the caching from the trampoline creation 
2184         functions, it is already done in the caller.
2185
2186         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
2187
2188         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
2189         MONO_ARCH_GSHARED_SUPPORTED define.
2190
2191         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
2192
2193         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
2194         function.
2195
2196 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2197
2198         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
2199         call to mono_marshal_get_rgctx_invoke ().
2200
2201         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
2202         mono_marshal_get_static_rgctx_invoke (), all platforms which support
2203         gshared use the static rgctx trampolines now.
2204         
2205         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2206         platform supports it.
2207
2208 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2211
2212         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2213
2214 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2215
2216         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2217
2218         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2219         for ppc.
2220
2221 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2222
2223         Made it possible for mono_arch_instrument_epilog to preserve
2224         argument registers, otherwise instrumenting the "epilogue" before
2225         a tail call would clobber them.
2226         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2227         if like mono_arch_instrument_epilog but with an additional parameter
2228         that states if argument registers must be preserved.
2229         * mini.c: implemented mono_arch_instrument_epilog as a call to
2230         mono_arch_instrument_epilog_full without asking to preserve argument
2231         registers (this makes the existing code work as usual).
2232         * mini-amd64.c:
2233         - mono_arch_instrument_epilog: add parameter to transform it into
2234         mono_arch_instrument_epilog_full, and preserve argument registers
2235         when required.
2236         - mono_arch_output_basic_block, OP_TAILCALL case: call
2237         mono_arch_instrument_epilog_full.
2238         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2239         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2240         only transformed mono_arch_instrument_epilog into
2241         mono_arch_instrument_epilog_full.
2242
2243 2009-05-15  Geoff Norton  <gnorton@novell.com>
2244
2245         * mini-darwin.c: This works on arm now.
2246
2247 2009-05-14  Geoff Norton  <gnorton@novell.com>
2248
2249         * jit.h, driver.c: Allow full-aot to be decided programatically by the
2250         embedding api.
2251
2252 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
2255         label names.
2256
2257         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
2258         wrappers during full aot mode correctly.
2259
2260         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
2261         methods correctly.
2262
2263         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
2264         mono_metadata_type_hash ().
2265
2266 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
2267
2268         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
2269         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
2270         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
2271         Removed MONO_INST_BRLABEL from the instruction flags, and the
2272         remaining code that used it, because we do not support branches inside
2273         basic blocks (and branch target labels) anymore.
2274         * Makefile.am: As part of the above cleanup, remove reference to
2275         BURG files which don't exist anymore.
2276
2277 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
2278
2279         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
2280         osx.
2281
2282         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
2283         to use mono_arch_throw_corlib_exception.
2284
2285         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
2286         mono_arch_throw_corlib_exception for throwing corlib exceptions.
2287
2288         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
2289         domain mempool.
2290
2291         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
2292
2293         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
2294         for the got to make debugging easier and to avoid confusing it with the
2295         system got.
2296         
2297         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
2298         method so a breakpoint can be set when using gdb.
2299
2300 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2301
2302         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
2303         on mono_method_get_imt_slot ().
2304
2305         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
2306         num_decodes variables.
2307
2308         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
2309         change as it doesn't seem to work.
2310         
2311         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
2312         wrappers.
2313
2314 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2315
2316         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
2317         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
2318
2319         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
2320         builder when using full aot.
2321
2322         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
2323         here, it is already handled.
2324         
2325         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
2326         correctly for IMT.
2327
2328         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
2329
2330         * mini-arm.h: Enable IMT for full aot.
2331         
2332         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
2333         arch doesn't support it.
2334
2335         * mini.c (mini_init): Don't disable IMT for full aot if the
2336         architecture supports it.
2337
2338         * mini.h (MonoAotTrampoline): New enum containing the different types
2339         of 'numerous' trampolines.
2340         (MONO_AOT_FILE_VERSION): Bump this.
2341
2342         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
2343         static rgctx trampolines. Add support for full-aot IMT thunks.
2344
2345         * mini-amd64.h: Enable IMT for full aot.
2346
2347         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
2348         to exclude tests belonging to a category.
2349
2350         * generics.cs: Mark some tests with a !FULLAOT category.
2351
2352         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
2353         generics tests.
2354
2355 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
2358         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
2359         (emit_plt): Fix a warning.
2360
2361 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
2364         back into aot-compiler.c to a place where the other functions shared by
2365         the runtime and aot compiler are.
2366         
2367         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
2368         as done previously, instead of in MonoAotFileInfo, since pointers might have
2369         alignment requirements.
2370
2371         * mini.h: Bump AOT file format version.
2372
2373 2009-05-10  Miguel de Icaza  <miguel@novell.com>
2374
2375         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
2376         that is used at runtime from the aot-compiler.c, this makes it
2377         work on setups that remove the AOT compiler from the output
2378         image. 
2379
2380 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
2381
2382         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
2383         PPC.
2384
2385         * mini-ppc.h: Enable static rgctx trampolines for ppc.
2386
2387         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
2388
2389         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
2390         stuff to mono_arch_decompose_long_opts ().
2391         (mono_decompose_opcode): Remove some dead code.
2392
2393 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2394
2395         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
2396         cmethod can be null for quite a some reasons.
2397
2398 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2399
2400         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
2401
2402 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
2405
2406 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
2409         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
2410         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
2411         calls returning structures by addr on amd64.
2412
2413         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
2414
2415         * iltests.il.in: Restructure the tail call tests a bit.
2416         
2417 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
2420         for virtual methods too.
2421
2422 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
2423
2424         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
2425         due to regression in verifying System.dll.
2426
2427 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2428
2429         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
2430         in dynamic methods.
2431
2432         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
2433         instances.
2434
2435         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
2436         g_str_hash () which can change.
2437
2438         * driver.c (mini_regression): Disable optimizations not supported by
2439         the cpu. Fixes #500019.
2440
2441         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
2442         build.
2443
2444 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
2447         to the latest LLVM code.
2448
2449 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
2450
2451         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
2452
2453 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
2454
2455         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
2456         x86/amd64.
2457
2458         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
2459         no longer saving offsets, so just save the patch types along with the other
2460         info.
2461         * aot-runtime.c (load_patch_info): Update after the changes to 
2462         encode_patch_list ().
2463         (decode_got_entry): Removed, merged into load_patch_info ().
2464         (is_shared_got_patch): Removed, call the same function from
2465         aot-compiler.c.
2466
2467         * mini.h: Bump aot file format version.
2468         
2469         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
2470         half-finished no-dlsym code.
2471
2472         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
2473         option.
2474
2475         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
2476         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
2477
2478 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
2481         buffer length to work with AOT code.
2482
2483         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
2484         ldfld/stfld opcodes.
2485
2486         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
2487         as it is not used.
2488
2489         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
2490
2491         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
2492
2493         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
2494         LLVM API.
2495
2496         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
2497         if needed. Don't decompose long operations when using llvm.
2498
2499 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
2500
2501         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
2502         PAGESIZE constant.
2503
2504         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
2505
2506 2009-05-03  Martin Baulig  <martin@ximian.com>
2507
2508         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
2509         mono_debugger_insert_method_breakpoint() since the class init
2510         handler we're inserting at the top of the method already gives us
2511         a notification.
2512
2513 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
2516         to mono_arch_decompose_long_opts () for x86 and arm.
2517
2518 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
2521         TARGET_AMD64 here.
2522
2523 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
2524
2525         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
2526         JIT code.
2527
2528 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
2531         number of trampolines used in full-aot mode.
2532
2533         * aot-compiler.c: Add an ntrampolines option to set the number of 
2534         trampolines emitted in full-aot mode.
2535
2536 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
2537
2538         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
2539         a volatile load. Get rid of get_tempname (), llvm assigns names
2540         automatically.
2541
2542         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
2543         builder function.
2544
2545         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
2546         a value.
2547
2548         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
2549         level 1.
2550
2551         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
2552         to the same register as a fixed sreg2. Fixes #497271.
2553
2554         * iltests.il.in: Add a new test.
2555
2556 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2557
2558         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
2559         stack, since pushes complicate exception handling.
2560
2561         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
2562         the stack if they are passed using moves.
2563
2564         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2565
2566         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
2567         when using llvm.
2568
2569         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
2570         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
2571         of FMOVE if it is an R4.
2572
2573 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
2576
2577         * mini.h (LLVMCallInfo): New structure to store calling convention 
2578         information for the LLVM back end similar to the CallInfo structures in 
2579         the back-ends.
2580
2581         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
2582         call information in a format usable by LLVM.
2583         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
2584
2585         * method-to-ir.c (mono_emit_call_args): Emit calls using 
2586         mono_llvm_emit_call () when compiling using LLVM.
2587
2588         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
2589         comments to all functions. Fix memory leaks. Add a public init/cleanup
2590         function.
2591
2592         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
2593
2594         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
2595         mono_array_new_va () jit icall.
2596         
2597 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
2598
2599         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
2600         multiple machine description files to be specified.
2601         * mini-ops.h: fixes for cross-compilation.
2602
2603 2009-04-22  Miguel de Icaza  <miguel@novell.com>
2604
2605         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
2606         some porting work.
2607
2608 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
2611         to prevent asserts in various passes. Fixes #497220.
2612
2613 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
2614
2615         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
2616         a racy assert.
2617
2618         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
2619         table to avoid duplicates.
2620
2621         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2622         
2623         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
2624         option is used.
2625
2626 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2627
2628         * mini.c (mini_method_verify): Fail fulltrust code if the exception
2629         is for method or field access.
2630
2631 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
2634         a Value to stdout.
2635
2636         * mini-llvm.c (mono_llvm_emit_method): Use it.
2637         
2638         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
2639         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
2640         on volatile values.
2641
2642         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
2643         synchronized methods.
2644
2645         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
2646
2647         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
2648
2649         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
2650         OP_LOADI8_MEM.
2651
2652         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
2653         allowing some options to be set dynamically.
2654
2655 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
2656
2657         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
2658         unconditional branch.
2659
2660         * mini.h (MonoTrampolineType): Add new trampoline type 
2661         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
2662         compiled code.
2663
2664         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
2665         function.
2666
2667         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
2668         creation function.
2669
2670         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
2671         is enabled. Instead, use the llvm vcall trampoline.
2672         
2673         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
2674
2675         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
2676         
2677         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
2678         functions.
2679
2680         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
2681         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
2682
2683         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
2684         OP_IA64_CSET opcode.
2685
2686         * mini.c: Fix a warning.
2687
2688         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
2689         THROW to the appropriate llvm type.
2690
2691 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
2692
2693         * mini.c (mini_method_compile): Add statistics for methods JITted
2694         with/without LLVM.
2695
2696 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
2699         OP_IA64_CMP_<cond>_IMM opcodes.
2700
2701 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2702
2703         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
2704         corlib exceptions.
2705
2706         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
2707         correctly.
2708
2709         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
2710         GENERICINST.
2711
2712 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
2713
2714         * mini-exceptions.c : add thread id to EXCEPTION trace message.
2715
2716 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2717
2718         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
2719         support.
2720
2721         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
2722         rgctx invoke trampolines for x86.
2723
2724         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
2725         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
2726         (mono_arch_get_vcall_slot): Simplify this.
2727
2728 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
2729
2730         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
2731         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
2732
2733 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2734
2735         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
2736         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
2737
2738         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
2739
2740         * liveness.c (visit_bb): Remove a needless assert.
2741
2742 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2743
2744         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
2745         full aot support to the arch specific code.
2746
2747         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
2748
2749         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2750
2751         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2752         
2753         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2754         collect information about the delegate invoke impl trampolines.
2755
2756         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2757         to save trampolines during full-aot mode.
2758
2759         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2760         creation function which returns a trampoline which sets the rgctx
2761         argument.
2762         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2763         wrapper if possible.
2764         (mono_delegate_trampoline): Ditto.
2765
2766         * mini.c (mono_jit_runtime_invoke): Ditto.
2767
2768         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2769         
2770         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2771
2772         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2773         
2774 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2775
2776         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2777         just setting the opcode to OP_NOP.
2778
2779 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2780
2781         * mini.c (mini_method_compile): Put the last change inside an 
2782         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2783         
2784         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2785         and extend live ranges to cover the whole method when using xdb.
2786
2787         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2788         do it in the trampolines.
2789
2790         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2791         needed.
2792
2793         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2794         
2795         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2796         call code in full-aot mode since IMT is disabled there.
2797         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2798         new JIT no longer has that restriction.
2799
2800         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2801
2802         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2803         a more compact format.
2804         (mono_aot_wrapper_name): New function to return a unique name for a
2805         wrapper method, also used by the AOT runtime.
2806
2807         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2808         aot-compiler.c.
2809
2810         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2811         when a ICollection<T> etc is encountered.
2812         (add_generic_instances): Process method arguments/locals too.
2813         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2814         trampoline names.
2815
2816         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2817         
2818 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2821
2822         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2823
2824         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2825         representing the result of the decomposition. Nullify instructions
2826         instead of setting them to OP_NOP since nops can't have registers
2827         set.
2828
2829 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2830
2831         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2832         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2833         info. Strip 'mapping symbols' on ARM.
2834
2835         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2836         
2837         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2838         this with the native genmdesc.
2839
2840 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2841
2842         * aot-runtime.c:  Fixing the MSVC build.
2843
2844         Code is contributed under MIT/X11 license.
2845
2846 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2849         JITted code depends on it.
2850
2851 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2852
2853         * aot-compiler.c: Use new MonoGenericParam accessors.
2854
2855 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2856
2857         Reduce memory usage and improve correctness wrt MonoGenericParam
2858         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2859         handing.  Avoid allocating MonoGenericParams, but use the ones in
2860         the container itself.
2861
2862 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2863
2864         * tasklets.c: Return exceptions in the out argument.
2865
2866 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2869         opcode. Use pointer types in more places instead of casting them to 
2870         integers.
2871
2872         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2873         optimizations.
2874         (mono_llvm_optimize_method): New helper function to optimize a method.
2875
2876         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2877         widening code so it could be called from more places.
2878         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2879         code paths in the call opcodes.
2880
2881 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2882
2883         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2884
2885 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * dwarfwriter.c: Use _ to separate class name 
2888         components as gdb can't handle '.'. Represent reference variables
2889         as 'class <NAME>&'.
2890         
2891         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2892
2893         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2894         
2895         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2896
2897         * gc-test.cs: New file with GC stack marking tests.
2898         
2899         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2900         negative numbers for vfp.
2901
2902         * basic-float.cs: Add a test.
2903         
2904 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
2905
2906         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
2907
2908 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
2909
2910         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
2911         part of tasklet/continuation support.
2912
2913 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
2914
2915         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
2916         amd64 opcodes inside an ifdef.
2917
2918         * dwarfwriter.c: Emit inheritance information for classes, emit fields
2919         of complex types.
2920         
2921         * dwarfwriter.c (emit_type): Emit the class info for classes.
2922
2923 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
2924
2925         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
2926
2927         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
2928
2929         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
2930
2931         * ssa.c (mono_ssa_compute): Fix some memory leaks.
2932
2933 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2934
2935         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
2936
2937         * mini-llvm.c: Update comments.
2938
2939         * mini.h (COMPILE_LLVM): New macro.
2940
2941         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
2942
2943         * ssa.c (mono_ssa_compute): Ditto.
2944         
2945         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
2946         the unwind ops from a DWARF FDE.
2947
2948         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
2949         methods by extracting the dwarf unwind ops from the unwind info generated
2950         by LLVM.
2951         
2952         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
2953         calls.
2954
2955         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
2956         addressing modes.
2957
2958 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
2959
2960         * Makefile.am (llvm_sources): Enable this.
2961
2962         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
2963         failing back to the JIT if something cannot be handled.
2964
2965         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
2966         compiling with LLVM.
2967
2968         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
2969         compiling with LLVM.
2970
2971         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
2972         compiling with LLVM.
2973
2974         * mini-ops.h: Add a few opcodes needed by LLVM.
2975
2976         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
2977         has no unwind info.
2978
2979         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
2980         backend.
2981
2982         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
2983
2984         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
2985
2986 2009-04-01  Mark Probst  <mark.probst@gmail.com>
2987
2988         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
2989         ridiculously large methods.
2990
2991 2009-03-31  Martin Baulig  <martin@ximian.com>
2992
2993         * debug-debugger.c (debugger_remove_breakpoint): Call
2994         mono_debugger_remove_class_init_callback ().
2995
2996 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
2997
2998         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
2999         right before emitting code, not at the start.
3000
3001         * mini.c (mono_postprocess_patches): Extract this into a separate function
3002         from mono_codegen ().
3003
3004         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
3005         byref types correctly.
3006
3007 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
3008
3009         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
3010         by the last change.
3011
3012 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
3015         indirect calls, this avoids problems where get_vcall_slot () would get
3016         confused by the native code for the instruction preceeding the call.
3017         (mono_arch_get_vcall_slot): Simplify this.
3018         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
3019
3020         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
3021         register allocator now seems to depend on them instead of the data in
3022         cpu-<ARCH>.md.
3023
3024         * mini.c (mini_method_compile): Throw the correct type of exception if
3025         mono_method_get_header () fails because of a loading error.
3026
3027 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
3028
3029         * mini.c (mini_method_compile): Clear the loader error if the method
3030         header cannot be decoded.
3031
3032         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
3033         interface methods on proxies correctly.
3034
3035         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
3036         this argument for vtype methods. Add precise liveness info for arguments.
3037
3038         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
3039         LIVERANGE_START/END opcodes.
3040
3041         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
3042         for arguments and values in registers.
3043
3044 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
3045
3046         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
3047         return a valuetype. Fixes #487518.
3048
3049         * iltests.il: Add a test.
3050         
3051         * aot-compiler.c: Use mono_thread_create () to create helper threads.
3052
3053         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
3054         closed over a null reference correctly.
3055
3056 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3057
3058         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
3059
3060 2009-03-25  Mark Probst  <mark.probst@gmail.com>
3061
3062         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
3063         allocated to the same registers as fixed sregs.
3064
3065 2009-03-24  Mark Probst  <mark.probst@gmail.com>
3066
3067         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
3068         ATOMIC_CAS_IMM ops.
3069
3070         * method-to-ir.c: Handle more cases for
3071         Interlocked.CompareExchange.
3072
3073         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
3074         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
3075         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
3076
3077 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
3078
3079         * aot-runtime.c (decode_method_ref): Fix a warning.
3080
3081         * unwind.c (mono_unwind_frame): Ditto.  
3082
3083 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
3086         (mono_compile_assembly): Enable the binary writer for full-aot as well.
3087
3088         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
3089         fix the handling of large values in the ALU_PC_G0_NC relocation.
3090
3091 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3092
3093         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
3094
3095 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3096
3097         * method-to-ir.c (mono_spill_global_vars): Support for ternary
3098         ops.
3099
3100 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3101
3102         * method-to-ir.c: MINI_OP3 needs a comma.
3103
3104         * method-to-ir.c, mini.h, mini.c: Remove
3105         mono_init_op_sreg_counts ().
3106
3107 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3108
3109         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
3110         OP_JMP.
3111         
3112         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
3113         assertion.
3114
3115         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
3116
3117         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
3118         code somewhat.
3119
3120 2009-03-21  Mark Probst  <mark.probst@gmail.com>
3121
3122         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
3123         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
3124         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
3125         operations.
3126
3127 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
3128
3129         * driver.c: Change location of gc_wrapper.h.
3130
3131         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
3132         inside finally clauses correctly. Fixes #485721.
3133
3134         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
3135         after the change above.
3136
3137         * exceptions.cs: Add a test.
3138         
3139 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3140
3141         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
3142
3143         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
3144         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
3145         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
3146
3147         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
3148         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
3149
3150 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
3151
3152         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
3153         Simplify logic for ensure_method_is_allowed_to_call_method. 
3154         Handle wrappers on callers.
3155
3156 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3157
3158         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
3159         them don't run yet.
3160
3161         * basic-simd.cs: Fix the names of some test methods.
3162
3163 2009-03-18  Geoff Norton  <gnorton@novell.com>
3164
3165         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
3166
3167 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
3168
3169         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
3170
3171 2009-03-17  Jb Evain  <jbevain@novell.com>
3172
3173         * driver.c: remove now uneeded call to mono_gc_base_init before
3174         mono_profiler_load.
3175
3176 2009-03-17  Jb Evain  <jbevain@novell.com>
3177
3178         * dwarfwriter.c (token_handler): handle more cases.
3179
3180 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
3181
3182         * method-to-ir.c: Remove more dead code (that was required only
3183         because of method_is_safe). Fix compiler warnings.
3184
3185 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3186
3187         * method-to-ir.c: Remove unneeded/useless method_is_safe
3188         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
3189
3190 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3191
3192         * mini.c (mini_method_compile): Print the method been compiled with
3193         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
3194         for people not familiar with the runtime.
3195
3196 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3197
3198         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
3199         a managed object which is later put into a GList. Return its class instead.
3200
3201         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
3202         stack slots when using sgen.
3203
3204 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3207
3208 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3209
3210         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3211         > so it works on the first vreg as well.
3212
3213 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3214
3215         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3216         trigger randomly.
3217
3218         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3219         
3220         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3221         implement GArray.
3222
3223 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3224
3225         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3226         native->IL offset mapping.
3227
3228 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3229
3230         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3231
3232         * basic.cs: Add a test.
3233
3234 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3235
3236         * mini-x86.c (mono_arch_output_basic_block): Use different
3237         registers in case the ones we want to overwrite are used by the
3238         other operand.  Fixes regression in #480807.
3239
3240 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3241
3242         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
3243
3244         * dwarfwriter.c (emit_line_number_info): The line number info for
3245         IL code was off by one. Fix that.
3246
3247         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
3248         stack.
3249
3250 2009-03-09  Mark Probst  <mark.probst@gmail.com>
3251
3252         Contributed under the terms of the MIT/X11 license by Steven
3253         Munroe <munroesj@us.ibm.com>.
3254
3255         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
3256         Fixes #483462.
3257
3258 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
3261         as well.
3262
3263 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3264
3265         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
3266         the delegate ctor handling code. Fixes #482638.
3267         
3268         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
3269         #481458.
3270
3271         * iltests.il.in: Add a test.
3272         
3273         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
3274         mini-posix.c.
3275
3276 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3277
3278         * mini-trampolines.c (mono_create_jump_trampoline): If the method
3279         is shared generic code, return the trampoline, even if the method
3280         has already been compiled.  Fixes #479763.
3281
3282         * mini.c, mini.h: New function
3283         mono_jit_find_compiled_method_with_jit_info() which is the same as
3284         mono_jit_find_compiled_method() but also returns the jit info.
3285
3286 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3287
3288         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
3289         for methods which actually have one.  For all other methods, make
3290         sure the this argument var is live the whole method.
3291
3292         * mini.c (mini_method_compile): Every shared method has a
3293         this/vtable/mrgctx info.  Fixes #480807.
3294
3295 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3296
3297         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
3298         generic/imt thunks where some entries branch through the vtable,
3299         while other entries branch directly.
3300
3301 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3302
3303         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
3304
3305         * mini-windows.c: Ditto.
3306         
3307         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
3308         ctors.
3309
3310 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
3311
3312         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
3313         down an assert.
3314
3315 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3316
3317         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
3318         #481403.
3319
3320 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3321
3322         * exceptions-x86.c: Include debug-mini.h - fixes build.
3323
3324 2009-03-04  Martin Baulig  <martin@ximian.com>
3325
3326         * debug-mini.c: Clean up the exception API and add documentation.
3327         (mono_debugger_handle_exception): New public method; this is
3328         called when throwing an exception or encountering an unhandled one.
3329         (mono_debugger_call_exception_handler): Formerly known as
3330         mono_debugger_handle_exception(); this is used to tell the
3331         debugger that we're about to invoke an exception handler.
3332
3333 2009-03-04  Martin Baulig  <martin@ximian.com>
3334
3335         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
3336         ../metadata/mono-debug-debugger.c; save and reset exception state.
3337
3338 2009-03-02  Martin Baulig  <martin@ximian.com>
3339
3340         * debug-mini.c: Moved the debugger exception handling here from
3341         ../metadata/mono-debug-debugger.c.
3342
3343         * debug-mini.h
3344         (MonoDebuggerExceptionAction): New exception typedef.
3345
3346         * debug-mini.c
3347         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
3348
3349         * exceptions-amd64.c
3350         (mono_amd64_throw_exception): Use the new debugger exception
3351         handling code.
3352
3353         * mini-exceptions.c
3354         (mono_handle_exception_internal): Don't call
3355         mono_debugger_unhandled_exception() here.
3356
3357 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3358
3359         * mini.c aot-compiler.c: Update after the changes to 
3360         mono_marshal_get_runtime_invoke ().
3361
3362         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
3363         Virtual generic methods might not have method->slot set, work around
3364         that.
3365
3366         * generics.cs: Add a test.
3367
3368 2009-03-02  Geoff Norton  <gnorton@novell.com>
3369
3370         * mini.c:
3371         * driver.c: Allow signal chaining of SIGFPE as well.
3372
3373 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
3376         this since it now receives the method not its generic context in the
3377         IMT reg.
3378
3379         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
3380         generic/imt thunks where some entries branch through the vtable, while
3381         other entries branch directly.
3382
3383         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
3384
3385         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
3386         support for interface methods as well.
3387
3388         * mini-trampolines.c: Add support for virtual generic methods in interfaces
3389         using the normal IMT thunks.
3390
3391         generics.cs: Add new tests.
3392         
3393         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
3394         the generic inst to the generic imt thunks. This fixes AOT support, 
3395         improves consistency with the normal IMT thunks, and makes it easier to
3396         add support for interface generic virtual methods later.
3397
3398         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
3399         
3400 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * driver.c (mono_set_signal_chaining): New public API function to enable
3403         signal chaining on POSIX platforms.
3404
3405         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
3406         (si@lindenlab.com) to implement signal chaining. The original patch was
3407         contributed under the MIT X/11 license:
3408         https://bugzilla.novell.com/show_bug.cgi?id=318894
3409
3410 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
3411
3412         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
3413         too until it can be made to run on amd64.
3414
3415 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
3416
3417         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
3418         to  get_generic_context_from_code () + get_call_info () if possible.
3419
3420 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
3421
3422         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
3423         suspend-on-sigsegv functionality.
3424
3425         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
3426         to suspend when a native SIGSEGV is received. This is useful for debugging
3427         crashes which don't happen under gdb, since a live process contains more
3428         information than a core file.
3429
3430         * mini-exceptions.c (mono_print_thread_dump): Use 
3431         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
3432
3433         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
3434
3435         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
3436         
3437         * basic-float.cs: Disable the tests which currently fail on amd64.
3438
3439         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
3440         value to mono_arch_patch_callsite () to fix crashes.
3441         
3442         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
3443
3444 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3445
3446         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
3447         nop code by patching the call address to point to the nullified class init
3448         trampoline, as the former does not seem to be safe on SMP machines.
3449
3450 2009-02-23  Mark Probst  <mark.probst@gmail.com>
3451
3452         * mini-ops.h: Fix the argument types for a few x86 opcodes where
3453         they were wrong.
3454
3455 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * basic-float.cs basic-calls.cs: Fix warnings.
3458
3459 2009-02-22  Mark Probst  <mark.probst@gmail.com>
3460
3461         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
3462         correct frame pointer in the LMF.  Should fix #478394.
3463
3464 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3465
3466         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
3467
3468         * image-writer.c: Make the binary writer less verbose.
3469
3470 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
3471
3472         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
3473         are called from runtime invoke wrappers.
3474
3475 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * cpu-ppc.md (store_memindex): Increase the size of this.
3478
3479 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3480
3481         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3482
3483         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
3484
3485         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
3486         OP_LCONV_TO_R_UN.
3487
3488         Last fix for of #467201.
3489
3490
3491 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3492
3493         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3494
3495         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
3496         and long_conv_to_r8_2:
3497
3498         Fixed part of #467201.
3499
3500 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3501
3502         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3503
3504         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
3505         conversion to 32 bits.
3506
3507         * cpu-x86.md: Increase the size of int_conv_to_r4.
3508
3509         * basic-float.cs: Add a test for this.
3510
3511         Fixed part of #467201.
3512
3513 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3514
3515         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3516
3517         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
3518         conversion to 64 bits.
3519
3520         * basic-float.cs: Add a test for this.
3521
3522         Fixed part of #467201.
3523
3524 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3525
3526         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3527
3528         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
3529         This behavior is compatible with MS.
3530
3531         * iltest.il.in: Add a test for this.
3532
3533         Fixed part of #467201.
3534
3535 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3536
3537         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3538
3539         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
3540         change the precision of the value.
3541
3542         * cpu-x86.md: Define len for float_conv_to_r4.
3543
3544         * basic-float.cs: Add a test for this.
3545
3546         Fixed part of #467201.
3547
3548 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3549
3550         * mini.c: Adjust locking order to the new semantics where the loader lock
3551         comes first.
3552
3553 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
3554
3555         * aot-runtime.c:
3556         * mini-amd64.c:
3557         * mini-arm.c:
3558         * mini-ia64.c:
3559         * mini-mips.c:
3560         * mini-ppc.c:
3561         * mini-sparc.c:
3562         * mini-trampolines.c:
3563         * mini-x86.c:
3564         * mini.c:
3565         * tramp-alpha.c:
3566         * tramp-amd64.c:
3567         * tramp-arm.c:
3568         * tramp-hppa.c:
3569         * tramp-ia64.c:
3570         * tramp-mips.c:
3571         * tramp-ppc.c:
3572         * tramp-s390.c:
3573         * tramp-s390x.c:
3574         * tramp-sparc.c:
3575         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
3576
3577 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
3580         as it is incorrect.
3581
3582 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
3585         for cctors if needed.
3586
3587 2009-02-17  Mark Probst  <mark.probst@gmail.com>
3588
3589         * mini-ppc.c: Fix build on Darwin.
3590
3591 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3592
3593         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
3594         version instead of 3 as valgrind doesn't like version 3.
3595
3596         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3597
3598         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
3599         usable for hashing methods.
3600         (emit_extra_methods): Use the new hash to avoid putting every method in the
3601         same hash bucket.
3602
3603         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
3604
3605         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
3606         whenever a method ref could match a method.
3607         
3608         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
3609         test to fail.
3610         
3611         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
3612         methods refs.
3613
3614         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
3615
3616         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
3617         the encoding buffer.
3618
3619         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
3620         mono_method_get_header () on inflated methods as an optimization.
3621
3622 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3623
3624         * ssa.c (fold_ins): Fix another crash if the instruction following the
3625         switch was optimized away.
3626
3627 2009-02-16  Mark Probst  <mark.probst@gmail.com>
3628
3629         Contributed under the terms of the MIT/X11 license by Steven
3630         Munroe <munroesj@us.ibm.com>.
3631
3632         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
3633
3634 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3635
3636         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
3637         around the mono_domain_alloc calls, it is now done by the functions
3638         themselves.
3639
3640         * aot-compiler.c (compile_method): Only add wrappers referenced by
3641         the method if compiling with full AOT.
3642         (mono_compile_assembly): Error out if --aot=full is specified on
3643         a platform where it is not supported.
3644
3645         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
3646         on ARM too.
3647
3648         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
3649         AOT support.
3650
3651         * aot-runtime.c (load_named_code): Handle 
3652         mono_arm_throw_exception_by_token.
3653
3654         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
3655
3656         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
3657         unaligned.
3658
3659         * Makefile.am (fullaotcheck): Exit if a test fails.
3660
3661         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
3662         on ARM.
3663         (mono_compile_assembly): Handle the assembler failing.
3664
3665         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
3666         accepting subsections of .bss.
3667
3668         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
3669         was optimized away.
3670
3671         * aot-compiler.c: Remove some unused includes.
3672         
3673         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
3674         now in MonoImageWriter.
3675
3676         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
3677         code sequence which matches a non-virtual call. Fixes #472654.
3678
3679 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
3680
3681         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
3682         xdebug code.
3683         
3684         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
3685         use the image/dwarf writers directly.
3686
3687         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
3688         field.
3689
3690         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
3691         MonoDwarfWriter.
3692
3693         * image-writer.h: Fix some typos.
3694
3695         * dwarfwriter.h dwarfwriter.c: New files.
3696         
3697         * aot-compiler.c: Extract the DWARF info writing functionality into a 
3698         separate module.
3699
3700         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
3701         argument to return unwind info.
3702
3703         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
3704
3705         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
3706         
3707         * aot-runtime.c (decode_method_ref): Add a case for 
3708         MONO_AOT_METHODREF_WRAPPER_NAME.
3709
3710         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
3711         for AOT.
3712
3713         * aot-compiler.c (encode_method_ref): Use the new constants.
3714
3715         * aot-runtime.c (decode_method_ref): Ditto.
3716
3717         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
3718         be compiled, not the icall itself.
3719
3720 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
3721
3722         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
3723         using decode_method_ref ().
3724
3725         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
3726         convert it to an in32. Fixes #475859.
3727
3728         * arrays.cs: Add a test.
3729
3730 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3731
3732         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
3733         OP_LCONV_TO_U2.
3734
3735         * basic-long.cs: Add a test.
3736
3737 2009-02-12  Mark Probst  <mark.probst@gmail.com>
3738
3739         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
3740         remove the frame pointer in leaf methods which don't receive any
3741         arguments, don't throw exceptions and don't do dynamic stack
3742         allocations.
3743
3744 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3745
3746         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
3747         the fail_tramp changes. Hopefully fixes #475132.
3748
3749 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3750
3751         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3752         instead of mono_metadata_signature_dup_full.
3753
3754 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3757         for processing jump tables. Fixes #473787.
3758
3759 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3760
3761         * mini-generic-sharing.c: mini_method_get_context() just calls
3762         mono_method_get_context_general() now.
3763
3764         * mini.c, mini.h: Moved get_object_generic_inst(),
3765         construct_object_context_for_method() and
3766         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3767
3768 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3769
3770         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3771         basic block fell through to its successor bblock without a branch. Fixes
3772         #474718.
3773
3774         * iltests.il.in: Add a test.
3775         
3776         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3777         (can_encode_patch): We can now handle arrays of generic parameters and
3778         array methods.
3779
3780         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3781
3782         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3783         the AOT file to avoid some #ifdefs in aot-runtime.c
3784
3785         * mini.h: Bump AOT file format version.
3786
3787 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3788
3789         * Makefile.am (fullaotcheck): Make this run the tests.
3790
3791         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3792
3793 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3794
3795         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3796         individually.  Fixes #473482.
3797
3798 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3799
3800         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3801
3802 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3803
3804         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3805         (mono_compile_assembly): Hush compile warnings about
3806         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3807         code path.
3808
3809 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3810
3811         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3812
3813         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3814
3815         * aot-compiler.c: Fix arm support.
3816
3817         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3818         img_writer_emit_unset_mode () function.
3819
3820         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3821         (mono_unwind_get_dwarf_pc_reg): Ditto.
3822
3823         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3824         Move almost all platform specific code to a set of arch_ functions, 
3825         and document them to ease porting.
3826         
3827         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3828
3829         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3830
3831         * aot-compiler.c: Extract the image writing functionality into a separate
3832         module to reduce the size of this file.
3833
3834 2009-02-09  Geoff Norton  <gnorton@novell.com>
3835
3836         * mini-s390.c: Fix the signature of emit_sig_cookie.
3837
3838 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3839
3840         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3841
3842         * aot-runtime.c (is_shared_got_patch): Ditto.
3843
3844         * aot-runtime.c (load_named_code): Cope with the fact that 
3845         decode_got_entry () won't decode the patch fully if its corresponding got
3846         entry is already filled.
3847         
3848         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3849         Initialize *ji.
3850         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3851
3852         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3853         as the moving pointer instead of 'buf' for consistency with the rest of the
3854         codebase.
3855         (mono_arch_create_monitor_exit_trampoline): Ditto.
3856
3857         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3858         generic_class_init trampolines.
3859         (add_generic_class): Extract some code from add_generic_instances () into a
3860         separate function so it can be called from other places too.
3861         (compile_method): Call add_generic_class () for the classes of inflated methods
3862         referenced by the method.
3863         (can_encode_patch): Allow references to generic parameters.
3864
3865         * aot-runtime.c: Add support the patches required by the new trampolines.
3866         
3867         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3868         support.
3869
3870         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3871         full-aot support.
3872
3873         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3874         this from get_throw_pending_exception, make the signature full aot compatible.
3875
3876         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3877
3878         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3879
3880         * exceptions.cs: Add a test.
3881
3882 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3885         use the DWARF_DATA_ALIGN constant instead.
3886
3887         * exception-<ARCH>.c: Update after the above change.
3888
3889         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3890         dwarf unwinder.
3891
3892         * mini-arm.c: Enable the dwarf unwinder.
3893
3894         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3895         instead of mono_class_setup_vtable ().
3896
3897 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3898
3899         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3900         dwarf unwinder.
3901
3902         * mini-x86.h: Enable the dwarf unwinder.
3903
3904 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
3905
3906         Fix mcs/tests/test-7.cs
3907         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
3908         2009-02-03.
3909
3910 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3911
3912         * mini.c (print_jit_stats): Remove some unused statistics.
3913
3914 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3915
3916         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
3917
3918 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3919
3920         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
3921         the method we get from mono_object_get_virtual_method() because
3922         that function does it properly, now.
3923
3924 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3925
3926         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
3927         opcodes. Fixes #472775.
3928
3929 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3930
3931         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
3932         fact that mono_find_jit_info() sometimes returns the context
3933         corresponding to the jit info in new_ctx.  Fixes #472600.
3934
3935 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
3938         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
3939         klass->enum_basetype directly.
3940
3941         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
3942         enum subtypes.
3943
3944         * unwind.c: Avoid 0 sized arrays.
3945
3946 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3947
3948         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
3949         size on systems with 64k pages. Fixes #471389.
3950
3951 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3952
3953         Contributed under the terms of the MIT/X11 license by Steven
3954         Munroe <munroesj@us.ibm.com>.
3955
3956         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
3957         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
3958         necessary.
3959
3960 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3961
3962         Contributed under the terms of the MIT/X11 license by Steven
3963         Munroe <munroesj@us.ibm.com>.
3964
3965         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
3966         comparison fix.
3967
3968         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
3969         The trampoline can be longer on PPC64.
3970
3971 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3972
3973         Contributed under the terms of the MIT/X11 license by Steven
3974         Munroe <munroesj@us.ibm.com>.
3975
3976         * mini-ppc.c: Compiler warning fixes and trivial code
3977         simplifications.
3978
3979 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3980
3981         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
3982         ins->dreg which could be a hardware register, not a vreg.
3983
3984         * aot-compiler.c (emit_method_dwarf_info): Ditto.
3985         
3986         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
3987         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
3988
3989         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
3990         
3991         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
3992         ->dreg, that is not the vreg we are looking for.
3993
3994         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
3995
3996         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
3997         LIVERANGE_END.
3998
3999         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
4000         strange crashes.
4001
4002 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
4003
4004         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
4005
4006         * aot-compiler.c (emit_line_number_info): Fix line number emission when
4007         the line diff is 0.
4008
4009         * aot-compiler.c: Add xdebug support on x86.
4010
4011         * unwind.c: Add x86 support.
4012         
4013         * aot-compiler.c (emit_exception_debug_info): Control the emission of
4014         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
4015
4016         * mini.c (mini_method_compile): Ditto.
4017         
4018         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
4019         the variable index.
4020
4021         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
4022         which mimic .push_section/.pop_section in GAS.
4023         
4024         * aot-compiler.c: Emit precise live range information for variables.
4025
4026         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
4027
4028         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
4029         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
4030         them.
4031
4032         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
4033         the live ranges of variables.
4034
4035         * mini.h (struct MonoMethodVar): Add two fields containing the live range
4036         of the variable in terms of native offsets.
4037
4038 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
4039
4040         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
4041         
4042 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4043
4044         Contributed under the terms of the MIT/X11 license by Steven
4045         Munroe <munroesj@us.ibm.com>.
4046
4047         * exceptions-ppc.c (restore_regs_from_context): Correct operand
4048         order (offset then base reg) for ppc_load_multiple_regs.
4049         (emit_save_saved_regs) Correct operand order for
4050         ppc_store_multiple_regs.
4051         (mono_arch_get_call_filter): Correct operand order for
4052         ppc_load_multiple_regs.
4053
4054         * mini-ppc.c (emit_memcpy): Fix operand order for
4055         ppc_load_reg_update and ppc_store_reg_update.
4056         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
4057         (mono_arch_emit_epilog): Correct operand order for
4058         ppc_load_multiple_regs.
4059
4060         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
4061         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
4062
4063 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4064
4065         * cpu-ppc64.md: Fixed storer4_memindex length.
4066
4067 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4068
4069         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
4070         line number info.
4071         
4072         * aot-compiler.c (emit_line_number_info): Optimize this.
4073
4074 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * aot-compiler.c: Disassemble tokens in the IL disassembly.
4077         
4078         * aot-compiler.c: Add debug info for methods without debug info by
4079         emitting an IL file and having the line number info referencing that file.
4080
4081         * aot-compiler.c: Optimize the size of the generated line number info.
4082
4083         * aot-compiler.c: Emit line number info in xdebug mode.
4084
4085         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
4086         million arguments.
4087
4088 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
4089
4090         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
4091
4092         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
4093         is used.
4094
4095 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4096
4097         * basic-calls.cs: Test for the weird crash found on arm.
4098         
4099 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4100
4101         * cpu-arm.md: Increase the size of storer8_membase_reg and
4102         loadr8_membase_reg to 24 bytes to accomodate the extra add.
4103
4104         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
4105         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
4106         reg to LR otherwise we'll be loading/storing from just the offset.
4107
4108 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4109
4110         Question: if we are storing gint32's inside the "*native_offset",
4111         should we change the signature to "gint32 *native_offset" to
4112         ensure that we do not have type definition problems?
4113         
4114         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
4115         an int * as this is what the other function expects, causes
4116         problems with Freescale's compiler that defined int32_t to be a
4117         long and makes int incompatible 
4118
4119 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4120
4121         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
4122         filename conflict with bjam.
4123
4124 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4125
4126         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
4127         as it might use decomposed ops.
4128
4129 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4130
4131         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
4132
4133         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
4134         is defined.
4135
4136         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
4137
4138         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
4139         offsets.
4140
4141         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
4142         way registers are stored in MonoContext on arm.
4143
4144         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
4145         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
4146
4147         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
4148
4149         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
4150
4151         * mini.c (mini_init): Register mono_isfinite.
4152
4153         * jit-icalls.c (mono_isfinite): New jit icall.
4154
4155         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
4156         
4157         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
4158         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
4159         the parent frame.
4160
4161 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4162
4163         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
4164         separate frame and stack pointers, so we must use FP to find the register
4165         spill area.
4166         The FP reg is retrieved from the MonoContext::regs array.
4167
4168 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4169
4170         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
4171         as FPA requires it.
4172
4173 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4174
4175         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
4176         return R4 and R8 when not running under softfloat.
4177
4178         Fixes basic-calls.exe
4179
4180 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4181
4182         * mini-arm.c: Implement some overflow opcodes.
4183
4184 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4185
4186         * ssa.c: handle another alloca.h
4187
4188         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
4189         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
4190         MONO_ARCH_USE_SIGACTION. 
4191
4192         * aot-runtime.c, mini-exceptions.c: Replace platform define with
4193         capability defines.
4194
4195         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
4196
4197         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
4198         PPC targets as sigaction does not exist on all platforms, define
4199         this on a per-platform basis.
4200
4201         Instead of erroring out if the platform is not defined, include
4202         mini-ppc-os.h, and expect that the OS specific setting provides
4203         the required information.   
4204
4205 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4206
4207         * aot-compiler.c: Fix --enable-minimal=aot.
4208
4209 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4212         previous change.
4213
4214 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * exceptions-arm.c: Fix warnings.
4217
4218         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4219         ARM.
4220
4221         * mini-x86.c: Fix --enable-minimal=jit build.
4222
4223         * mini.c: Really fix --enable-minimal=jit build.
4224         
4225         * mini.c (construct_object_context_for_method): Move this outside
4226         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4227
4228         "Backported" of r124984 from 2.0 branch.
4229         
4230         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4231
4232         "Backport" of r124977 + r124978 from 2.0 branch.
4233         
4234         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4235         to avoid calling mono_exception_from_token () from the throw trampoline.
4236         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4237         for throwing corlib exceptions, this fixes full-aot support for corlib
4238         exceptions.
4239
4240         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
4241
4242 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4243
4244         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
4245         part of the changes to split the code in mini into operating
4246         system specific files.
4247
4248         This patch was done by copying mini.c to the respective files to
4249         preserve SVN history.
4250
4251 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4252
4253         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
4254
4255 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4256
4257         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
4258         remoting-invoke-with-check wrappers of shared methods.
4259
4260         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
4261
4262 2009-01-27  Mark Probst  <mark.probst@gmail.com>
4263
4264         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
4265         optimization if the top of stack is the last instruction in the
4266         bblock.  Otherwise it might have been used after its definition.
4267         Fixes #469742.
4268
4269 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4270
4271         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
4272         method as well when get_vcall_slot () fails to match a code sequence.
4273
4274         * mini-arm.c: Fix the android build, which doesn't have
4275         __aeabi_read_tp.
4276
4277 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4278
4279         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
4280         the s390x build.
4281
4282 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
4283
4284         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
4285
4286 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4287
4288         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
4289         and put its id into jinfo->used_regs. This is only used on amd64,
4290         which is currently the only platform generating unwind info.
4291
4292         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
4293         the dwarf unwinder. This is required to correctly handle async exceptions
4294         like thread abort and stack overflows, which can happen while a method
4295         is in the middle of its prolog or epilog.
4296         
4297         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
4298         the unwind info belonging to an AOTed method.
4299
4300         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
4301         into cfg->unwind_ops.
4302         
4303         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
4304
4305         * mini.c (mini_init): Call mono_unwind_init ().
4306         (mini_cleanup): Call mono_unwind_cleanup ().
4307
4308         * unwind.c: Add functions for managing a set of unwind info entries, allowing
4309         unwind info to be shared between methods.
4310
4311         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
4312         saved in the LMF.
4313
4314         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
4315         get_throw_pending_exception () to avoid initialization races.
4316
4317         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
4318         mono_arch_exceptions_init () function.
4319
4320         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
4321
4322 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
4323
4324         * mini.c (mono_get_domain_intrinsic): New helper function.
4325         (mono_get_thread_intrinsic): Ditto.
4326
4327         * mini-arm.c mini-ia64.c: Use the new helper functions.
4328         
4329         * method-to-ir.c (mono_method_to_ir): Fix the comment for
4330         the last constrained_call change, since it is needed in the non-AOT
4331         case as well.
4332
4333         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
4334         
4335         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
4336         mono_get_lmf_addr () on arm eabi linux.
4337
4338 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
4339
4340         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
4341         code sequence which matches a non-virtual call.
4342
4343 2009-01-23  Mark Probst  <mark.probst@gmail.com>
4344
4345         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
4346         stack pointer (r1).
4347
4348 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
4349
4350         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
4351         runtime-invoke wrappers, since they are also shared based on signature.
4352
4353 2009-01-22  Mark Probst  <mark.probst@gmail.com>
4354
4355         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
4356         info from the (correct) context.
4357
4358 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
4359
4360         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
4361         
4362         * unwind.c (mono_unwind_frame): New function to unwind through a frame
4363         using dwarf unwinding info. Not yet used.
4364
4365         * mini.c (mini_init): When using xdebug, disable freeing of domains.
4366
4367 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4368
4369         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
4370         descriptors.
4371
4372         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
4373         special case and handle mono_arch_delegate_invoke_impl() returning
4374         function descriptors.
4375
4376         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
4377         trampolines return function descriptors, too.
4378
4379 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * method-to-ir.c (handle_alloc): Avoid generic instances in the
4382         out_of_line optimization.
4383
4384 2009-01-21  Martin Baulig  <martin@ximian.com>
4385
4386         * mini.h
4387         (MonoCompile): Added `disable_deadce_vars' to disable removing
4388         unused variables.
4389
4390         * mini.c
4391         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
4392         inside the debugger.
4393
4394         * liveness.c (mono_analyze_liveness): Don't remove any unused
4395         variables if `cfg->disable_deadce_vars' is set.
4396
4397 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4398
4399         * method-to-ir.c: Only apply exception constructor optimization if
4400         the the method actually belongs to an exception class.  Fixes
4401         #467456.
4402
4403 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4404
4405         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
4406         change inside a #ifdef __mono_ppc64__.
4407
4408         * aot-compiler.c (compile_method): Remove the previous limitation.
4409
4410         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
4411         on type variables in AOTed code.
4412         
4413         * aot-compiler.c (compile_method): Skip generic methods having type 
4414         constraints on their generic parameters.
4415
4416         * aot-compiler.c (compile_method): Check for methods which cannot be
4417         encoded inside RGCTX_FETCH patches as well.
4418
4419         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
4420         build.
4421
4422 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4423
4424         * method-to-ir.c: Force the vtable variable in shared generic code
4425         for the case that they might show up on a stack trace where they
4426         are needed.
4427
4428         * mini-exceptions.c: Save and use generic sharing info as well as
4429         IP in stack traces to resolve shared generic instantiations.
4430
4431 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
4432
4433         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
4434         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
4435
4436 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4437
4438         * method-to-ir.c: Do generic sharing for array constructors.
4439
4440 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
4441
4442         * mini-exceptions.c (mono_print_thread_dump): Add information
4443         about the thread state using wapi_current_thread_desc.
4444
4445 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4446
4447         * basic-simd.cs: Tests for the new constructors. 
4448
4449 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4450
4451         * mini-ops.h: Added OP_EXPAND_*
4452
4453         * cpu-x86.md: Same.
4454
4455         * mini-x86.c (mono_arch_output_basic_block): Same.
4456         
4457         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
4458
4459 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4460
4461         * iltests.il.in: Add a test for #467385.
4462
4463 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4464
4465         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
4466         thread been cleaned up is not the same currently in execution.
4467
4468         Fixes appdomain-unload crashes on windows, osx and linux variants
4469         without the __thread keyword.
4470
4471 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4472
4473         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
4474         (koush@koushikdutta.com). Implement this for android.
4475
4476         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
4477         begins with a digit.
4478
4479         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
4480         mono_marshal_get_write_barrier ().
4481
4482 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4483
4484         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
4485         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
4486         that pass them on a register pair.
4487
4488         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
4489         test was crashing due to that.
4490
4491 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
4492
4493         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
4494         trampoline code. Include ucontext.h only if available.
4495
4496 2009-01-15  Mark Probst  <mark.probst@gmail.com>
4497
4498         * mini.c: mono_domain_lookup_shared_generic() takes an open method
4499         and doesn't check whether it's sharable, like it was before
4500         removing the shared generics hash.  This brings IronPython
4501         performance back to what it was before that change.
4502
4503 2009-01-14  Mark Probst  <mark.probst@gmail.com>
4504
4505         * method-to-ir.c: Handle delegate invocation optimization earlier,
4506         otherwise it would be handled (much more slowly) by the
4507         final/sealed optimization.
4508
4509 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4510
4511         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
4512         domain is not set. Fixes #465864.
4513
4514 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4515
4516         * method-to-ir.c: Don't stop sharing of generic methods with catch
4517         clauses - we already handle those.
4518
4519 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4520
4521         * mini.c, mini.h: lookup_generic_method() is now
4522         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
4523         making the shared_generics_hash obsolete.
4524
4525 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4526
4527         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
4528         use the red zone.  Make room on the stack first and then use it,
4529         not the other way around.
4530
4531 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * mini.c (mini_init): Call mono_xdebug_init ().
4534
4535         * aot-compiler.c (mono_xdebug_init): Make this non-static.
4536
4537 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
4538
4539         * TestDriver.cs: Add an --iter argument to run tests multiple times.
4540
4541         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
4542         trampolines.
4543
4544         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
4545         debug+unwind info for trampolines.
4546
4547         * mini.c (mono_create_unwind_op): New helper function.
4548
4549         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
4550
4551 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
4552
4553         * aot-compiler.c: Fix the build.
4554
4555 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4556
4557         * Makefile.am: Update dtrace-prelink.sh location.
4558
4559 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
4560
4561         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
4562         optimization. Fixes #464520.
4563
4564 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
4565
4566         * mini-amd64.c : Adding code to save/restore non-volatile registers
4567            on Winx64.
4568
4569         * exceptions-amd64.c : Adding code to save/restore non-volatile 
4570           registers on Winx64.
4571
4572         Contributed under MIT/X11 license.
4573
4574 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
4575
4576         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
4577         __GNUC_MINOR__ which can break when the major version changes.
4578
4579 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
4580
4581         * basic-simd.cs: Add tests for usage of the sizeof opcode.
4582
4583 2009-01-07  Geoff Norton  <gnorton@novell.com>
4584
4585         * helpers.c:  Allow mono -v -v -v to work on darwin.
4586
4587 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
4588
4589         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
4590           pattern. 
4591
4592         Contributed under MIT/X11 license.
4593
4594 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
4595
4596         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
4597         instead of directly accessing type->data.klass. Fixes #462016.
4598         (mono_allocate_stack_slots_full): Ditto.
4599
4600         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
4601         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
4602
4603         * aot-compiler.c (emit_plt): Fix ARM build.
4604
4605 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
4606
4607         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
4608         
4609         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
4610         change.
4611
4612         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
4613         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
4614         #463357.
4615
4616         * iltests.il.in: Add a regression test.
4617
4618 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
4621
4622 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4623
4624         * basic-simd.cs: Add a regression test for #462457.
4625
4626 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4627
4628         * mini-ops.h: Add a definition of XPHI.
4629
4630         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
4631
4632         * ssa.c (op_phi_to_move): Handle XPHI.
4633
4634         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
4635
4636         Fixes #462457
4637
4638 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4639
4640         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
4641
4642 2008-12-31  Geoff Norton  <gnorton@novell.com>
4643
4644         * mini-ppc.c: The prolog size allocated can be too small for darwin
4645         ppc32 under certain circumstances.  Also fix a small logic bug.
4646
4647 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
4648
4649         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
4650         while loading AOT methods.
4651
4652         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
4653         since only the former is nulled out after a successful cast. This prevents
4654         crashes with rethrown exceptions when using --debug=casts.
4655
4656 2008-12-24  Mark Probst  <mark.probst@gmail.com>
4657
4658         * mini.h: New macro for checking whether a method is final,
4659         i.e. whether the method or its class is marked final.
4660
4661         * method-to-ir.c: Use the new macro for all final-checks
4662         consistently.  Fixes the crash in the System.ServiceModel tests.
4663
4664 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4665
4666         * mini-exceptions.c (get_exception_catch_class): Corrected another
4667         overly strict assertion.
4668
4669 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4670
4671         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
4672         Clobbering it is not allowed because the caller might use it as
4673         the vtable register in the interface call.
4674
4675 2008-12-19  Mark Probst  <mark.probst@gmail.com>
4676
4677         * mini-exceptions.c (get_exception_catch_class): Corrected an
4678         overly strict assertion.
4679
4680 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
4681         
4682         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
4683
4684         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
4685
4686         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
4687
4688         * cpu-mips.md: correct lengths for certain long_ opcodes.
4689
4690         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
4691
4692         * 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().
4693         
4694 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4695
4696         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
4697         
4698 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4699         
4700         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
4701         
4702 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
4703
4704         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
4705         next basic block.
4706         
4707 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
4708
4709         * 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
4710
4711         * 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)
4712         
4713 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
4714         
4715         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
4716         
4717 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
4718
4719         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
4720         gshared code. Fixes #458947.
4721
4722         * generics.cs: Add a test.
4723
4724 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4725         
4726         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4727         
4728         * mini-mips.c: first pass n32 code generation.
4729
4730         * mini-mips.h: datatypes and defines for n32 support.
4731
4732         * exceptions-mips.c: first pass n32 code generation.
4733         
4734         * tramp-mips.c: first pass n32 code generation.
4735         
4736         * cpu-mips.md: add long_ opcodes.
4737         
4738 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4739
4740         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4741
4742         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4743         
4744         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4745         
4746         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4747
4748         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4749
4750         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4751
4752         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4753
4754         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4755
4756         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4757
4758 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4759
4760         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4761
4762 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4763
4764         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4765
4766 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4767
4768         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4769         descriptors for helper functions directly in front of the code.
4770
4771 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4772
4773         * method-to-ir.c: Removed an unnecessary assertion.
4774
4775 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4776
4777         * method-to-ir.c: Merge SGEN changes from the old JIT.
4778
4779 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4780
4781         * driver.c (compile_all_methods_thread_main): Handle failure of
4782         mono_get_method ().
4783
4784 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4785
4786         * mini-ppc.c: Merged with mini-ppc64.c.
4787
4788         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4789
4790         * Makefile.am: Use the same sources for PPC and PPC64.
4791
4792         * mini-ppc64.c: Removed.
4793
4794 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4795
4796         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4797         code to mono_bb_is_fall_through.
4798         
4799         * branch-opts.c (mono_remove_critical_edges): Same.
4800
4801 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4802
4803         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4804         expect that an OP_BR_REG will be there.
4805
4806 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4807
4808         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4809         for the many branch ops. The original check miss OP_BR_REG.
4810
4811         Fixes #457574.
4812         
4813 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4814
4815         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4816
4817 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4818
4819         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4820         while holding the aot lock.
4821
4822 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4823
4824         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4825         
4826 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4827
4828         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4829           to release all runtime callable wrappers held by the runtime.
4830
4831         Contributed under MIT/X11 license.
4832
4833 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4834
4835         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4836           for Winx64.
4837
4838         Contributed under MIT/X11 license.
4839
4840 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4841
4842         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4843         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4844
4845 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4846
4847         * cpu-mips.md: fix ckfinite length
4848
4849         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4850         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4851         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4852         
4853 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4854
4855         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4856         
4857 2008-12-08  Geoff Norton  <gnorton@novell.com>
4858
4859         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4860         size by 8 bytes as well.
4861
4862 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4863
4864         * basic-simd.cs: Fix method names for Vector16b.
4865         
4866 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4867
4868         * basic-simd.cs: Fix method names for Vector16sb.
4869
4870 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4871
4872         * basic-simd.cs: Fix method names for Vector8us.
4873         
4874 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4875
4876         * basic-simd.cs: Fix method names for Vector8s.
4877         
4878 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4879
4880         * basic-simd.cs: Fix method names for Vector4ui.
4881
4882 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4883
4884         * basic-simd.cs: Fix method names for Vector2l.
4885
4886 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4887
4888         * basic-simd.cs: Fix method names for Vector2d.
4889
4890 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4891
4892         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4893         that are extension methods.
4894
4895 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4896
4897         * basic-simd.cs: Fix method names for Vector4f.
4898
4899 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4900
4901         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4902         as such. Fixes #456669.
4903
4904 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4905
4906         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
4907         
4908 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4909
4910         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
4911         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
4912         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
4913         (mips_adjust_stackframe): handle FP spills
4914                 
4915         * mini-ops.h: add mips_mtc1_s2
4916         
4917         * cpu-mips.md: add mips_mtc1_s2
4918         
4919 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
4920
4921         * unwind.c: New file, move the unwind info encoding functions here from
4922         aot-compiler.c, so they could be used at runtime too.
4923
4924 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4925
4926         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
4927         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
4928         
4929 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4930
4931         * mini-mips.c: cleanup warnings
4932         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
4933         (mips_adjust_stackframe): handle case of taking the address of stack locals
4934         
4935 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4936
4937         * aot-compiler.c: Implement a few functions missing from the asm writer.
4938         (emit_method_code): Only write symbols for methods when using the bin
4939         writer, since the assembler can't deal with the characters in our method
4940         names.
4941
4942         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4943
4944         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
4945         call.
4946
4947         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
4948         a bit to also restore %rax.
4949
4950 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4951
4952         * mini-ppc.c: Some simple merges from mini-ppc64.c.
4953
4954 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4955
4956         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
4957         arguments.
4958
4959 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4960
4961         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
4962
4963         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
4964         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
4965
4966         * exceptions-ppc64.c: Removed.
4967
4968         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
4969
4970 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4971
4972         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
4973         tramp-ppc64.c.
4974
4975         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
4976
4977         * tramp-ppc64.c: Removed.
4978
4979 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4980
4981         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
4982         the TYPESPEC table.
4983
4984 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4985
4986         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
4987
4988         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
4989         mini-ppc.h instead of mini-ppc64.h.
4990
4991         * mini-ppc64.h: Removed.
4992
4993 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4994
4995         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
4996         
4997         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
4998         
4999 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5000
5001         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
5002         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
5003         code easier.
5004
5005 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5006
5007         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
5008
5009 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5010
5011         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
5012
5013 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5014
5015         * basic-simd.cs: Tests for operator == and != on Vector4f.
5016
5017 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5018
5019         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
5020
5021         * simd-intrinsics.c: Kill useless enum.
5022
5023 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5024
5025         * cpu-mips.md: add long_conv_to_ovf_i4_2
5026         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
5027
5028 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5029
5030         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
5031         
5032         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
5033
5034 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5035
5036         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
5037         
5038 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5039
5040         * basic-simd.cs: Add tests for new methods.
5041
5042 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5043
5044         * simd-intrinsics.c: Add support for operator == and !=
5045         on Vector4(u)i.
5046
5047         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
5048
5049 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5050
5051         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
5052
5053 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
5054
5055         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
5056
5057         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
5058         MONO_PATCH_INFO_ICALL_ADDR.
5059
5060         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
5061
5062         * aot-compiler.c: Resurrect full-aot support.
5063
5064 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5065
5066         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
5067         
5068 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5069
5070         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
5071         
5072 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
5073
5074         * basic-simd.cs: Fix tests to work under ppc.
5075         Remove tests for methods that will be removed.
5076
5077 2008-12-03  Mark Probst  <mark.probst@gmail.com>
5078
5079         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
5080         generic type (via a typedef or typeref) correctly.
5081
5082 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
5083
5084         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
5085         diagnose an assertion failure.
5086
5087 2008-12-02  Mark Probst  <mark.probst@gmail.com>
5088
5089         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
5090         Fix trampoline size.
5091
5092         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
5093         conversion opcodes are implemented natively instead via emulation.
5094
5095 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5096
5097         * cpu-mips.md: remove mips_xori
5098
5099         * mini-ops.h:  remove mips_xori
5100
5101         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
5102
5103         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
5104         
5105         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
5106         
5107 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5108
5109         * cpu-mips.md: fix instruction lengths.
5110
5111         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
5112
5113         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
5114
5115         * mini-ops.h: fix slti / sltiu op profiles.
5116         
5117 2008-12-02  Martin Baulig  <martin@ximian.com>
5118
5119         * method-to-ir.c (mono_method_to_ir): Disable debugging
5120         information for the init locals block to make the debugger stop
5121         after all locals have been initalized.
5122
5123 2008-12-02  Martin Baulig  <martin@ximian.com>
5124
5125         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
5126         running inside the debugger.
5127
5128 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
5129
5130         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
5131         is enabled.
5132
5133         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
5134         alu->alu imm optimization which only shows if deadce is disabled.
5135
5136         * aot-compiler.c: Rename the function names for the binary and asm writers
5137         so they can coexist in the same process. Rework the xdebug code to use the
5138         asm writer. This avoids the need to call into the runtime to dump the
5139         debugging info. Add more debugging info for types.
5140
5141         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
5142
5143         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
5144         cpu description tables, they can't occur in cpu-<ARCH>.md.
5145
5146         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
5147         the stack in CEE_LDFLDA. Fixes #450542.
5148
5149         * generics.cs: Add a new test.
5150
5151 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5152
5153         * mini-ops.h: updated MIPS opcodes
5154         * mini-mips.c: decompose long opts
5155         * mini-mips.h: decompose long opts
5156         
5157 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
5158
5159         * cpu-mips.md: fix length on int_rem_un
5160         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
5161         
5162 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
5163
5164         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
5165
5166         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
5167
5168 2008-11-29  Martin Baulig  <martin@ximian.com>
5169
5170         * mini-exceptions.c (mono_handle_native_sigsegv): Check
5171         mono_debug_using_mono_debugger() in addition to the
5172         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
5173
5174 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5175
5176         * mini-ops.h: updated more MIPS opcodes
5177         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
5178         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
5179         
5180 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5181
5182         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
5183
5184 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5185
5186         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
5187         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
5188         * mini-ops.h: correct selected mips opcode entries
5189         
5190 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5191
5192         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
5193         make them work.
5194
5195 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5196
5197         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
5198
5199 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5200
5201         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
5202         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
5203         * mini-mips.h: disable IMT
5204         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
5205         
5206 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5207
5208         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5209
5210 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5211
5212         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5213
5214 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5215
5216         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5217         consistency.
5218
5219 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5220
5221         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5222         for Set/GetVector aligned versions.
5223
5224 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5225
5226         * basic-simd.cs: Add tests for Get/SetVector.
5227
5228 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5229
5230         * mini.c: Removed g_slist_append_mempool().  Now in
5231         metadata/mempool.c.
5232
5233 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5234
5235         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5236         size properly and make the bounds check optional.
5237
5238         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5239         for SetVector and IsAligned.
5240
5241 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
5242
5243         * mini.c: Remove unused mono_normalize_opcodes () function.
5244
5245 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5246
5247         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
5248         using the new atomic add ops now.
5249
5250         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
5251         add.
5252
5253 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5254
5255         * mini-ppc64.c: Several fixes.
5256
5257 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5258
5259         * cpu-mips.md: added jump_table
5260         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
5261
5262 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5263
5264         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
5265
5266 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5267
5268         * mini-ops.h: corrected a handful of MIPS opcodes.
5269
5270 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5271
5272         * aot-compiler.c: MIPS to use ELF writer
5273
5274 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5275
5276         * mini-codegen.c: remove MIPS specific assert.
5277
5278 2008-11-25  Mark Probst  <mark.probst@gmail.com>
5279
5280         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
5281         fixes.  PPC64 now passes most of the runtime regressions.
5282
5283 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
5284
5285         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
5286         volatile intervals a bit.
5287
5288 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5289
5290         * basic-long.cs: New test case.
5291
5292 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * mini.c (mini_method_compile): Disable globalra for large methods for 
5295         now.
5296
5297         * regalloc2.c (order_moves): Add fp support.
5298
5299         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
5300         source bblock ends with an OP_BR_REG.
5301
5302         * ratests.cs: Add a new test.
5303
5304 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5305
5306         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
5307         sharing.  PPC64 now passes generics.exe.
5308
5309 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5310
5311         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
5312
5313 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5314
5315         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
5316         memory when mono_jit_info_table_find () can't find the method in the
5317         LMF case.
5318
5319         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
5320         AOTed code too.
5321         
5322         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
5323         writer too.
5324
5325 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5326
5327         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
5328         Several fixes.  PPC64 now runs exceptions.exe and
5329         devirtualization.exe.
5330
5331 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5332
5333         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
5334         arrays.exe and basic-math.exe.
5335
5336 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5337
5338         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
5339         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
5340
5341 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5342
5343         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
5344
5345 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5346
5347         * method-to-ir.c: Move bounds checking macros to ir-emit.h
5348
5349         * ir-emit.h: Move macros from method-to-ir.c to here.
5350
5351 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5352
5353         * mini-ops.h: Correct the long simd ops to use LREG.
5354
5355 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
5358         
5359         * mini-ops.h: Correct the dreg type of a few long opcodes.
5360
5361         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
5362         Add netbsd support.
5363
5364 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
5365
5366         * mini-ppc.c: remove negative stack references in epilog
5367         for platforms that don't support the red zone.
5368
5369 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5370
5371         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
5372         point regs.  Now PPC64 passes basic-calls.exe.
5373
5374 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5375
5376         * basic-simd.cs: Add tests for accessors of Vector2l.
5377
5378 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5379
5380         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
5381
5382         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
5383         
5384         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
5385
5386 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5387
5388         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
5389         PPC64 passes basic-long.exe.
5390
5391 2008-11-20  Mark Probst  <mark.probst@gmail.com>
5392
5393         * decompose.c: Decompose carry and overflow add on PPC64 like on
5394         other 64 bit archs.  Don't decompose sub at all on PPC64.
5395
5396         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
5397         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
5398         basic-long.exe.
5399
5400 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5401
5402         * basic-simd.cs: Add tests for accessors of Vector2d.
5403
5404 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5405
5406         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
5407
5408         * cpu-x86.md: Same.
5409
5410         * mini-x86.c (mono_arch_output_basic_block): Same.
5411         
5412         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
5413
5414 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5415
5416         * basic-simd.cs: Add tests for accessors of Vector4f.
5417
5418 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5419
5420         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
5421
5422         * cpu-x86.md: Same.
5423
5424         * mini-x86.c (mono_arch_output_basic_block): Same.
5425         
5426         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
5427
5428 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5429
5430         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
5431
5432 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5433
5434         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
5435
5436         * cpu-x86.md: Same.
5437
5438         * mini-x86.c (mono_arch_output_basic_block): Same.
5439         
5440         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
5441
5442 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5443
5444         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
5445
5446 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5447
5448         * simd-intrinsics.c: Enable setters for Vector16sb.
5449
5450 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5451
5452         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
5453
5454         * cpu-x86.md: Same.
5455
5456         * mini-x86.c (mono_arch_output_basic_block): Same.
5457         
5458         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
5459
5460 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
5461
5462         * simd-intrinsics.c: Implement setter for Vector8us.
5463
5464 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5465
5466         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
5467         for dead variables.
5468
5469 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5470
5471         * mini-ppc.c: remove references to the red zone in the prolog
5472         (for systems that don't support it).
5473
5474 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5475
5476         * cpu-ppc64.md: Fixed a few instruction lengths.
5477
5478         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
5479         now.
5480
5481 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5482
5483         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
5484         basic.exe now.
5485
5486 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5487
5488         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
5489
5490 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
5491
5492         * mini-ops.h: Added OP_INSERT_I2.
5493
5494         * cpu-x86.md: Same.
5495
5496         * mini-x86.c (mono_arch_output_basic_block): Same.
5497         
5498         * simd-intrinsics.c: Implement setter for Vector8s.
5499
5500         * simd-methods.h: Add the names of get setters of Vector8s.
5501
5502 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
5505         
5506         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
5507         parameters.
5508
5509         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5510
5511 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5512
5513         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
5514         for PPC64.  An empty program runs now.
5515
5516 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5517
5518         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5519
5520         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
5521         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
5522         info for JITted code is emitted into a shared library, loadable into gdb.
5523
5524 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5525
5526         * Makefile.am: Changes to build PPC64.
5527
5528         * mini-arch.h: Include mini-ppc64.h on PPC64.
5529
5530 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5531
5532         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
5533         in PPC code up to r119147.
5534
5535 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5536
5537         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5538         cpu-ppc64.md: Changes for PPC64.
5539
5540         Based on code submitted by andreas.faerber@web.de at
5541         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
5542         X11/MIT license.
5543
5544 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5545
5546         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5547         cpu-ppc64.md: Copied from the corresponding PPC files from
5548         r118846.
5549
5550 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
5551
5552         * mini-ops.h: Added OP_ROUND.
5553
5554         * cpu-x86.md: Added round.
5555
5556         * mini-x86.c: Added support for intrinsicing Math.Round (double).
5557
5558         * basic-math.cs: Added test_0_round to test rounding.
5559
5560         Contributed under MIT/X11 license.
5561
5562 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5563
5564         * aot-compiler.c : Fix the Winx64 build.
5565
5566         Contributed under MIT/X11 license.
5567
5568 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5569
5570         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
5571         in OP_EXTRACT_R8 to avoid possible stack corruption.
5572
5573 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * mini-ops.h: Added OP_EXTRACT_R8/I8.
5576
5577         * cpu-x86.md: Added extract_r8.
5578
5579         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
5580         
5581         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
5582         a couple of OP_EXTRACT_I4.
5583
5584         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
5585
5586         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
5587
5588 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5589
5590         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
5591         and not 4.1. 
5592
5593 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5594
5595         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
5596         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
5597
5598         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
5599         are not needed any more.
5600
5601         * mini.h: Remove the unused INS_LIST macros.
5602
5603         * mini.c (mini_method_compile): Remove a disable globalra case which is no
5604         longer needed.
5605
5606         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
5607         ir-emit.h.
5608
5609         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
5610         mono_alloc_ireg () instead.
5611
5612         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
5613         macros.
5614
5615         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
5616         on amd64.
5617
5618         * aot-runtime.c (load_aot_module): Disable AOT when running under
5619         CAS.
5620
5621         * mini-amd64.h: Change the monitor fastpath defines to check for
5622         !PLATFORM_WIN32 so they work on *bsd too.
5623
5624         * mini.h mini.c mini-hhpa.c: Remove more unused code.
5625
5626         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
5627
5628         * mini.h (MonoCompile): Remove new_ir flag.
5629
5630         * regalloc.h regalloc.c: Remove unused code.
5631
5632         * cpu-*.md: Remove more unused opcodes.
5633
5634         * simple-cee-ops.h simple-mini-ops.h: Removed.
5635
5636         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
5637         
5638 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5639
5640         * aliasing.h: Removed.
5641
5642         * *.c: Remove references to aliasing.h and inssel.h.
5643
5644         * mini.c: Remove additional unused functions.
5645
5646         * mini-ops.h cpu-*.md: Remove unused opcodes.
5647
5648 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5649
5650         Remove the old JIT code.
5651
5652         * inssel*.brg: Removed.
5653
5654         * ssa.c abcremoval.c aliasing.c: Removed.
5655
5656         * ssa2.c: Renamed to ssa.c.
5657
5658         * abcremoval2.c: Renamed to abcremoval.c.
5659
5660         * *.c: Removed all !cfg->new_ir code.
5661
5662         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
5663         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
5664
5665         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
5666         
5667 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5668
5669         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
5670         to simplify the code and cut back on the number of global symbols in the AOT
5671         file.
5672         
5673         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
5674
5675 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
5676
5677         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
5678         with the got/got_info tables.
5679
5680         * mini.h: Bump AOT file format version.
5681         
5682         * unwind.h: New file, contains definitions for stack unwinding.
5683
5684         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
5685         to cfg->unwind_ops.
5686         
5687         * aot-compiler.c: Generalize the emitting of unwind information to use the
5688         information in cfg->unwind_ops.
5689
5690         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
5691
5692         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
5693         AOT method frames. Enable writing symbols for methods by default.
5694
5695 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
5696
5697         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
5698         and make it work with vectors of element sizes 1, 2 and 4.
5699
5700         * simd-intrinsics.c: Enable getter for all vectors with element size
5701         1, 2 or 4.
5702
5703         * simd-methods.h: Add the names of other getters.
5704
5705         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
5706
5707         * cpu-x86.md: Same.
5708
5709         * mini-x86.c: Same.
5710
5711 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
5712
5713         * mini-ppc.h: portability fix.
5714
5715 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5716
5717         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
5718         buggy and will overwrite it.
5719
5720 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5721
5722         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
5723         Use it to emit local symbols for all methods so AOTed methods show up with
5724         their full name in gdb/valgrind output.
5725
5726 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5727
5728         * mini-ppc.c: portability fixes.
5729
5730 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
5733         entries out of the if (!generic_shared...) code so it is always done.
5734         (mono_class_init_trampoline): Do the patching when running under valgrind
5735         too, newer versions of valgrind have no problems with it.
5736
5737 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5738
5739         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
5740         further sections.
5741
5742 2008-11-13  Mark Probst  <mark.probst@gmail.com>
5743
5744         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
5745         filters.
5746
5747 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5748
5749         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5750
5751 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5752
5753         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5754
5755         * cpu-x86.md: Same.
5756
5757         * mini-x86.c: Same.
5758
5759         * simd-intrinsics.c: Same.
5760
5761 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5762
5763         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5764
5765 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5766
5767         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5768         to work with more Vector types.
5769
5770 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5771
5772         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5773         store the elemens directly instead of using and intermediate.
5774
5775 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5776
5777         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5778
5779         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5780         to preserve %eax for aot plt trampolines.
5781
5782         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5783         (encode_method_ref): Flag synchronized methods so they won't go through
5784         the AOT trampoline.
5785
5786         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5787         wrappers.
5788
5789         * cpu-ia64.md (jmp): Increase max length.
5790
5791 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5792
5793         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5794         open generic classes.
5795
5796         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5797
5798         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5799         box+brtrue optimization since it causes test failures on x86.
5800
5801 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5804
5805         * cpu-x86.md: Same.
5806
5807         * mini-x86.c: Same.
5808
5809         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5810         for simd ctor values. 
5811
5812         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5813         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5814
5815 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5816
5817         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5818         LogicalRightShift.
5819
5820         * simd-instrincs.c: Same.
5821
5822         * basic-simd.cs: Same.
5823
5824 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5825
5826         * ratests.cs: Add more tests.
5827
5828         * regalloc2.c (add_spill_code): Handle more corner cases.
5829
5830 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5831
5832         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5833         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5834         both the source an destination of an instruction.
5835
5836 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5837
5838         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5839         wapihandles.c: more portability changes.
5840
5841 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5842
5843         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5844         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5845         safe to execute in a signal handler and the kernel provides better
5846         the info in /proc/self/smaps. Avoid the assert on sigaction during
5847         cleanup.
5848
5849 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5852         do the bblock linking hack if it is actually needed.
5853
5854         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5855         up linking.
5856
5857         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5858         crash problem is fixed.
5859
5860         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5861         bblocks.
5862
5863         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5864         for catch clauses.
5865         (mini_method_compile): Set the starting value of next_vreg to 
5866         MAX_IREGS + MAX_FREGS when using globalra.
5867
5868         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5869         filter clauses with BB_EXCEPTION_HANDLER.
5870
5871         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5872
5873 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5874
5875         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5876         space for stdcall.  Fixes regressions on Win32.
5877
5878 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5879
5880         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5881         bblocks.
5882         (linear_scan): Remove an assert which doesn't seem to be needed.
5883
5884         * local-propagation.c (mono_local_deadce): Avoid a call to
5885         MONO_DELETE_INS which would screw up the instruction linking.
5886
5887         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5888
5889         * regalloc2.c: Upgrade to work the current JIT code.
5890
5891 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5892
5893         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5894         case.
5895
5896         * aot-runtime.c: Remove some dead code.
5897
5898         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5899         consistency.
5900         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5901
5902         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
5903         trampolines using sscanf since atoi doesn't work on large unsigned values.
5904
5905         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
5906         Initialize code_size.
5907
5908 2008-11-08  Mark Probst  <mark.probst@gmail.com>
5909
5910         * method-to-ir.c (mini_emit_inst_for_method): Make
5911         Interlocked.CompareExchange work for Int arguments on 32 bit
5912         archs, as well.
5913
5914 2008-11-07  Mark Probst  <mark.probst@gmail.com>
5915
5916         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
5917
5918 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
5919
5920         * main.c Fix MSVC build.
5921
5922         Contributed under MIT/X11 license.
5923
5924 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5925
5926         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
5927         alignment larger than 8 bytes are aligned correctly, too.
5928
5929         * mini.c: Honor the min_align field of MonoClass when laying out
5930         the stack.
5931
5932 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
5933
5934         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
5935
5936         * aot-compiler.c (emit_plt): Fix a warning.
5937         
5938         * aot-compiler.c: Implement ARM support in the binary writer.
5939
5940 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5941
5942         * basic-simd.cs: Add test for getter with byref arg.
5943         Fix the naming of a few tests.
5944         Add missing checks to a test.
5945
5946 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5947
5948         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
5949
5950         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
5951         most of the full-aot support for monitor enter/exit trampolines.
5952
5953         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
5954         enter/exit trampoline creation functions.
5955
5956         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
5957         make dist.
5958
5959 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
5960
5961         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
5962         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
5963         implement the needed functionality without adding crap to the runtime.
5964
5965 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5966
5967         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
5968         non-x86 builds.
5969
5970         * mini.c (mono_build_date): New global version holding the build date in
5971         string format.
5972         
5973         * Makefile.am (buildver.c): Generate a file containing the build date.
5974
5975         * main.c: Set the build date from the generated file.
5976
5977         * mini.c (mono_get_runtime_build_info): New helper function returning build
5978         information in a string format.
5979         
5980         * driver.c (mono_main): Print the build date in --version.
5981
5982         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
5983         file when the bind-to-runtime-version option is used.
5984
5985 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5986
5987         * simd-intrinsics.c: Fix bug when using getters and byref args. 
5988
5989 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5990
5991         * simd-methods.h: Rename prefetch methods.
5992
5993         * simd-intrinsics.c: Same.      
5994
5995 2008-11-05  Mark Probst  <mark.probst@gmail.com>
5996
5997         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
5998         sizes.
5999
6000 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6001
6002         * aot-compiler.c: Use the bundled elf header files instead of depending on
6003         the system one.
6004         
6005         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
6006         mempool.
6007
6008         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
6009         on every call.
6010
6011 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
6012
6013         * cpu-x86.md: Add store nta ops.
6014
6015         * mini-ops.h: Same.
6016
6017         * mini-x86.c: Same.
6018
6019         * mini.h: Add an enum for simd prefetch modes.
6020
6021         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
6022         of store. Use the changed code to support store nta.
6023
6024         * simd-intrinsics.c: Add prefetch ops for all vector types.
6025
6026 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6027
6028         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
6029         threads.
6030         
6031         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
6032         names.
6033
6034         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
6035         trampolines.
6036
6037 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6038
6039         * mini-x86.c: Fixed commit.
6040
6041 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * aot-compiler.c (emit_plt): Align the plt section only on x86.
6044
6045 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6046
6047         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
6048         and MONITOR_EXIT, for the ASM fastpaths.
6049
6050         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
6051         available.
6052
6053         * mini.c, patch-info.h: Signature and patch infos for
6054         Monitor.Enter/Exit trampolines.
6055
6056         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
6057
6058         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
6059         Monitor.Enter/Exit ASM fastpath for Linux.
6060
6061 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
6064
6065         * objects.cs: Add a new test.
6066         
6067         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
6068
6069         * aot-runtime.c (load_method): Run class initialization in the PLT case even
6070         if MONO_LOG_LEVEL is set.
6071
6072         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
6073
6074         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
6075
6076         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
6077         
6078         * aot-compiler.c: Change the relocation code to use virtual addresses instead
6079         of file offsets. Align the sections belonging to the data segment to 
6080         PAGESIZE.
6081
6082 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6083
6084         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
6085         elf.h. Port it to amd64.
6086
6087 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6088
6089         * driver.c: Enable SIMD by default.
6090
6091 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6092
6093         * cpu-x86.md: Add prefetch op.
6094
6095         * mini-ops.h: Same.
6096
6097         * mini-x86.c: Same.
6098
6099         * mini.h: Add an enum for simd prefetch modes.
6100
6101         * simd-methods.h: Add prefetch function names.
6102
6103         * simd-intrinsics.c: Add prefetch ops for all vector types.
6104
6105 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * aot-compiler.c (emit_bytes): Speed this up a little.
6108
6109 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
6110
6111         * aot-compiler.c: Add JIT time etc. statistics.
6112         
6113         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
6114
6115         * mini.h (MonoCompile): Add 'got_offset' field.
6116
6117         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
6118         method_got_offsets array.
6119
6120         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
6121         wrappers.
6122
6123         * aot-compiler.c (compile_method): Add generic method instances referenced
6124         by the method to the list of methods to be compiled, this is required so if
6125         A<T> references B<T>, and another assembly references A<int>, then it will
6126         also get a copy of B<int>.
6127
6128         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
6129         when checking for monitor enter/exit.
6130
6131 2008-10-30  Mark Probst  <mark.probst@gmail.com>
6132
6133         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
6134         for Monitor.Enter and Monitor.Exit if enabled.
6135
6136         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
6137         Solaris.
6138
6139 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
6140
6141         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
6142         of an OP_MOVE. Fixes #440046.
6143
6144         * basic-long.cs: Add a new test.
6145
6146 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6147
6148         * mini.h: Add synchronization note for the managed counter-part.
6149
6150         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
6151         returns the simd caps of the current cpu.
6152
6153 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6154
6155         * basic-simd.cs: Remove Console.WriteLine.
6156
6157 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6158
6159         * basic-simd.cs: New tests for Vector2ul.
6160
6161 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6162
6163         * simd-intrinsics.c: Add new vector type Vector2ul.
6164
6165 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6166
6167         * basic-simd.cs: New tests for Vector2l.
6168
6169 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6170
6171         * cpu-x86.md: Add long version of most packed int ops.
6172
6173         * mini-ops.h: Same.
6174
6175         * mini-x86.h: Same.
6176
6177         * simd-intrinsics.c: Add new vector type Vector2l.
6178
6179 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6180
6181         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
6182
6183         * simd-methods.h: Remove SN_op_BitwiseXor.
6184
6185 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6186
6187         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
6188         alignment.
6189
6190 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6191
6192         * basic-simd.cs: Test for Vector2d.
6193
6194         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
6195         value.
6196
6197 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6198
6199         * cpu-x86.md: Add double version of all packed float ops.
6200
6201         * mini-ops.h: Same.
6202
6203         * mini-x86.h: Same.
6204
6205         * simd-intrinsics.c: Add new vector type Vector2d.
6206
6207         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6208
6209         * simd-methods.h: Add Duplicate.
6210
6211 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6212
6213         * basic-simd.cs: Test for packing with signed saturation.
6214
6215 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6216
6217         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6218         found in the TYPESPEC table.
6219
6220 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6221
6222         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6223         too.
6224
6225         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6226
6227         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6228         instead of the RVA, since the RVA can be changed by tools like the cil 
6229         stripper.
6230
6231         * method-to-ir.c (mono_method_to_ir2): Ditto.
6232
6233         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6234         (deserialize_variable): Ditto.
6235
6236 2008-10-25  Martin Baulig  <martin@ximian.com>
6237
6238         * debug-mini.c (write_variable): Use
6239         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6240
6241 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6242
6243         * cpu-x86.md: Add unsigned variants of packd and packw.
6244
6245         * mini-ops.h: Same.
6246
6247         * mini-x86.h: Emit the right instruction for packd and packw.
6248         Add unsigned variants of packd and packw.
6249
6250         * simd-intrinsics.c: Packd and packw were used in place of their
6251         unsigned variants. Change that.
6252         Add intrinsics for (Signed)PackWithSignedSaturation.
6253
6254         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
6255
6256 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6257
6258         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
6259
6260 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6261
6262         * mini-ops.h: Remove dword packed add/sub with saturation ops.
6263
6264         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
6265
6266         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
6267         sse instructions.
6268
6269         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
6270
6271 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6272
6273         * method-to-ir.c, mini.c: Special casing for the synchronized
6274         wrapper for the ldtoken+GetTypeFromHandle case.
6275
6276 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6277
6278         * mini.c (mono_replace_ins): Move this to branch-opts.c.
6279
6280         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
6281         created/split bblocks.
6282
6283 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6284
6285         * mini-ops.h: Add packed signed mul high.
6286         
6287         * cpu-x86.md: Same.
6288
6289         * mini-x86.c (mono_arch_output_basic_block): Same.
6290
6291         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
6292
6293         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
6294
6295 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6296
6297         * basic-simd.cs: Tests for Vector16sb.
6298
6299 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6300
6301         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
6302
6303 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6304
6305         * mini-ops.h: Add packed signed min, max and compare greater.
6306         
6307         * cpu-x86.md: Same.
6308
6309         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
6310         saturation.
6311
6312         * simd-methods.h: Add CompareGreaterThan.
6313
6314         * simd-methods.h: Remove CompareEquals.
6315
6316         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
6317
6318         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
6319
6320         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
6321         CompareEqual.
6322
6323 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         * basic-simd.cs: Fix tests due to change in the API.
6326
6327 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6328
6329         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
6330
6331 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6332
6333         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
6334
6335         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
6336         inst_offset as this has invalid values for LDADDR.
6337
6338 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6341
6342         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
6343
6344 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
6347         for accessing field->data.
6348
6349 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6350
6351         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6352
6353 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6354
6355         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
6356
6357         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
6358
6359 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6360
6361         * dominators.c (mono_compute_natural_loops): Allocate GList enties
6362         from the cfg mempool.
6363
6364 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6365
6366         * basic-simd.cs: Tests for new methods in Vector8us.
6367
6368 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6369
6370         * mini-ops.h: Add multiply and store high.
6371         
6372         * cpu-x86.md: Same.
6373
6374         * mini-x86.c (mono_arch_output_basic_block): Same.
6375
6376         * simd-methods.h: Same.
6377
6378         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
6379         and CompareEqual.
6380
6381 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6382
6383         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
6384         mono_class_setup_vtable ().
6385
6386         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
6387         mono_class_get_vtable_entry () for accessing klass->vtable.
6388
6389         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
6390
6391         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
6392         found.
6393
6394         * method-to-ir.c (mono_save_token_info): Don't save references made from
6395         wrappers.
6396
6397         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
6398         of generic instances.
6399
6400         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
6401
6402 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6403
6404         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
6405         OP_JMP depends on the method signature.  Calculate it properly.
6406
6407 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6408         
6409         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
6410         called directly.
6411
6412         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
6413         instances.
6414         (emit_extra_methods): Add another table mapping method indexes to 
6415         offsets in the extra_method_info table.
6416
6417         * mini.h: Bump AOT file format version.
6418         
6419         * aot-runtime.c: Merge most of the code from mono_aot_get_method
6420         and mono_aot_get_method_from_token () into one function.
6421
6422 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6423
6424         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
6425         separate counter.
6426
6427 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
6428
6429         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
6430         methods.
6431
6432         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
6433         disable_aot.
6434
6435         * mini.c (mono_patch_info_equal): Compare the generic context as well.
6436
6437         * mini.h: Bump aot file format version.
6438
6439         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
6440         AOT file can contain native code for methods which are not in the METHOD
6441         table. Generate code for non-sharable generic instances of generic methods
6442         found in the METHODSPEC table.
6443         
6444         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
6445         encoding generic type handles.
6446
6447         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
6448         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
6449
6450         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
6451         macros + MONO_ADD_INS.
6452
6453         * mini.c (mono_jump_info_token_new2): New function which takes a generic
6454         context as well.
6455
6456         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
6457
6458         * mini.h: Bump aot file format version.
6459
6460         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
6461
6462 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6463
6464         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
6465         platforms, with definable stack alignment value.  Set to 16 now
6466         for all platforms.
6467
6468         * mini.c, mini.h, driver.c: Command line option for disabling
6469         stack alignment.
6470
6471 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6472
6473         * basic-simd.cs: Tests for new methods in Vector4ui.
6474
6475 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6476
6477         * mini-ops.h: Add packed int shuffle.
6478         
6479         * cpu-x86.md: Same.
6480
6481         * mini-x86.c (mono_arch_output_basic_block): Same.
6482
6483         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
6484         extract mask, max, min, shuffle.
6485
6486         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
6487
6488 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6489
6490         * basic-simd.cs: Tests for new methods in Vector8us.
6491
6492 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6493
6494         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
6495         RuntimeTypeHandle, not a TypedReference.
6496
6497 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
6498
6499         * simd-intrinsics.c: remove relocations.
6500
6501 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
6502
6503         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
6504         optimizations from the x86 backend.
6505
6506 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
6507
6508         * simd-methods.h, simd-intrinsics.c: debloat method names and
6509         prepare for no relocations.
6510
6511 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6512
6513         * mini-ops.h: Add packed min/equal and sum of absolute differences.
6514         
6515         * cpu-x86.md: Same.
6516
6517         * mini-x86.c (mono_arch_output_basic_block): Same.
6518
6519         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
6520         extract mask, max, min and sum of absolute differences.
6521
6522         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
6523         method name.
6524
6525 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6526
6527         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
6528         Renamed one test for consistency.
6529
6530 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6531
6532         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
6533         fix to the code that deal with other blocks.
6534
6535 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6536
6537         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
6538
6539 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6540
6541         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
6542         that deals with vreg interference. Explicitly check for OP_LDADDR to be
6543         able to process the source reg.
6544
6545 2008-10-16  Martin Baulig  <martin@ximian.com>
6546
6547         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
6548
6549         * inssel.brg: Add `OP_HARD_NOP'.
6550
6551         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
6552
6553         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
6554         `OP_HARD_NOP' instruction when running inside the debugger.
6555
6556         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
6557         `OP_HARD_NOP' instruction when running inside the debugger.
6558
6559 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6560
6561         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
6562         now works. The issue with the regalloc tripping up no longer
6563         happens.
6564
6565         * simd-intrinsics.c (load_simd_vreg): Same.
6566
6567 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6568         
6569         * basic-simd.cs: Tests for new Vector8ui methods.
6570
6571 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6572
6573         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
6574         only for type. This fixes crashes where MonoInst::klass is checked
6575         for ops of type != VTYPE or OBJ.
6576
6577         * simd-intrinsics.c (load_simd_vreg): Same.
6578
6579 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6580
6581         * mini-ops.h: Add ops for packed shuffle/max/avg and
6582         extract mask.
6583         
6584         * cpu-x86.md: Same.
6585
6586         * mini-x86.c (mono_arch_output_basic_block): Same.
6587
6588         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
6589         extract mask.
6590
6591         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
6592         to emit extract mask op.
6593
6594         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
6595         to emit word shuffles.
6596
6597 2008-10-15  Mark Probst  <mark.probst@gmail.com>
6598
6599         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
6600         the largest alignment needed by a variable, but at least
6601         sizeof(gpointer).
6602
6603 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6604
6605         * basic-simd.cs: Tests for the fixes in the last commit.
6606
6607 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6608
6609         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
6610         no longer handles STACK_PTR input.
6611
6612         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
6613
6614         * simd-intrinsics.c (load_simd_vreg): New function that works like 
6615         get_simd_vreg   but handles STACK_PTR input.
6616
6617         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
6618         as the input can be an arbitrary pointer.
6619
6620         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
6621         LDADDR local optimization directly otherwise use a store op.
6622
6623 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6624
6625         * basic-simd.cs: Tests for dup low and dup high.
6626
6627 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6628
6629         * mini-ops.h: Add dup low and dup high ops.
6630         
6631         * cpu-x86.md: Same.
6632
6633         * mini-x86.c (mono_arch_output_basic_block): Same.
6634
6635         * simd-intrinsics.c (vector4f_intrinsics): Same.
6636
6637 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6638
6639         * basic-simd.cs: Tests for recently added functionality.
6640
6641 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6642
6643         * mini-ops.h: Add remaining sse1 fp ops.
6644         
6645         * cpu-x86.md: Add remaining sse1 fp ops.
6646
6647         * mini-x86.c (mono_arch_output_basic_block): Same.
6648
6649         * mini.h: Add enum for simd FP compare conditions.
6650
6651         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
6652
6653         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
6654         so the backed can generate the appropriate op.
6655
6656 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6657         This patch squeese one more byte from the SimdIntrinsc struct.
6658
6659         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
6660         a a shift amount intead of simply or'ing it.
6661
6662         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
6663
6664         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
6665         byte so we can have an aditional flags field without increasing struct size.
6666
6667         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
6668         against the simd_supported_versions bitmask.
6669
6670         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
6671
6672 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
6673
6674         * mini.c: remove rawbuffer code (the only use here is unsafe because
6675         it takes locks during signal handling and the kernel now provides much
6676         better info in proc/pid/smaps these days).
6677
6678 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
6679
6680         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
6681         OP_X86_PUSH_OBJ. Fixes #434620.
6682
6683         * objects.cs: Add a test.
6684         
6685 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
6688         that the packuswb/packusdw don't work with unsigned numbers for what
6689         would be negative numbers in signed format.
6690
6691         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
6692         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
6693
6694         * mini-ops.h: Add doubleword forms of many ops and packing ones.
6695
6696         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
6697
6698         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
6699
6700         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
6701
6702         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
6703         add more ops.
6704
6705         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
6706         version as the enum in mini.h.
6707
6708         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
6709         for sse3 ops, check the simd_version field if present. This way the code
6710         works with all versions of sse.
6711
6712 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6713
6714         * simd-intrinsics.c: Fixed intrinsic name typo.
6715
6716         * mini.h: Added missing simd exported function.
6717
6718         * basic-simd.cs: Added tests for Vector4ui.
6719         Fixed broken test for Vector16b.
6720
6721 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
6722
6723         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
6724         the max length to 64.
6725
6726 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6727
6728         * method-to-ir.c: Only do the fast virtual generic method call for
6729         non-wrapper methods.
6730
6731         * mini.h, mini-trampolines.c: The new generic virtual remoting
6732         trampoline handles virtual method calls via the vtable (as done by
6733         the fast virtual generic method calls) to remoting proxies.
6734
6735         * mini.c (mono_jit_create_remoting_trampoline): For generic
6736         methods reate a generic virtual remoting trampoline.
6737
6738         * mini-amd64.h: Enable fast virtual generic method calls again.
6739
6740 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6741
6742         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
6743         restore registers when doing tail calls.
6744
6745 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6746
6747         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
6748         Vector4ui.
6749
6750 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6751
6752         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6753
6754 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6755
6756         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6757
6758 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6759
6760         * basic-simd.cs: Retrofit for API changes.
6761
6762 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6763
6764         * mini-ppc.c: Handle integer stack arguments for tail calls.
6765
6766 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6767
6768         * optflags-def.h: Removed sse3 optimization.
6769
6770         * driver.c: Same.
6771
6772         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6773         sse3.
6774
6775         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6776
6777         * mini.h: Added enumeration with simd versions.
6778
6779         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6780         for detecting SSE3.
6781
6782         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6783
6784         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6785
6786 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6787
6788         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6789
6790         * basic-simd.cs: Fixed test naming.
6791
6792 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6793
6794         * mini-ops.h: Added ops for packed and saturated math, shifts
6795         and packing/unpacking.
6796
6797         * cpu-x86.md: Added descriptors for the above ops.
6798
6799         * mini-x86.c: Added code to emmit the above ops.
6800
6801         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6802
6803 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6804
6805         * aot-compiler.c (compile_method): Enable AOT for generic code.
6806
6807         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6808
6809 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6810
6811         * mini.c: add a workaround for a common screwup that ends up blamed
6812         to mono (other processes blocking signal delivery).
6813
6814 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6815
6816         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6817         in the LDFLD/STFLD opcodes. Fixes #432673.
6818
6819         * iltests.il.in: Add a new test.
6820
6821 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6822
6823         * mini-arm.c: attach the thread in unmanaged->managed transitions
6824         using delegates (bug #433148).
6825
6826 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6827
6828        * basic-simd.cs: Use new ShuffleSel constants.
6829
6830 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6831
6832         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6833
6834         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6835         only disable simd intrinsics if no sse2 is detected.
6836
6837         * optflags-def.h: Added sse3.
6838
6839         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6840         is disabled.
6841
6842 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6843
6844         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6845         when adding delegate-invoke wrappers.
6846
6847 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6848
6849         * Makefile.am: Reenable the simd tests.
6850
6851 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6852
6853         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6854           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6855           other vreg is allocated to that hreg.
6856
6857         Contributed under MIT/X11 license.
6858
6859 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6860
6861         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6862         yet checked in.
6863
6864 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6865
6866         * basic-simd.cs: New test suite for SIMD intrinsics.
6867
6868         * Makefile.am: Added new tests.
6869
6870 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6871
6872         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6873
6874         * mini-ops.h: Same.
6875
6876         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6877
6878         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6879         using SSE2 aware opcodes.
6880
6881         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6882         is enabled, this code path is only reachable if conversion ops are emmited after
6883         mono_method_to_ir.
6884
6885         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6886
6887         This optimization saves 6 bytes per conversion against the old version.
6888
6889 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6890
6891         * aot-compiler.c (compile_method): Don't skip methods referencing 
6892         generic methods without a corresponding entry in token_info_hash, since
6893         encode_method_ref () can handle all generic methods now.
6894
6895         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6896         generic context is set.
6897         
6898         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6899         generic sharing of LDTOKEN.
6900
6901 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6902
6903         * mini-amd64.h: Temporarily disabled fast virtual generic method
6904         calls because it breaks the System.Runtime.Remoting tests.
6905
6906 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6907
6908         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
6909
6910         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
6911         so inlining actually works.
6912         (check_inline_caller_method_name_limit): Ditto.
6913
6914 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
6915
6916         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
6917         64 bit safety (from Olaf Hering and Andreas Farber).
6918
6919 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6920         
6921         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
6922         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
6923         unused virtual call support code.
6924
6925         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
6926         
6927         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
6928         which can't use aot trampolines.
6929         (decode_patch): Don't create aot trampolines for methods which can't use
6930         them.
6931
6932         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
6933         use aot trampolines.
6934
6935         * mini.h: Bump AOT image format version.
6936         
6937 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
6940         to save_token_info () since cmethod is inflated for constrained calls.
6941
6942         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
6943
6944 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
6945
6946         * Makefile.am: Add build rules for ppc64.
6947         This avoids the build failing at pedump with unresolved symbols
6948         due to lack of arch_sources. Instead it will now fail earlier
6949         due to lack of cpu-ppc64.md.
6950
6951         Contributed under MIT/X11 license.
6952
6953 2008-10-04  Mark Probst  <mark.probst@gmail.com>
6954
6955         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
6956         tail calls.
6957
6958         * iltests.il.in: Add test case for tail call with many arguments.
6959
6960 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6961
6962         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
6963         to the fast virtual generic method code until the aot case is fixed.
6964
6965 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6966
6967         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
6968
6969 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6970
6971         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
6972         thunks.
6973
6974 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6975         
6976         * simd-intrinsics.c: Forgot to add this one.
6977
6978         * mini-codegen.c: Fix macro in case SIMD is not supported.
6979
6980 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6981         
6982         This patch land initial JIT support for simd intrinsics.
6983
6984         * mini-x86.h: Added new define to make --enable_minimal work on x86.
6985
6986         * Makefile.am: Added simd-intrinsics.c
6987
6988         * simd-intrinsics.c: New file with simd instrinsic related
6989         code.
6990
6991         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
6992
6993         * cpu-x86.md: Add simd related instructions.
6994
6995         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
6996
6997         * driver.c: Added two new --regression variants.
6998
6999         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
7000
7001         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
7002
7003         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
7004         extract some complicated logic to helper functions.
7005
7006         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
7007
7008         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
7009
7010         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
7011         the specialized simplification pass.
7012
7013         * method-to-ir.c (mono_spill_global_vars): Use new macro.
7014
7015         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
7016
7017         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
7018         table.
7019
7020         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
7021         if MONO_ARCH_NEED_SIMD_BANK is defined.
7022
7023         * mini-ops.h: Added the new simd ops.
7024
7025         * mini-x86.c: Added mono_arch_xregname.
7026
7027         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
7028
7029         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
7030
7031         * mini-x86.h: Define simd related MONO_ARCH macros.
7032
7033         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
7034
7035         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
7036
7037         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
7038         MONO_CLASS_IS_SIMD to deal with simd related IR.
7039
7040         * mini.h (MonoInst): Added spill_var to the backend union.
7041
7042         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
7043
7044         * mini.h: Added forward declarations of the new simd fuctions.
7045
7046         * optflags-def.h: Added new optimization names SIMD.
7047
7048         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
7049
7050         * regalloc.h: Added support for working with 3 register banks.
7051
7052         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
7053
7054         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
7055
7056 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
7057
7058         * mini-exceptions.c: remove 64 bit related ifdef clutter.
7059
7060 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7061
7062         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
7063         instead of one on 64 bit systems.
7064
7065         * method-to-ir.c: Remove unused includes.
7066
7067 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
7068
7069         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
7070         cfg->used_int_regs, since the two are different on arm.
7071
7072 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7073
7074         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
7075         mono_method_get_vtable_index() to get the vtable index.
7076
7077 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7078
7079         * method-to-ir.c (mono_method_to_ir2): Don't create native
7080         wrappers for array methods, because they're never called (and if
7081         they were called they wouldn't work).
7082
7083 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7084
7085         * method-to-ir.c (mono_method_to_ir2): Array methods are
7086         special-cased and must not be invoked indirectly via the (M)RGCTX
7087         when generic sharing is turned on.  Fixes #431413.
7088
7089 2008-10-01  Mark Probst  <mark.probst@gmail.com>
7090
7091         * method-to-ir.c: When generic sharing is active, call
7092         non-interface virtual generic methods via the standard trampoline.
7093
7094         * mini-trampolines.c: Handle virtual generic shared methods.
7095
7096         * mini.h, mini-x86.c, mini-x86.h: New argument for
7097         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
7098         method thunks and which is the trampoline to call if the lookup
7099         fails.  Enable the virtual generic method thunk for x86.
7100
7101         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
7102         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
7103         argument but assert that it's NULL, because these archs don't yet
7104         implement the virtual generic method thunk.  Changes in the IMT
7105         thunk data structures.
7106
7107 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
7108
7109         * aot-compiler.c (emit_globals): Avoid invalid characters in
7110         the static linking symbol.
7111
7112         * objects.cs: Add a test for the range check optimization. Fix warnings.
7113
7114         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
7115         optimization from the current JIT.
7116
7117         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
7118         later in decompose_array_access_opts () to allow more optimizations.
7119
7120         * method-to-ir.c (mono_handle_soft_float): Rename this to 
7121         mono_decompose_soft_float () for consistency.
7122
7123         * mini-ops.h: Fix arguments of OP_STRLEN.
7124
7125         * method-to-ir.c (save_cast_details): Extract the cast details saving code
7126         into a separate function.
7127         (reset_cast_details): Ditto.
7128         (handle_unbox): Save cast details. Fixes #431254.
7129
7130         * method-to-ir.c: Remove some obsolete FIXMEs.
7131
7132 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7133
7134         * ir-emit.h (alloc_dreg): Write a warning before crashing.
7135
7136 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7137
7138         * mini-codegen.c: More work on macros to make them
7139         ready for multiple regbanks.
7140
7141 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7142
7143         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
7144
7145         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
7146
7147 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7148
7149         * mini-codegen.c (mono_spillvar_offset): Proper support for
7150         multiple regbanks.
7151
7152 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7153
7154         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
7155         the stack overflow changes.
7156
7157 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7158
7159         * mini-codegen.c: Make all bank macros depend on reg_bank.
7160
7161         * mini-codegen.c (mono_local_regalloc): Make free mask
7162         initialization regbank aware.
7163
7164 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7165
7166         * mini-codegen.c (mono_local_regalloc): Extract callee
7167         mask selection to a function and make it regbank aware.
7168
7169 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7170
7171         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
7172         code to deal with many regbanks.
7173
7174 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7175
7176         * mini-codegen.c: More fp->regbank changes.
7177
7178 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7179
7180         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
7181         of a hardcoded constant.
7182
7183 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7184
7185         * method-to-ir.c (type_from_stack_type): Fix typo.
7186
7187 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
7188
7189         * mini-ia64.c (emit_move_return_value): Convert float return values to
7190         double.
7191
7192         * objects.cs: Add a new test.
7193         
7194         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
7195         VARARG methods to fix an assert later.
7196
7197         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
7198         end so it at least compiles.
7199
7200 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
7203
7204 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
7205
7206         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7207         optimization to a new function (emit_optimized_ldloca_ir) and enable
7208         it for both ldloca and ldloca_s.
7209
7210 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7211
7212         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7213         gshared CASTCLASS code.
7214
7215         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7216         amd64, where the libc stack unwinder encounters stack frames referring to
7217         native code in unmapped memory.
7218
7219         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7220         sharing.
7221
7222         * generics.cs: Add new test.
7223
7224 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7225
7226         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7227         add a check that one of the ARM_FPU_ constants is defined.
7228
7229         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7230         
7231         * mini-exceptions.c: Fix build on non-altstack platforms.
7232
7233         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7234         sharing of vtypes.
7235
7236         * ir-emit.h: Add a comment to NEW_PCONST.
7237
7238         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7239
7240         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
7241
7242         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
7243         after the changes to MonoJitDomainInfo.
7244
7245 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7246
7247         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
7248
7249 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7250
7251         * mini-ppc.c: Compiler warning fixes.
7252
7253 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7254
7255         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
7256         for pinvokes.
7257
7258 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7259
7260         * exceptions-ppc.c, mini-ppc.h: Compile
7261         mono_arch_handle_altstack_exception() on Darwin, too.
7262
7263 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7264
7265         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
7266         work on archs which don't have generic sharing implemented, only
7267         without the vtable_arg.
7268
7269 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7270
7271         * mini.c: Added comment explaining why delegate ctor icall
7272         wrappers are compiled.
7273
7274 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7275
7276         * mini.c: Don't produce trampolines to delegate ctor icall
7277         wrappers but compile them upfront.
7278
7279 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7280
7281         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
7282         runtime-set function when going back to managed code. Currently this
7283         is used to set back the protection on the soft ovf pages and/or to
7284         throw the stack overflow exception that happened in unmanaged code.
7285
7286 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7287
7288         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
7289         runtime-set function when going back to managed code. Currently this
7290         is used to set back the protection on the soft ovf pages and/or to
7291         throw the stack overflow exception that happened in unmanaged code.
7292
7293 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7294
7295         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
7296         the support code for restoring stack protection after stack overflows
7297         that happen in unmanaged code. Don't set the exec permission on the
7298         soft overflow area.
7299
7300 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
7303         delegate->method_ptr is set. Fixes #428054.
7304
7305 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * tests.cs: Rename to ratests.cs.
7308
7309         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
7310         emit_get_rgctx_... functions.
7311
7312 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7313
7314         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
7315
7316 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7317
7318         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
7319         before asserting that method is sharable.
7320
7321 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7322
7323         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
7324         whether method needs a static RGCTX wrapper used instead of
7325         complex conditions.
7326
7327         * generic-sharing.c, mini.h: A few functions moved to
7328         metadata/generic-sharing.c.
7329
7330 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7331
7332         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
7333         Generic code sharing for value types, which essentially means
7334         treating value type methods like static methods.  The RGCTX is
7335         passed in the same way.
7336
7337 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7338
7339         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
7340         opcode when creating multi-dimensional arrays of open types.
7341
7342         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
7343         open generic types.
7344
7345         * generics.cs: Add a test.
7346
7347         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
7348
7349 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7350
7351         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
7352
7353         * mini.c (mini_method_compile): Set it when running under the debugger. 
7354
7355         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
7356         vreg optimization if the flag is set.
7357
7358         * driver.c (mono_main): Add --attach= option to pass options to
7359         the attach agent.
7360
7361         * mini.c (sigquit_signal_handler): Start the attach agent.
7362
7363         * ssapre.c: Disable this to save space since it is not yet ported to
7364         linear IR.
7365
7366         * regalloc2.c: Disable this to save space.
7367
7368         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
7369
7370 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
7371
7372         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
7373         the -v option useful again.
7374
7375 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7376
7377         * mini-amd64.c (mono_arch_output_basic_block): Add support for
7378         --break-at-bb.
7379
7380         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
7381         arrays of arrays. Fixes #428406.
7382
7383         * method-to-ir.c (mini_emit_castclass): Ditto.
7384
7385         * objects.cs: Add new test.
7386         
7387 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
7388
7389         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
7390         was wrong at it choked against target_type_is_incompatible for byref types.
7391
7392 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
7395         places.
7396
7397 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
7398
7399         * mini-exceptions.c: update a few more exceptions-related counters.
7400
7401 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
7402
7403         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
7404         new functions to allocate from persistent mempools.
7405
7406 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7407
7408         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
7409         multiple register banks in the future.
7410
7411         * mini-codegen.c (mono_local_regalloc): Fix a warning.
7412
7413 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
7414
7415         * mini.c (type_to_eval_stack_type): Remove duplicated function.
7416
7417         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
7418
7419         * mini.h: Export type_to_eval_stack_type.
7420
7421         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
7422         is only ins->klass of byref types.
7423
7424 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
7425
7426         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
7427         (mini_emit_memcpy2): Ditto.
7428
7429         * mini-amd64.c: Fix a warning.
7430
7431 2008-09-21  Mark Probst  <mark.probst@gmail.com>
7432
7433         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
7434         linking.
7435
7436 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
7437
7438         * method-to-ir.c: Extract stloc micro-optimization to a
7439         function and apply it to all cases.
7440
7441 2008-09-19  Mark Probst  <mark.probst@gmail.com>
7442
7443         * method-to-ir.c: Don't fail generic code sharing in cases we
7444         already support.
7445
7446 2008-09-18  Mark Probst  <mark.probst@gmail.com>
7447
7448         * mini-ppc.c: Handle structs in tailcalls on Darwin.
7449
7450 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
7451
7452         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
7453         implementation.
7454
7455 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
7456
7457         * trace.c: make tracing more useful and correct, with per-thread
7458         id and indent info.
7459
7460 2008-09-15  Mark Probst  <mark.probst@gmail.com>
7461
7462         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
7463         doing a method call and the argument is an R4.
7464
7465 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
7466
7467         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
7468         generic methods.
7469
7470 2008-09-13  Mark Probst  <mark.probst@gmail.com>
7471
7472         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
7473
7474 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
7475
7476         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
7477         (MONO_JUMP_TABLE_FROM_INS): Ditto.
7478
7479 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7480
7481         * driver.c: Add a --agent argument (not supported yet) to load managed
7482         agent assemblies before loading the main assembly, similarly to how the
7483         Java VM handles agents.
7484
7485 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7486
7487         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
7488         function to do stack layout of local variables.
7489
7490 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7491
7492         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
7493         calculation.
7494
7495 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
7498         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
7499         JIT if DISABLE_JIT is defined.
7500
7501         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
7502         defined.
7503
7504 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7505
7506         * iltests.il.in: Disable the fconv test on PPC (the result is
7507         undefined according to ECMA).
7508
7509 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7510
7511         * iltests.il.in: Enable tail call tests for PPC.
7512
7513         * mini.h: Add variable for storing incoming valuetype argument
7514         addresses for tail calls.
7515
7516         * mini-ppc.c: Implement valuetype arguments and return values for
7517         tailcalls on Linux.
7518
7519 2008-09-09  Mark Probst  <mark.probst@gmail.com>
7520
7521         * mini-ppc.c: Partially implement tail calls (struct arguments and
7522         return values not supported).
7523
7524         * method-to-ir.c: Enable tail calls on PPC.
7525
7526 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
7527
7528         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
7529         runtime-invoke wrappers to work around the problem of them getting
7530         assigned to a random class.
7531
7532         * aot-runtime.c (mono_aot_get_method): Ditto.
7533         
7534 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
7535
7536         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
7537         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
7538
7539 2008-09-07  Mark Probst  <mark.probst@gmail.com>
7540
7541         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
7542         until they're implemented properly.
7543
7544         * exceptions-ppc.c: Use arch-independent exception-handling code
7545         instead of custom one.
7546
7547         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
7548         for Linear IR.
7549
7550         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
7551
7552         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
7553         applies when __powerpc__ is defined.
7554
7555 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
7556
7557         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
7558         methods to their code to avoid computing the full name of wrappers and
7559         doing a lookup in a string hash table.
7560
7561 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7562
7563         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
7564         we identify bblocks before method_to_ir () is ran.
7565
7566         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
7567         Also avoid optimizing branches pointing to themselves.
7568
7569         * mini.c (mini_method_compile): Ditto. Fixes #422947.
7570
7571 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
7572
7573         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
7574
7575 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7576
7577         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
7578         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
7579         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
7580         'buf'.
7581
7582         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
7583         jumped to the same entry in plt_jump_table.
7584
7585 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
7586
7587         * method-to-ir.c (initialize_array_data): Handle field with RVA from
7588         dynamic images.
7589
7590 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
7591
7592         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
7593         other assignment can be if converted. Saves 1.5% on corlib size and fixes
7594         #421807.
7595
7596 2008-08-29  Geoff Norton  <gnorton@novell.com>
7597
7598         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
7599         segment, and doesn't properly handle .space as .text.  Fixes
7600         AOT Mach/ARM
7601
7602 2008-08-29  Geoff Norton  <gnorton@novell.com>
7603
7604         * mini.c: Disable the mach exception handler when running on 
7605         ARM
7606
7607 2008-08-29  Geoff Norton  <gnorton@novell.com>
7608
7609         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
7610         globals on Darwin/ARM
7611
7612 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
7615         since too many things depend on it. Instead, call 
7616         mono_runtime_set_no_exec ().
7617         
7618         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
7619         the new JIT.
7620
7621         * aot-compiler.c: Add an 'asm-only' AOT option.
7622
7623         * mini.c: Avoid initializing the runtime when doing AOT compilation.
7624                 
7625         * aot-compiler.c (compile_method): Disable gshared support for now as it
7626         doesn't yet work.
7627
7628 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7629
7630         * mini-amd64.h : Fix a compiler warning.
7631
7632         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
7633           Changed to use a callback function to retrieve the unwind info.
7634           This avoids problems observed when code blocks were removed by
7635           unloading an app domain.
7636
7637         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
7638           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
7639           to work properly.
7640
7641         Contributed under MIT/X11 license.
7642
7643 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7644
7645         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
7646           case to keep the stack aligned to 8.
7647
7648         Contributed under MIT/X11 license.
7649
7650 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
7651
7652         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
7653         avoid repeated linear searches.
7654
7655 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
7656
7657         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
7658         methods it can't handle.
7659         
7660         * aot-compiler.c (add_method): Avoid adding a method twice.
7661         (add_wrappers): Add runtime invoke wrappers for all methods.
7662
7663         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
7664         function to create an aot-compatible version of this trampoline.
7665
7666         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
7667
7668 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
7671
7672         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
7673         with a generic sharing failure.
7674
7675         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
7676
7677         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
7678         CEE_RETHROW. Fixes #419634.
7679
7680         * mini.c (mono_method_to_ir): Ditto.
7681
7682         * exceptions.cs: Add a new test.
7683         
7684         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
7685         to mono_type_stack_size_internal () since some callers might not pass in
7686         an rgctx.
7687
7688         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
7689         instrument_prolog. Fixes #419878.
7690
7691         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
7692         doubles in soft float mode volatile.
7693
7694 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
7695
7696         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
7697
7698         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
7699         to handle soft float correctly.
7700
7701         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
7702         the fast path.
7703
7704         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
7705
7706         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
7707         to sp, since the generics catch code requires it.
7708
7709         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
7710         copying.
7711
7712         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
7713         mono_arch_emit_imt_argument ().
7714
7715         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
7716
7717         * mini-arm.c tramp-arm.c: Generic sharing updates.
7718
7719 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
7720
7721         * mini-arm.c: Fix the arm build.
7722
7723         * generic-sharing.c (mini_type_get_underlying_type): New helper function
7724         handling enums, generic instances and generic sharing.
7725         (mini_type_stack_size_full): Ditto.
7726
7727         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
7728         
7729         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
7730
7731         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
7732
7733         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
7734         trampolines.
7735
7736         * mini-arm.c: Various small generic sharing changes.
7737
7738         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
7739         this for x86.
7740         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
7741         custom code.
7742
7743         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
7744         helper function to return a generic class init trampoline.
7745
7746         * method-to-ir.c mini.c: Use it.
7747         
7748         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7749         arch-specfic function to return a generic class init trampoline.
7750
7751         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7752         the GENERIC_CLASS_INIT custom code.
7753
7754         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7755         a fatal error, not a sharing failure.
7756
7757         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7758         needed.
7759
7760         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7761         trampoline argument from MONO_ARCH_VTABLE_REG.
7762
7763         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7764         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7765         argument, and pass the vtable in VTABLE_REG.
7766
7767         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7768         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7769         argument, and pass the vtable in VTABLE_REG.
7770         (mono_arch_create_trampoline_code_full): Remove some special casing for
7771         the rgctx fetch trampoline.
7772
7773         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7774         Fixes #419273.
7775
7776         * iltests.il: Add a test for it.
7777
7778 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7779
7780         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7781
7782         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7783         no longer needed.
7784
7785         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7786         use mono_jit_info_table_find () to avoid recursion.
7787         (mono_delegate_trampoline): Add a sync wrapper here.
7788
7789         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7790         here.
7791
7792         * mini.c (mono_method_to_ir): Ditto.
7793         
7794         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7795         add_sync_wrapper argument. Don't add a sync wrapper here.
7796         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7797
7798         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7799         
7800 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7801
7802         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7803           of nonvolatile registers back from MonoContext to CONTEXT.
7804
7805         Contributed under MIT/X11 license.
7806
7807 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7808
7809         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7810           arguments on Winx64 there are only 4 argument registers.  For this
7811           logic to work the last argument must be pulled from the stack.  
7812
7813         Contributed under MIT/X11 license.
7814
7815 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7816
7817         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7818
7819         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7820         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7821         encode/decode_method_ref ().
7822
7823         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7824
7825         * aot-runtime.c (decode_patch): Ditto.  
7826
7827         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7828         MONO_PATCH_INFO_METHOD.
7829
7830         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7831         MonoGenericJitInfo.
7832
7833         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7834         MonoGenericJitInfo.
7835
7836         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7837
7838         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7839         one from the caller.
7840
7841         * aot-runtime.c (decode_generic_inst): New function to decode and
7842         return a interned generic inst.
7843         (decode_klass_ref): Use it.
7844         (decode_method_ref): Ditto.
7845
7846         * aot-compiler.c (emit_exception_debug_info): Save 
7847         jinfo->has_generic_jit_info too.
7848
7849 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7850
7851         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7852
7853         * iltests.il.in: Add a test for fconv_to_i.
7854
7855         * liveness.c: Disable the liveness2 pass for now to save space.
7856
7857         * regalloc2.c: Include mempool-internals.h to fix warnings.
7858
7859         * aot-compiler.c (encode_method_ref): Encode the context of generic
7860         instance methods.
7861
7862         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7863         the context saved in the aot file.
7864
7865         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7866
7867         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7868
7869         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7870         volatile so they won't be optimized away.
7871
7872 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7873
7874         * ssa.c:
7875         * ssa2.c:
7876         * mini.c:
7877         * regalloc2.c:
7878         * dominators.c: Remove duplicated functions that now are in
7879         mempool-internals.h.
7880
7881 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7882
7883         * aot-compiler.c: Fix warnings.
7884
7885         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7886
7887         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7888
7889         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7890         as the patch type.
7891
7892         * mini.c (mono_resolve_patch_target): Ditto.
7893         
7894         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7895         (encode_klass_ref): Add support for encoding VARs/MVARs.
7896
7897         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7898
7899         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7900         the handling of the got entries into a separate 'decode_got_entry' function.
7901         Add support for RGCTX_FETCH.
7902
7903         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
7904         clobbered by the trampoline code.
7905
7906         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
7907         not clobbered by the indirect calling code.
7908
7909 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7910
7911         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
7912         to fix the build.
7913
7914 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
7915
7916         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
7917         signature using the compilation mempool otherwise we would leak it.
7918
7919 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7920
7921         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
7922         mono_emit_abs_call ().
7923
7924         * patch-info.h: Add GENERIC_CLASS_INIT.
7925
7926         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
7927
7928         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
7929         as their target as a near call.
7930
7931         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
7932         ABS handling code.
7933         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
7934
7935         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
7936         call to a runtime function described by a patch.
7937
7938         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
7939         mono_emit_abs_call, this has the advantage that the ABS handling code in
7940         mono_codegen () can handle them both, and can handle other stuff in the
7941         future without additional code.
7942
7943         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
7944         entry.
7945         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
7946         abs addresses.
7947
7948         * mini.h: Add missing bblock related prototypes.
7949
7950         * mini.h (MonoCompile): Remove unused reverse_inst_list and
7951         reverse_inst_list_len fields.
7952
7953         * mini.c: Refactor this file a bit by moving branch optimizations to 
7954         branch-opts.c.
7955
7956         * method-to-ir.c: Merge generic sharing changes missed earlier.
7957
7958         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
7959
7960         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
7961         shared patches. Process METHODCONST as a shared patch.
7962
7963         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
7964         as it crashes on the 2.0 mscorlib.
7965
7966         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
7967         to cause crashes.
7968         
7969         * aot-compiler.c: Use is_plt_patch () in a few additional places.
7970         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
7971         by IMT.
7972
7973         * aot-compiler.c: Reorganize the got handling code to be a bit more
7974         understandable.
7975
7976 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7977
7978         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
7979         mono_patch_info_equals/hash, and use it to massively simplify
7980         get_plt_index ().
7981
7982         * mini.c (mono_patch_info_hash): Simplify this and add support for
7983         more patch types.
7984
7985         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
7986
7987         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
7988         handling code, since an offset is not enough to identify a trampoline.
7989
7990         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
7991
7992 2008-08-17  Mark Probst  <mark.probst@gmail.com>
7993
7994         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
7995
7996         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
7997
7998         * mini-ops.h: Argument and result types for OVF_CARRY ops.
7999
8000         * decompose.c: PPC decompositions for various ops.
8001
8002         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
8003
8004 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8005
8006         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
8007         call the generic trampoline code using a call, instead of a jump, to
8008         remove some special casing from the generic trampoline code.
8009
8010         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
8011         (mono_codegen): Ditto.
8012
8013         * aot-compiler.c aot-runtime.c: Ditto.
8014
8015         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
8016
8017         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
8018         helper function to find the offset corresponding to a lazy fetch trampoline.
8019
8020         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
8021         when doing generic sharing.
8022
8023         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
8024         places.
8025         
8026         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
8027         mini-trampolines.c to be with the other trampoline creation functions.
8028
8029         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
8030         as it is equal to method->signature in most cases, add a 
8031         mono_emit_method_call_full variant which takes a signature and an imt
8032         argument as well.
8033
8034 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
8035
8036         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
8037         to this function, since it could be computed easily from the method 
8038         argument.
8039         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
8040         more.
8041
8042         * method-to-ir.c mini.c: Remove references to 
8043         compile_generic_method_wo_context.
8044
8045         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
8046         generic method calls.
8047         
8048         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
8049         dimensional non-szarrays.
8050
8051         * mini.c (mini_init): Register mono_array_new_1.
8052
8053         * jit-icalls.c (mono_array_new_1): New jit icall.
8054
8055         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
8056         pointing to the method.
8057
8058         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
8059         method addresses belonging to METHOD_JUMP patches in the 
8060         jump_target_got_slot_hash.
8061         (mono_aot_load_method): Ditto.
8062
8063         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
8064         METHOD_JUMP patches.
8065
8066         * mini.c (mini_create_jit_domain_info): New helper function which 
8067         initializes/frees domain->runtime_info.
8068         (mini_free_jit_domain_info): Ditto.
8069         (mini_init): Install the domain hook functions with the runtime.
8070
8071         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
8072         information maintained by the JIT.
8073
8074         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
8075         insertion into jump_table_hash into mono_codegen (), also implement proper
8076         locking.
8077
8078         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
8079         tail calls, it is already done by the aot code.
8080         
8081         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
8082         mechanism on amd64.
8083
8084         * iltests.il.in: Make the jmp test a bit more complex.
8085
8086         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
8087         generic instances which doesn't have a token.
8088
8089         * aot-runtime.c (decode_method_ref): Ditto.
8090         
8091         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
8092         can handle this case now.
8093         (handle_box): Ditto.
8094
8095 2008-08-15  Geoff Norton  <gnorton@novell.com>
8096
8097         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
8098         debugging check.
8099
8100 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
8101
8102         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
8103         calling generic methods.
8104
8105         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
8106
8107         * aot-runtime.c (decode_patch_info): Ditto.
8108
8109         * mini.c (mono_resolve_patch_target): Ditto.
8110         
8111         * patch-info.h: Add METHOD_RGCTX.
8112
8113         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
8114
8115 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
8116
8117         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
8118         arguments in registers.
8119
8120         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
8121         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
8122
8123         * mini.c (mini_method_compile): Abort aot compilation for generic
8124         methods if generic sharing is disabled.
8125         
8126         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
8127         an mrgctx.
8128
8129         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
8130         requiring an mrgctx.
8131
8132         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
8133         store instructions when converting a vcall to a normal call.
8134
8135         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
8136         mono_arch_find_jit_info.
8137
8138 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
8139
8140         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
8141         avoid calling mono_method_full_name () for every method even if the
8142         env var is not set.
8143         (check_inline_caller_method_name_limit): Ditto.
8144
8145 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8146
8147         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
8148         assemblies in one run.
8149
8150         * aot-compiler.c (mono_compile_assembly): Only print out a count of
8151         skipped methods if it is not 0.
8152
8153         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
8154
8155 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8156
8157         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
8158           MONO_ARCH_HAVE_UNWIND_TABLE.
8159
8160         Contributed under MIT/X11 license.
8161
8162 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8163
8164         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
8165           from default optimizaton list on Winx64.
8166
8167         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
8168
8169         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
8170           the LMF from the MonoJitTlsData structure.
8171
8172         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
8173
8174         Contributed under MIT/X11 license.
8175
8176 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8177
8178         * mini.c (sigsegv_signal_handler): Fix the build.
8179
8180         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
8181         assembly->aot_module.
8182
8183         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
8184         hash table. This simplifies and speeds up a lot of code, and fixes support
8185         for .netmodules.
8186
8187         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
8188         with the runtime.
8189
8190         * mini-exceptions.c: Ditto.
8191         
8192         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
8193         'native_offset' argument, since these are computed in the 
8194         mono_find_jit_info () function.
8195
8196         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
8197         is used by exceptions-ppc.c.
8198
8199         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
8200         mono_arch_find_jit_info ().
8201         
8202         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
8203         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
8204         generic code in mini-exceptions.c.
8205
8206 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8207
8208         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8209
8210         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8211         
8212         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8213         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8214         called while holding the loader lock. Fixes #415608.
8215         (mono_aot_get_method_from_token_inner): Ditto.
8216
8217 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8220         to reduce differences between this and the generic implementation in
8221         mini-exceptions.c.
8222         (ves_icall_get_frame_info): Ditto.
8223
8224         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8225
8226         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8227         longer neccesarry.
8228
8229         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8230         mono_arch_get_call_filter () and make it non-static, for consistency with the
8231         other architectures.
8232
8233 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8234
8235         * mini.c:
8236         * local-propagation.c:
8237         * mini-x86.c: Correct the name of arch defines.
8238
8239 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8240
8241         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
8242         NO_EMULATE_LONG_SHIFT_OPS define.
8243
8244 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8245
8246         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
8247         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
8248
8249         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
8250         MACH fixes. Merged from the 2.0 branch.
8251
8252         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
8253
8254         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
8255         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
8256
8257         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
8258
8259         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
8260         mono_marshal_get_native_wrapper () signature changes.
8261
8262 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
8263
8264         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
8265         conversion bug under arm.
8266
8267 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8268
8269         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
8270
8271         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
8272         with overflow checking.
8273
8274 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8275
8276         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
8277         to the genmdesc.pl file
8278
8279 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
8280
8281         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
8282         arg_array in the soft-float versions of the LOAD/STORE macros.
8283
8284         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
8285         implementation.
8286
8287         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
8288
8289 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8290
8291         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
8292         a float HFA. Fixes #413621.
8293
8294 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
8295
8296         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
8297         frame_size to args_size. Fixes build.
8298
8299 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8300
8301         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
8302         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
8303
8304         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
8305         the stack are not unaligned. Fixes #413247.
8306         
8307 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
8308
8309         * mini.c: update jitted methods performance counters.
8310
8311 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8312
8313         * mini-exceptions.c: increase the exceptions thrown performance
8314         counter in mono_handle_exception ().
8315
8316 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8317
8318         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
8319         can work with netmodules.
8320
8321 2008-07-28  Geoff Norton  <gnorton@novell.com>
8322
8323         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
8324         regression tests.
8325
8326 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8327
8328         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
8329         correct place.
8330
8331 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
8332
8333         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8334           The float param registers and other param registers must be the 
8335           same index on Windows x64.
8336
8337         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
8338           ArgValuetypeAddrInIReg argument case.  Setting the argument
8339           op to OP_VTARG_ADDR (OP_REGOFFSET)).
8340
8341         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
8342           variable computed above as the copy length for arguments of storage
8343           type ArgValuetypeAddrInIReg.
8344
8345         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
8346           ArgValuetypeAddrInIReg argument case.  This case will rely on
8347           mono_arch_emit_outarg_vt to emit the correct code later in the process.
8348
8349         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
8350           a 32 byte stack allocation for all calls.  We will omit the adjustment for
8351           jump and tail call instructoins as they do not follow the typical call behavior.
8352
8353         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
8354           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8355           local variable and pass the local variable by reference to the called method.
8356
8357         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
8358           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
8359           of a struct is passed in a register it must be saved with the other
8360           volatile argument on the stack.
8361
8362         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
8363           frame pointer the stack adjustment value must be saved to the unwind 
8364           info structure.
8365
8366         Contributed under MIT/X11 license.
8367
8368 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8369
8370         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
8371         which got lost in the merge.
8372
8373 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8374
8375         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
8376         build.
8377
8378         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
8379         
8380         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
8381         icalls, since they won't be patched.
8382
8383         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
8384         different code sequence when running under valgrind to prevent some valgrind
8385         errors.
8386
8387         * iltests.il.in: Add new regression test.
8388
8389         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
8390         end with a throw.
8391
8392         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
8393         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
8394
8395         * iltests.il.in: Add new test.
8396
8397         * aot-compiler.c: Fix some warnings.
8398
8399         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
8400         Fixes #412494.
8401
8402 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8403
8404         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
8405         (mini_usage_jitdeveloper): Add a missing --wapi option.
8406
8407 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8408
8409         * mini-codegen.c: Simplify the is_fp macros.
8410         (free_up_ireg): Remove, use free_up_reg instead.
8411         (free_up_reg): Fix the fp case.
8412
8413 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8414
8415         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
8416         lowered earlier.
8417
8418         * exceptions-x86.c: Merge some changes which seemed to have got lost
8419         in the linear-ir merge.
8420
8421         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
8422
8423         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
8424         long vreg volatile even if the variable was already created.
8425
8426         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
8427         volatile variables.
8428
8429 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8430
8431         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
8432
8433         * mini.c (mono_jit_compile_method_inner): Add support for 
8434         MONO_EXCEPTION_BAD_IMAGE.
8435
8436         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
8437         mini_method_get_context () returns NULL. Fixes #356531.
8438
8439         * mini.c (mono_method_to_ir): Ditto.
8440         
8441         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
8442         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
8443
8444 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8445
8446         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
8447         in the LDFTN implementation.
8448
8449 2008-07-25  Mark Probst  <mark.probst@gmail.com>
8450
8451         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
8452         code, patch calls to icalls, too, even if they're not in the
8453         shared generic code hash.  Fixes #411962.
8454
8455 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * cpu-x86.md: Increase the length of the fcall opcodes.
8458
8459         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
8460         calls returning floats.
8461
8462         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
8463         on NEWARR.
8464         
8465         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
8466         missed earlier.
8467
8468         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
8469         into the domain->method_code_hash.
8470
8471         * aot-compiler.c: Fix win32 build.
8472
8473         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
8474         
8475         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
8476         gshared NEWARR implementation.
8477
8478         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
8479
8480         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
8481         can be used outside of method_to_ir.
8482
8483         * mini.h (MonoCompile): Add arg_types field.
8484
8485         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
8486         
8487         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
8488         the values of the local arg_array and param_types array.
8489
8490 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8491
8492         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
8493         got accesses might only get generated later when NEWOBJ is decomposed.
8494         
8495         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
8496         looking up the native code of the target method when a delegate is called
8497         for the first time.
8498
8499         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
8500         optimization.
8501
8502         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
8503
8504         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
8505         AOT work on platforms without a working dlsym implementation.
8506
8507         * mini.h: Bump AOT image format version.
8508         
8509 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8510
8511         * mini-exceptions.c: Free a MonoType with
8512         mono_metadata_free_type() instead of g_free().
8513
8514         * aot-runtime.c: Free a MonoType.
8515
8516 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8517
8518         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
8519         optimization.
8520
8521         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
8522         fp stack on x86.
8523
8524 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
8525         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
8526         profiler hook.
8527
8528 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8529
8530         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
8531         NEWOBJ calls on valuetypes.
8532
8533         * iltests.il.in: Add new test.
8534
8535         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
8536
8537 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8538
8539         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
8540         is no longer needed.
8541
8542         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
8543         non register sized integer arguments.
8544         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
8545         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
8546         emit_memcpy2 ().
8547
8548         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
8549         CEE_MONO_RETOBJ.
8550         
8551         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
8552         two a binop with different sized arguments is emitted.
8553
8554         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
8555         instruction in the ins==NULL case.
8556
8557 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8558
8559         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
8560
8561         * mini-x86.c: Fix osx build.
8562
8563         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
8564         opcodes as well.
8565
8566         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
8567         instruction for non int sized variables.
8568
8569         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
8570         implementation.
8571
8572 2008-07-23  Robert Jordan  <robertj@gmx.net>
8573
8574         * method-to-ir.c: Fix MSVC build.
8575
8576 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8577
8578         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
8579         a non int sized type, widen it to an int since newer versions of gcc seem to
8580         generate code which needs this.
8581
8582         * ssa2.c abcremoval2.c: Fix warnings.
8583
8584         * *: Merge the Linear IR branch.
8585
8586         The original branch is at trunk/branches/vargaz/mini-linear-il, and
8587         the ChangeLog file there describes all the changes done over the years. 
8588         Further documentation can be found at www.mono-project.com/Linear_IL.
8589
8590 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8591
8592         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8593           The float param registers and other param registers must be the 
8594           same index on Windows x64.
8595
8596         Contributed under MIT/X11 license.
8597
8598 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
8599
8600         * mini.c: Make the previous fix GC safe.
8601
8602 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
8603
8604         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
8605
8606 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8607
8608         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
8609           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
8610           ArgValuetypeAddrInIReg instead.
8611
8612         Contributed under MIT/X11 license.
8613
8614 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
8615
8616         * mini-codegen.c (get_register_spilling): Fix a warning.
8617
8618 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
8619
8620         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
8621         for types which the initialization fails. Raises the provided exception
8622         at the right stop after cleanup.
8623
8624 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
8625
8626         * aot-compiler.c: Free most of the memory allocated during compilation.
8627
8628         * mini.c (mini_parse_debug_options): Fix a leak.
8629         
8630         * mini.c (mini_method_compile): Don't add the method to the jit info tables
8631         during aot compilation.
8632
8633 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
8634
8635         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
8636         it has too much register pressure.
8637
8638 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
8641
8642 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8643
8644         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8645         on x86.
8646
8647         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8648         on amd64 similar to the way it is done on arm.
8649
8650         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8651
8652         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
8653         consistency, normalize error messages, avoid loading aot-only modules in
8654         normal mode.
8655
8656         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
8657         for consistency.
8658
8659         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
8660
8661 2008-07-11  Martin Baulig  <martin@ximian.com>
8662
8663         * debug-debugger.h
8664         (MonoDebuggerInfo): Add `interruption_request'.
8665
8666 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8667
8668         * aot-compiler.c (emit_plt): Remove some dead code.
8669
8670         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
8671
8672         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
8673         return the plt info offset belonging to a given plt entry.
8674
8675         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
8676         mono_aot_get_plt_info_offset.
8677         
8678         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
8679         similar to the amd64 code by makeing jumps through a separate jump table 
8680         instead of embedding the jump addresses into the code.
8681
8682 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
8683
8684         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
8685         method.
8686
8687 2008-07-10  Martin Baulig  <martin@ximian.com>
8688
8689         * mini.c (mini_method_compile): Disable generics sharing when
8690         running in the debugger.
8691
8692 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8693
8694         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
8695
8696         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
8697         the local register allocator from running out of registers on x86 when 
8698         using aot.
8699
8700 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
8701
8702         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
8703         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
8704         C4146.
8705
8706         Contributed under MIT/X11 license.
8707
8708 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8709
8710         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
8711         speed up the assembler.
8712
8713 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8714
8715         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
8716         support.
8717
8718         * mini.c: Move the soft float handling macros a bit earlier, add 
8719         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
8720         place.
8721
8722         * mini.h: Add prototype for mono_arch_fixup_jinfo.
8723
8724         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
8725         read-only to help catch code allocation requests.
8726         
8727         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
8728         and turn it off when using --aot-only or when compiling with --aot=full.
8729
8730         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
8731         jump table for switches from the normal domain mempool, not the code
8732         manager.
8733
8734         * mini-trampolines.c (get_unbox_trampoline): New function to return an
8735         unbox trampoline which handles aot-only mode too.
8736
8737         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
8738         an AOTed unbox trampoline.
8739
8740         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
8741
8742 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8743
8744         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
8745         ""
8746
8747         Contributed under MIT/X11 license.
8748
8749 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8750
8751         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8752           the unwind information for the method at the end of the allocated block.
8753           
8754         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8755           MonoCompileArch to hold the unwind info for SEH on Winx64
8756         
8757         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8758           frame pointer info for the method being compiled.
8759           
8760         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8761           the call to mono_exception_from_token.
8762           
8763         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8764           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8765           information is stored a the end of the method block because it is all 32-bit offset based.
8766
8767         Contributed under MIT/X11 license.
8768
8769 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8770
8771         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8772
8773         * wapihandles.c: Fix warnings.
8774
8775         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8776         mode.
8777
8778         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8779         mono_jit_compile_method in aot-only mode since that calls the type 
8780         initializer.
8781         
8782         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8783         get_delegate_invoke_impl in aot-only mode.
8784
8785         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8786
8787 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8788
8789         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8790
8791         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8792         is on by default.
8793
8794         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8795
8796         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8797         init trampoline from the AOT file as well.
8798
8799         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8800         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8801         code.
8802
8803         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8804         mono_init.
8805
8806         * exceptions-amd64.c: Add _full variants for the remaining exception code
8807         creation functions as well, allow emission of relocatable code, remove
8808         caching since that is now done by the caller.
8809
8810         * mini-exceptions.c: Add _full variants for the remaining exception code
8811         creation functions as well, add aot-only support.
8812
8813         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8814         if we can determine a proper token for them.
8815         (add_wrappers): Add a few more wrappers.
8816         (emit_method_code): Remove some dead code.
8817         (emit_trampolines): Emit exception code too.
8818
8819         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8820
8821         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8822         mono_array_new_va which avoids varargs.
8823
8824         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8825
8826         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8827         mono_arch_create_specific_trampoline () in all places.
8828
8829         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8830         a bit so it can be used for other things as well.
8831         
8832         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8833         on demand as well.
8834
8835         * exceptions-amd64.c: Rename the caching from the exception code creation
8836         functions, it is done by the caller instead.
8837         
8838         * exceptions-amd64.c: Change the signature of the exception code creation 
8839         functions to allow the creation of relocatable code later.
8840
8841         * mini-exceptions.c: Add a set of functions to query the various 
8842         runtime-generated exception functions.
8843
8844         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8845         mono_arch_.. () functions.
8846         
8847 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8848
8849         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8850
8851         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8852
8853         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8854         (mini_get_vtable_trampoline): Ditto.
8855
8856         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8857         code in the AOT case by returning the code size and a list of relocations to
8858         the caller.
8859
8860         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8861
8862 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8863
8864         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8865           clean the stack.
8866
8867         Contributed under MIT/X11 license.
8868
8869 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8872         so the buffer size can be computed correctly. Fixes #404735.
8873
8874         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8875         normally as cfg->debug_info is already freed.
8876
8877 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8878
8879         * mini-amd64.c: For calls returning vtypes in registers, don't store
8880         the return address on the stack, instead allocate a separate local for
8881         it. Fixes #404729.
8882
8883 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8884
8885         * mini-trampolines.c, mini.h: Add an argument to
8886         mono_create_jit_trampoline_in_domain() for turning off the adding
8887         of the sync wrapper.
8888
8889         * mini.c: Use the JIT trampoline without sync instead of
8890         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8891         be patched.
8892
8893 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8894
8895         * driver.c: Turn on GSHARED optimization by default.
8896
8897 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8898
8899         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8900         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8901
8902         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
8903         create a variant of the generic trampoline code callable from AOTed trampolines.
8904
8905         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
8906         trampoline code callable from AOTed trampolines.
8907
8908         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
8909
8910 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8911
8912         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
8913         pass-through manner.
8914
8915         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
8916         and don't fail sharing for them anymore.
8917
8918         * mini-exceptions.c: Handle exceptions in shared generic methods.
8919
8920         * generic-sharing.c: When checking the context of a generic
8921         method, also check its class's context.  Don't treat wrappers as
8922         sharable.
8923
8924         * mini-trampolines.c: Some code factored out to
8925         metadata/generic-sharing.c.  Handle the MRGCTX case.
8926
8927         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
8928         we must deal with the method being of another instantiation of the
8929         class.  Add static rgctx invoke wrappers to generic methods.
8930
8931 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8932
8933         * mini.c: Provide all jit infos of generic shared methods with a
8934         generic jit info.
8935
8936         * mini-exceptions.c: Handle the new situation that a generic info
8937         might be available, but not info about the this/vtable/mrgctx
8938         variable.
8939
8940 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8941
8942         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
8943         generic methods.
8944
8945 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
8946
8947         * dominators.c (check_dominance_frontier): Fix a warning.
8948
8949         * mini.h: Add some missing prototypes.
8950
8951         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
8952
8953         * driver.c (mono_jit_init_version): Correct the comments since the first
8954         argument should be the name of the root domain, not a filename.
8955
8956         * aot-runtime.c (make_writable): Error out if this is called while running
8957         with --aot-only.
8958         (load_aot_module): Ditto.
8959
8960         * aot-compiler.c: Really fix the computation of method indexes.
8961
8962         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
8963         optimizations as this is no longer called frequently.
8964
8965         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
8966         method and the invoke impl code and pass it to the delegate trampoline instead of
8967         just the delegate class.
8968
8969 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8970
8971         * aot-compiler.c: Fixup the computation of method indexes.
8972         (add_wrappers): Create the base methods of the runtime invoke wrappers using
8973         the method builder infrastructure.
8974
8975         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
8976         has no header.
8977
8978         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
8979         mode, load the method right away instead of creating a trampoline.
8980
8981         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
8982
8983         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
8984         some checks a bit.
8985
8986 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8987
8988         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
8989         (mono_aot_load_method): Use method_index instead of method->token.
8990
8991         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
8992         can handle icalls etc. properly.
8993
8994         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8995
8996         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
8997
8998         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
8999         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
9000         JIT_ICALL_ADDR patch type.
9001
9002         * patch-info.h: Add JIT_ICALL_ADDR patch type.
9003
9004         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
9005         request flag.
9006         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
9007
9008         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
9009
9010 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * mini.c: Use domain->jit_code_hash_lock for controlling access to
9013         domain->jit_code_hash.
9014
9015 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
9016
9017         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
9018
9019 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
9020
9021         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
9022         get_this_arg_from_call, let it compute it when needed.
9023
9024         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
9025         gsctx from code only when needed.
9026
9027         * mini-trampolines.c (get_generic_context): Rename this to 
9028         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
9029         it can be called by the arch backends.
9030
9031         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
9032
9033 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
9034
9035         * driver.c (mono_main): Add experimental --aot-only command line option.
9036
9037         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
9038         set.
9039
9040 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
9041
9042         * driver.c (DllMain): Remove mono_module_handle.
9043
9044         Contributed under MIT/X11 license.
9045
9046 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
9049         for emitting methods which are not in the source assembly. Detect and report
9050         failure of assembling+linking.
9051         
9052         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
9053
9054         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
9055
9056 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
9057
9058         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
9059
9060 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
9061
9062         * mini.h: Remove some obsolete prototypes.
9063
9064         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
9065
9066 2008-06-24  Mark Probst  <mark.probst@gmail.com>
9067
9068         * mini.c (get_object_generic_inst): Variable-sized arrays are not
9069         supported by Visual Studio, so use alloca().
9070
9071 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
9074         Fixes #402585.
9075
9076 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9077
9078         * mini.c: Fail sharing of a generic method if it contains an open
9079         catch clause (because we don't pass MRGCTXs yet).
9080
9081 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9082
9083         * mini.c: When compiling a method with generic sharing, insert the
9084         method instantiated with an all-Object generic context into the
9085         jit info table, instead of the context of the first instantiation
9086         of the method we happen to compile.
9087
9088 2008-06-18  Martin Baulig  <martin@ximian.com>
9089
9090         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
9091         `major_version' and `minor_version'.
9092
9093 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9094
9095         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
9096         mono_method_is_generic_sharable_impl() takes an additional
9097         argument specifying whether to treat type variables as reference
9098         types.
9099
9100 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9101
9102         * mini.h: Removed obsolete prototypes.
9103
9104 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9105
9106         * mini.c: Don't fail generic sharing for initobj and sizeof - we
9107         already handle them.
9108
9109 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9110
9111         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
9112         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
9113         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
9114         tramp-x86.c: Added a MonoGenericContext* argument to
9115         mono_arch_get_unbox_trampoline() so that it can call other
9116         functions which require it.
9117
9118 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9119
9120         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
9121         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
9122         mono_arch_get_this_arg_from_call() takes a
9123         MonoGenericSharingContext* as well.
9124
9125 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9126
9127         * mini.c: Factor out code for emitting unbox into emit_unbox() and
9128         implement generic sharing of unbox.
9129
9130 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9131
9132         * mini.c: Don't compute the vtable to determine whether a field is
9133         special static, because it might not work for open types.
9134
9135 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9136
9137         * mini.c: Removed the unused token_type and token_source arguments
9138         from get_runtime_generic_context_ptr().
9139
9140 2008-06-17  Marek Habersack  <mhabersack@novell.com>
9141
9142         * mini.c (ADD_BINOP): fix the build
9143
9144 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
9145
9146         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
9147         a widening op.
9148
9149 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9150
9151         * mini.h: Removed class relations enum that's not used anymore.
9152
9153 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9154
9155         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
9156
9157         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
9158         the lazy fetch trampoline access code.
9159
9160 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
9161
9162         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
9163
9164 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
9165
9166         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
9167
9168         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
9169
9170         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
9171
9172 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
9175         intrinsics.
9176
9177         * mini-ops.h: Add MIN/MAX_UN opcodes.
9178
9179         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
9180         intrinsics.
9181
9182         * basic-math.cs: Add more min/max tests.
9183
9184         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9185
9186 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9187
9188         * mini.c: Small fix in the prologue of emit_castclass.
9189
9190 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9191
9192         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9193
9194         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
9195         do not work even for unsigned types. Fixes #400014.
9196
9197         * basic-math.cs: Add regression tests for unsigned Min/Max.
9198
9199 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9200
9201         * mini.c: Added additional context_used argument to several
9202         functions, which will be needed for sharing generic methods.  Use
9203         GET_RGCTX macro wherever appropriate.  Declare only one
9204         context_used in mono_method_to_ir().
9205
9206 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9207
9208         * mini.c, generic-sharing.c: Removed generic class relations.
9209
9210         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9211         functions due to MRGCTX changes.
9212
9213 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9214
9215         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9216         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9217         with calculated IMT.
9218
9219         * mini.c: Generic sharing of calls via generic interfaces.
9220
9221         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9222         generic method with non-constant MonoGenericContext*.  Instead,
9223         the context is taken out of the method itself.
9224
9225 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9226
9227         * mini.c: Generic sharing of ldvirtftn.
9228
9229 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9230
9231         * mini.c: Generic sharing of ldftn.
9232
9233 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9234
9235         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9236
9237 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9238
9239         * mini.c: Generic sharing of the special case of ldtoken followed
9240         by a call to GetTypeFromHandle.
9241
9242 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9243
9244         * mini.c: Generic sharing of box for nullable types.
9245
9246 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9247
9248         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
9249         are passed on the stack. Fixes #324807.
9250
9251 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
9252
9253         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
9254         for the ArgValuetypeAddrInIReg case.
9255
9256         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
9257         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
9258
9259         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
9260         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9261         local variable and pass the local variable by reference to the called method.
9262           
9263         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
9264         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
9265
9266         Contributed under MIT/X11 license.
9267
9268 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
9269
9270         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
9271
9272         * debug-mini.c (mono_debug_print_vars): Release memory after printing
9273         everything.
9274
9275 2008-06-10  Martin Baulig  <martin@ximian.com>
9276
9277         * debug-mini.c
9278         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
9279
9280 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
9281
9282         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
9283         possible error when no arguments are passed.
9284
9285         Contributed under MIT/X11 license.
9286
9287 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
9288
9289         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
9290         where the file name is NULL.
9291
9292 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9293
9294         * mini.c: Fix s390 build.
9295
9296 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
9297
9298         * trace.c (mono_trace_parse_options): Fix warnings.
9299
9300         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
9301
9302 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9303
9304         * mini.c (remove_block_if_useless): Avoid printing the method name.
9305         
9306         * mini.c: Remove needless setting of ins->cil_code which is now done by 
9307         MONO_INST_NEW.
9308
9309         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
9310         LMF. Not yet used.
9311
9312         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
9313         translated code after it has been patched.
9314
9315 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9316
9317         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
9318         avoid problems during code patching on SMP systems.
9319         (emit_call): Avoid adding a patch info which is already added by 
9320         emit_call_body.
9321         (mono_arch_emit_exceptions): Ditto.
9322
9323 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9324
9325         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
9326         MONO_TYPE_ISSTRUCT already checks for it.
9327
9328 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
9329
9330         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
9331           structs with floats on Winx64 the float registers are not used.  
9332           The integer registers are always used..
9333         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
9334           only one register will be used and only if the size of the struct 
9335           is 1,2,4, or 8 bytes.
9336
9337         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
9338           to work for Winx64.
9339
9340         Contributed under MIT/X11 license.
9341
9342 2008-06-05  Martin Baulig  <martin@ximian.com>
9343
9344         * debug-debugger.c (debugger_lookup_class): Also call
9345         mono_class_setup_methods() here; we're only called from RTI.
9346
9347 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
9348
9349         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
9350         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
9351         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
9352         Post-process object files and add dtrace-generated object, if necessary.
9353
9354         Contributed under MIT/X11 license.
9355
9356 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9357
9358         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
9359         element class.
9360
9361         * mini.c: Generic sharing for unbox.any and castclass.
9362
9363 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9364
9365         * mini.c: Ignore tailcall prefix in shared generic code and when
9366         doing calls which require a vtable/rgctx argument.
9367
9368 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9369
9370         * mini.c: Don't free the JIT info.
9371
9372         * driver.c: Changes in the JIT info table testing code.
9373
9374 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9375
9376         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
9377         interruption. Fix some warnings.
9378
9379         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
9380         interruption_checkpoint.
9381
9382 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9383
9384         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
9385         from embedding applications.
9386
9387 2008-06-02  William Holmes  <billholmes54@gmail.com>
9388
9389         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
9390           reserving 32 bytes on the stack when making calls. 
9391
9392         Contributed under MIT/X11 license.
9393
9394 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
9395
9396         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
9397         the linear IL branch.
9398
9399         * driver.c: Print out more information for --version on arm.
9400
9401 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
9402
9403         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
9404         bb_exit instead, since out of line bblocks might not actually be emitted
9405         out-of-line.
9406         
9407         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
9408         maximum epilog size for out of line bblocks if tracing is enabled.
9409
9410         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
9411
9412 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
9413
9414         * arrays.cs: Regression tests for allocating arrays with negative sizes.
9415
9416 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
9417
9418         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
9419         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
9420         opcodes.
9421
9422 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
9423
9424         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
9425         the 'value' to store is a constant.
9426
9427         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
9428
9429         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
9430         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
9431
9432 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
9433
9434         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
9435         for accessing method->generic_container.
9436
9437 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
9438
9439         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
9440         
9441         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
9442
9443         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
9444
9445         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
9446         fails.
9447
9448 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
9449
9450         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
9451
9452         * mini.c: Handle the case when mono_class_vtable () fails.
9453
9454 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9455         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
9456         the stat profiler.
9457
9458 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9459
9460         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
9461         together with domain sharing.
9462
9463 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9464
9465         * mini.c: Treat callvirts to final methods like non-virtual calls
9466         when doing generic sharing, i.e. look them up in the runtime
9467         generic context.
9468
9469 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9470
9471         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
9472         with computed types (for generic sharing).
9473
9474         * mini.c: Generic sharing for mkrefany and refanyval.
9475
9476 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
9477
9478         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
9479         possible.
9480
9481         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
9482         the generic sharing code.
9483         
9484         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
9485         when needed.
9486
9487 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9488
9489         * mini.h: Remove the declaration of mono_aot_init_vtable ().
9490
9491 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
9492
9493         * driver.c: updated copyright date
9494
9495 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9496
9497         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
9498         needed.
9499
9500 2008-05-19  Martin Baulig  <martin@ximian.com>
9501
9502         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
9503         pointing to the new `_mono_debug_using_mono_debugger' variable.
9504
9505         * driver.c
9506         (mono_main): Check mono_debug_using_mono_debugger() rather than
9507         the `MONO_INSIDE_MDB' environment variable to check whether we're
9508         inside the debugger.
9509
9510 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
9511
9512         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
9513         argument.
9514
9515 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
9516
9517         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
9518
9519         * mini.c: Added mini_assembly_can_skip_verification. This
9520         function checks if the assembly requested to skip verification. 
9521         Fixes part of #387274.
9522
9523 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
9524
9525         * mini.c (mini_get_method): Disable the check for open generic classes when
9526         using generic sharing.
9527
9528         * generics.cs: Add a test for #387034.
9529
9530         * mini.c (mini_get_method): Check whenever the method class is an open generic
9531         type, and return NULL in that case, causing a verification error. Fixes
9532         #384123.
9533
9534 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9535
9536         * driver.c (mono_main): Revert r102623. The right
9537         thing to do is to enable the verifier under verifiable
9538         unless a --security flag was passed.
9539
9540         We need this non-trivial behavior for --verify-all otherwise
9541         mcs-compileall won't be able to use it. As it needs everything to
9542         be verified under validil.
9543
9544 2008-05-06  Martin Baulig  <martin@ximian.com>
9545
9546         Fix #383749.
9547
9548         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
9549         (mono_debugger_thread_cleanup): Likewise.
9550         (mono_debugger_extended_notification): Likewise.
9551
9552 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9553
9554         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
9555         against both inflated and non-inflated methods. We need to check against the
9556         generic definition for cases where the instantiated method is not visible.
9557         We need to check against the inflated types for cases where the instantiation
9558         changes any super type. This fixes #382986.
9559
9560         Note that this doesn't need to be applied to other parts of mono_method_to_ir
9561         that check for visibiliy as generic params only appears as the type subject
9562         of tokens on call opcodes. Field manipulation and ldftn must always
9563         target an exact type.
9564
9565 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9566
9567         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
9568         if no related --security flag is passed.
9569
9570 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9571
9572         * mini-arch.h: Prepare support for ppc64.
9573
9574         Contributed under MIT/X11 license.
9575
9576 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9577
9578         * aot-runtime.c: Prepare support for ppc64.
9579
9580         Contributed under MIT/X11 license.
9581
9582 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9583
9584         * mini-ops.h: Prepare support for ppc64.
9585
9586         Contributed under MIT/X11 license.
9587
9588 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
9589
9590         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
9591
9592         Contributed under MIT/X11 license.
9593
9594 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
9595
9596         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
9597         assemblies, since aot_name is not a full path, causing us to load MS.NET 
9598         assemblies on windows.
9599
9600 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
9601
9602         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
9603         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
9604         * main.c: Use UTF-8 encoded command line instead of Windows default code
9605         page on Windows to support Unicode.
9606         * driver.c (DllMain): New function for mixed-mode assembly support.
9607         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
9608         export __stdcall functions without decoration.
9609
9610         Contributed under MIT/X11 license.
9611
9612 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9613
9614         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
9615         saving it very early.
9616
9617 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9618
9619         * mini.h, mini.c: Lots of code for accessing the old RGCTX
9620         deleted.  The only way to access the new RGCTX is via the
9621         trampline.
9622
9623         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
9624         vtable instead of the RGCTX to static methods.
9625
9626         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
9627         accessing the new RGCTX.
9628
9629         * generic-sharing.c: There is no separation between self, type
9630         arguments and other types in the RGCTX anymore.
9631
9632 2008-04-25  Jonathan Chambers <joncham@gmail.com>
9633
9634         * mini-amd64.c (add_general): Remove previous stack adjustment.
9635         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
9636         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
9637         for 32 bytes of stack space reserved for all calls.
9638         
9639         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
9640         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
9641         adjustment.
9642         
9643         Code contributed under MIT/X11 license.
9644
9645 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
9646
9647         * mini.c (mini_method_verify): Only verify non-inflated methods, check
9648         against the root definition, peeling out method and type instantiations.
9649         Cache verify success results, code that fails verification is still
9650         checked multiple times.
9651
9652 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
9653
9654         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
9655
9656 2008-04-23  Jonathan Chambers <joncham@gmail.com>
9657
9658         * mini-amd64.c (add_general): Always increment stack on Win64.
9659         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
9660         on Win64.
9661         
9662         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
9663         stack based argument handling on Win64.
9664         
9665         Code contributed under MIT/X11 license.
9666
9667 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
9668
9669         * Makefile.am (version.h): Add support for git-svn.
9670
9671 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
9672
9673         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
9674         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
9675         avoiding allocations and libc functions which might deadlock.
9676         
9677         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
9678         'no-gdb-backtrace' option is set.
9679
9680         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
9681
9682         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
9683
9684 2008-04-21  Martin Baulig  <martin@ximian.com>
9685
9686         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
9687         and `get_lmf_addr'; `notification_address' is no longer a pointer.
9688
9689 2008-04-21  Martin Baulig  <martin@ximian.com>
9690
9691         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
9692         `thread_vtable', `event_handler_ptr' and `event_handler'.
9693
9694 2008-04-21  Martin Baulig  <martin@ximian.com>
9695
9696         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
9697         allows delayed initialization of the `executable_code_buffer' when
9698         attaching.
9699
9700 2008-04-21  Martin Baulig  <martin@ximian.com>
9701
9702         * mini.h (mono_debugger_create_notification_function): Removed.
9703         * tramp-*.c (mono_debugger_create_notification_function): Removed.
9704
9705         * mdb-debug-info64.s
9706         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9707
9708         * mdb-debug-info32.s
9709         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9710
9711         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
9712         currently only works on x86 and x86_64, so don't create it on ppc.
9713
9714 2008-04-21  Martin Baulig  <martin@ximian.com>
9715
9716         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
9717
9718         * mini.c
9719         (mini_method_compile): In the fp elimination check, check
9720         `debug_options.mdb_optimizations' in addition to
9721         mono_debug_using_mono_debugger().       
9722
9723         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
9724         disable some JIT optimizations which are only disabled when
9725         running inside the debugger.
9726         Added `--help-debug' option to describe the debugging options.
9727         (parse_debug_options): New static function to parse the `--debug'
9728         options, so we can easily add more stuff in future.
9729
9730 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
9731
9732         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
9733         the method has no body.
9734
9735 2008-04-19  Jonathan Chambers <joncham@gmail.com>
9736
9737         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
9738         assembly is not allowed in MSVC 64-bit compiler. 
9739         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
9740         as we get floating point exceptions everywhere.
9741         
9742         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
9743         correctly align arguments for call to throw_exception.
9744         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
9745         
9746         Code contributed under MIT/X11 license.
9747
9748 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9749
9750         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9751
9752 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9753
9754         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9755
9756         * mini-amd64.c (NEW_INS): Set cil_code.
9757
9758         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9759         from mini-amd64.c so all debugger related logic is in one place.
9760
9761         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9762         later won't have a random ip assigned to them.
9763
9764 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9765
9766         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9767         the arch specific function initializes code_size.
9768         (mono_create_delegate_trampoline): Ditto.
9769
9770         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9771         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9772         platforms.
9773
9774         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9775         running under the debugger.
9776
9777         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9778         debugger.
9779
9780         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9781         debugger. Also move the disabling of optimizations here from driver.c.
9782         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9783         debugger.
9784
9785         * mini.h (MonoCompile): Add a few new flags.
9786
9787 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9788
9789         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9790         so the cil_code field of created MonoInst's is properly set.
9791         (mini_select_instructions): Ditto.
9792
9793         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9794         (MONO_INST_NEW_CALL): Ditto.
9795
9796         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9797         in many places so the ins->cil_code field is properly initialized.
9798
9799         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9800         place.
9801
9802 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9803
9804         * mini.c (mini_method_compile): Print a different message when compiling a 
9805         shared method.
9806         
9807         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9808         > 1.
9809
9810 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9811
9812         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9813         SSE2 instructions.
9814
9815         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9816         
9817 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9818
9819         * mini.c (handle_stack_args): Make this return void since its return value was
9820         never used. Also set cfg->unverifiable for invalid IL instead of calling
9821         G_BREAKPOINT ().
9822
9823 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9824
9825         * mini.c: Make sure "this" is live in catch clauses with type
9826         variables in shared generic code.
9827
9828 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9829
9830         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9831         generic_class_is_reference_type() to ensure the proper behaviour
9832         when sharing generic code and the type in question is a type
9833         argument.
9834
9835 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9836
9837         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9838         race conditions when printing thread dumps. Fixes #377738.
9839
9840 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9841         
9842         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9843         shows up when both MonoInst arguments can cause aliasig.
9844         There is likely no way in the current JIT to trigger this problem, but
9845         it showed up in the development of generics sharing, when in a new
9846         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9847         When the generics sharing code will be committed, its tests will be
9848         valid also for this bug.
9849
9850 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9851
9852         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9853         PATCH_INFO_METHOD.
9854
9855         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9856         NULL.
9857
9858 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9859
9860         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9861         use a more detailed exception message for InvalidCastException.
9862
9863         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9864
9865         * driver.c (mono_main): Add --debug=casts option to turn on better 
9866         InvalidCastException message details.
9867
9868         * mini.c (mini_get_debug_options): New helper function to return the address of
9869         the debug_options variable.
9870
9871         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9872         the jit_tls TLS variable.
9873
9874         * mini.c (mono_jit_tls): New TLS variable.
9875
9876         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9877         option is used.
9878
9879 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9880
9881         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9882
9883         * mini.c: Removed verifer related stuff, code moved to verify.c.
9884
9885         * driver.c: Using code from verify.c instead of mini.c.
9886
9887 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9888
9889         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9890         longer valid.
9891
9892 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9893
9894         * mini.c (check_for_method_verify): Enabling verification of
9895         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9896         have been fixed.
9897
9898 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9899
9900         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9901         caller saved registers as well.
9902         
9903         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
9904         saved registers as well.
9905
9906 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
9907
9908         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
9909
9910         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
9911         code.
9912
9913 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
9914
9915         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
9916         to get_call_info.
9917         (get_call_info): Take a gsctx argument instead of 'cfg'.
9918
9919 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9920
9921         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
9922         mono_verify_all is set.
9923
9924         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
9925
9926         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
9927
9928 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9929
9930         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
9931         an exception.
9932
9933         * driver.c mini.c mini.h: Add a --verify-all development option to test the
9934         verifier and the code generated by the compiler.
9935
9936 2008-03-25  Mark Probst  <mark.probst@gmail.com>
9937
9938         * mini.c: Generic sharing of the non-nullable case of the box
9939         instruction.
9940
9941 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
9942
9943         * inssel.brg: Fix the build.
9944
9945         * iltests.il.in: Add a test for lconv.ovf.u8.un.
9946
9947 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
9948
9949         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
9950         Array:Address. Fixes #372410.
9951
9952         * iltests.il.in: New tests for readonly prefix.
9953
9954 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
9955
9956         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
9957         mini-trampolines.c.
9958
9959         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
9960         mini-exceptions.c.
9961
9962         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
9963         
9964         * mini.c (mono_decompose_op_imm): New helper function.
9965
9966         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
9967         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9968         return value.
9969
9970         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9971         mono_arch_output_basic_block. Fix warnings.
9972
9973         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
9974         for now.
9975
9976 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
9977
9978         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
9979         since the extra frame is now detected automatically inside the loop.
9980
9981         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
9982         opts which are now in mono_peephole_ins ().
9983         
9984         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
9985
9986         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
9987         frames and skip duplicate managed-to-native frames. Fixes #367665.
9988
9989         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9990         opts which are now in mono_peephole_ins ().
9991         (mono_arch_peephole_pass_2): Ditto.
9992
9993         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
9994
9995         * mini-codegen.c (mono_peephole_ins): New helper function containing the
9996         arch independent peephole optimizations.
9997
9998         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9999         opts which are now in mono_peephole_ins ().
10000
10001         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
10002         
10003         * mini-s390.c (mono_arch_output_basic_block): Fix build.
10004
10005         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
10006         pattern.
10007
10008         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
10009         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
10010         opcode. 
10011
10012 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
10013
10014         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
10015         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10016         return value.
10017
10018         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10019         mono_arch_output_basic_block. Fix warnings.
10020
10021 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10022
10023         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10024         conv.ovf.u.un.
10025
10026 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10027
10028         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10029         conv.ovf.u.un.
10030
10031         * iltests.il: Add new tests.
10032
10033 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
10034
10035         * mini.c: Removed Windows version macros.
10036
10037 2008-03-20  Mark Probst  <mark.probst@gmail.com>
10038
10039         * generic-sharing.c: Put reflection types in the extensible part
10040         of the runtime generic context.
10041
10042         * mini.c: Generic sharing of the GetTypeHandle special case of the
10043         ldtoken instruction.
10044
10045 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10046
10047         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
10048
10049         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
10050         
10051         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
10052         consistency with the other version on the linear IR branch.
10053
10054         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
10055
10056         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
10057
10058         * iltests.il.in: Add new tests.
10059
10060 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
10061
10062         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
10063
10064         * iltests.il.in: Add new tests.
10065
10066 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10067
10068         * mini.c: Two variables with the same name were declared in
10069         nesting contexts and one wasn't initialized.  Fixed.
10070
10071 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10072
10073         * mini.c: Generic sharing of the initobj instruction.
10074
10075 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
10076
10077         * mini.c: make the test to optimize ldtoken from typeof() more
10078         precise.
10079
10080 2008-03-18  Mark Probst  <mark.probst@gmail.com>
10081
10082         * mini.c: Generic sharing of the initobj instruction for reference
10083         types.
10084
10085 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
10086
10087         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
10088         the mono_breakpoint_clean_code() code to perform bound checks.
10089
10090 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
10091
10092         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
10093         mono_arch_patch_callsite() to include the start of the managed method
10094         to be able to perform bound checks.
10095
10096 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10097
10098         * mini.c: Generic sharing for the isinst instruction.
10099
10100 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10101
10102         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10103         inssel-long32-mips.brg: Added opcodes for doing indirect calls
10104         with the runtime generic context argument.
10105
10106         * mini.c: Share calls to several types of unsharable methods by
10107         putting the address of the method code in the runtime generic
10108         context and doing an indirect call.
10109
10110         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10111         to switches.
10112
10113 2008-03-16  Mark Probst  <mark.probst@gmail.com>
10114
10115         * generic-sharing.c: Change due to a change in the runtime genric
10116         context API.
10117
10118 2008-03-15  Martin Baulig  <martin@ximian.com>
10119
10120         * tramp-x86.c
10121         (mono_arch_nullify_class_init_trampoline): Add call to
10122         mono_breakpoint_clean_code() to make things work when running
10123         inside the debugger.
10124
10125         * tramp-amd64.c
10126         (mono_arch_nullify_class_init_trampoline): Add call to
10127         mono_breakpoint_clean_code() to make things work when running
10128         inside the debugger.
10129
10130 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10131
10132         * inssel-long.brg (reg): Fix 64 bit build.
10133
10134 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10135
10136         * mini.c, mini.h: Share static generic code by passing it an
10137         implicit argument pointing to the runtime generic context.
10138
10139         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10140         inssel-long32-mips.brg: New opcodes for calling shared static,
10141         which need to be passed the runtime generic context.
10142
10143         * mini-amd64.c, mini-x86.c: Save the runtime generic context
10144         argument on the stack in the prologue if needed.  New function for
10145         finding the runtime generic context argument from the registers
10146         saved by the trampoline.
10147
10148         * mini-amd64.h, mini-x86.h: Specify which register to use for the
10149         runtime generic context argument.
10150
10151         * tramp-amd64.c: Also restore the register used for the runtime
10152         generic context argument.
10153
10154         * mini-trampoline.c: Resolve shared static calls by consulting the
10155         runtime generic context via the new argument.
10156
10157         * generic-sharing.c: Add an argument to sharability-checking
10158         functions that specifies whether type variables should be treated
10159         as sharable type arguments.
10160
10161         * inssel-x86.brg: Removed a superfluous, buggy rule.
10162
10163         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10164         to switches.
10165
10166 2008-03-14  Martin Baulig  <martin@ximian.com>
10167
10168         * debug-debugger.c (main_thread_handler): Call
10169         mono_runtime_run_main() without sending any notifications.
10170
10171         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
10172
10173 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10174
10175         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
10176
10177 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10178
10179         * tramp-x86.c: Fixed register restore offsets in the trampoline
10180         code for ECX and EDX.
10181
10182 2008-03-12  Geoff Norton  <gnorton@novell.com>
10183
10184         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
10185         different ucontext_t implementations.
10186         * exceptions-arm.c: Use the above defines to get exceptions working on 
10187         iPhone (based on a patch by Luke Howard lukeh@padl.com)
10188         * mini-arm.c: Implement iPhone icache support (based on a patch by
10189         Luke Howard lukeh@padl.com)
10190
10191 2008-03-12  Mark Probst  <mark.probst@gmail.com>
10192
10193         * mini.c: Enable generic sharing of calls to non-static
10194         non-interface non-generic non-value-type methods.
10195
10196         * mini-trampolines.c: Resolve calls from shared generic code.
10197
10198 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
10199
10200         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
10201
10202         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
10203
10204 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
10205
10206         * mini.c: some fixes for the AOT compiler.
10207
10208 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10209
10210         * cpu-amd64.md: Add clob:1 to some float opcodes.
10211
10212 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10213
10214         * mini.h: Added MiniVerifierMode enumeration.
10215
10216         * mini.c: Added mini_verifier_set_mode to control
10217         the usage of the new verifier.
10218
10219         * mini.c (mono_method): Integrated the new verifier.
10220
10221         * driver.c: Extended --security option with validil and
10222         verifiable options to activate the new verifier.
10223
10224 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10225
10226         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10227         optimization to ctors taking 0 or 2 arguments too.
10228
10229         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10230         a bit.
10231
10232         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10233
10234         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10235
10236 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10237
10238         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10239         non-aot case as well.
10240
10241         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
10242
10243         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
10244         changes.
10245
10246         * aot-compiler.c (encode_patch): Ditto.
10247
10248         * mini.h (G_MININT32): Fix the definition of this.
10249
10250 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
10251
10252         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
10253
10254         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
10255
10256 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10257
10258         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
10259         methods returning vtypes in registers.
10260         (mono_arch_allocate_vars): Ditto.
10261
10262         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
10263
10264         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
10265
10266         * generics.cs: Add a test from the linear IR branch.
10267
10268         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
10269
10270         * mini.c (inline_method): Cache failed inline attempts.
10271
10272 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10273
10274         * mini.c: For shared methods of generic classes put the location
10275         of "this" into the MonoGenericJitInfo.
10276
10277         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
10278         register out of a MonoContext by register number.  Add the generic
10279         sharing context as an argument to mono_arch_find_this_argument().
10280
10281         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
10282         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
10283         for new arch function.
10284
10285         * mini-exception.c: Handle open exception clauses in shared
10286         generic code.
10287
10288         * mini-trampolines.c: Supply additional argument to
10289         mono_arch_find_this_argument().
10290
10291 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10292
10293         * Makefile.am (regtests): Run the bench.exe tests last.
10294
10295 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
10296
10297         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
10298         a bit.
10299
10300 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
10303         with MS.
10304
10305         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
10306         
10307         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
10308
10309         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
10310         whose class has no cctor.
10311
10312         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
10313
10314 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
10315
10316         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
10317         unverified.
10318
10319 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
10320
10321         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
10322         to be in sync with the code on the linear IR branch.
10323
10324         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
10325
10326         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
10327
10328 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10329
10330         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
10331
10332         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
10333
10334         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
10335
10336         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
10337
10338         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
10339         
10340         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
10341         body.
10342
10343 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
10344
10345         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
10346         OP_LOADR4_MEMBASE emission.
10347
10348         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
10349         (mono_spillvar_offset_float): Ditto.
10350
10351         * mini-mips.c (mono_arch_emit_prolog): Ditto.
10352
10353         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
10354         emission.
10355
10356         * basic-long.cs: Add regression tests for them.
10357
10358         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
10359         use.
10360         (mono_arch_allocate_vars): Fix representation of single-precision float
10361         argument.
10362         (mono_arch_output_basic_block): Ditto.
10363
10364         * inssel-mips.brg: Ditto, remove duplicate items.
10365
10366         * mini-mips.c (emit_load_volatile_arguments): New function to handle
10367         arguments of tail calls as on other platforms.
10368         (mono_arch_output_basic_block): Handle tail calls.
10369
10370         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
10371         register.
10372
10373         * objects.cs (test_5_pass_static_struct): Add test for it.
10374
10375         Contributed under MIT/X11 license.
10376
10377 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
10378
10379         * Makefile.am: Use gmcs for compiling the regression tests.
10380
10381         * *.2.cs *.2.il: Rename to *.cs and *.il.
10382
10383 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
10384
10385         * regalloc.h: Make the vassign array smaller.
10386
10387         * mini.c (mini_method_compile): Remove an unused field in cfg.
10388
10389         * mini-codegen.c: Add a bunch of micro optimizations.
10390
10391 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
10392
10393         * regalloc.h: Remove some unused fields.
10394
10395 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
10396
10397         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
10398
10399         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
10400
10401 2008-02-22  Mark Probst  <mark.probst@gmail.com>
10402
10403         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
10404
10405         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
10406         trampoline: Fetch an entry from the runtime generic context.  If
10407         it's NULL, jump to the actual trampoline to fill the runtime
10408         generic context.  Otherwise, return it.
10409
10410         * mini.c: Call the lazy fetch trampoline to get entries out of the
10411         runtime generic context.
10412
10413         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
10414         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
10415         tramp-sparc.c: Stubs for the lazy fetch trampoline.
10416
10417 2008-02-21  Mark Probst  <mark.probst@gmail.com>
10418
10419         * mini.c: Fetch data out of the extensible part of the runtime
10420         generic context instead of calling a helper function.
10421
10422         * generic-sharing.c: Some functions moved into
10423         metadata/generic-sharing.c.  Helper function for fetching other
10424         types now checks and asserts against extensible rgctx (just for
10425         debugging purposes - the helper function isn't called anymore
10426         unless for debugging).
10427
10428 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
10431         for tail calls up to the point that the tests in iltests.exe run. Also add a
10432         dummy CKFINITE implementation.
10433         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
10434         needed for trampoline LMF frames.
10435
10436         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
10437         trampoline LMF frames.
10438
10439 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
10440
10441         * mini.c (inline_method): clean any pending loader error when inlining fail.
10442         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
10443
10444 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10445
10446         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
10447
10448         * aot-runtime.c (decode_patch_info): Ditto.
10449
10450         * mini.c (mono_resolve_patch_target): Ditto.
10451         
10452         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
10453         icall wrappers.
10454
10455         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
10456         
10457         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
10458         if it references an icall address.
10459
10460 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * cpu-s390x.md: Remove some more unused opcodes.
10463         
10464         * cpu-s390x.md: Remove some unused opcodes.
10465
10466         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
10467         mono_op_imm_to_op ().
10468
10469         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
10470         instead of a switch statement.
10471         
10472         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
10473         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
10474
10475         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
10476         
10477         * mini-codegen.c: Remove unused mono_regstate2_... functions.
10478
10479         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
10480         -1.
10481
10482 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * driver.c (mono_main): Improve error reporting when an assembly cannot be
10485         opened. Fixes #362607.
10486
10487         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
10488
10489         * iltests.il.in: Add a test for static methods in interfaces.
10490
10491 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
10492
10493         * genmdesc.c (build_table): Fix a crash on older glib versions.
10494
10495         * cpu-sparc.md: Remove some unused opcodes.
10496         
10497         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
10498         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
10499
10500         * cpu-amd64.md: Remove some unused opcodes.
10501
10502         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
10503         like the other opcodes.
10504
10505 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
10506
10507         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
10508
10509         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
10510
10511         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
10512         variables 'cfg' instead of 'm' for consistency.
10513
10514         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
10515
10516         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
10517         argument holding the vtype return address, to avoid the ambigious use of
10518         cfg->ret for this purpose.
10519
10520         * mini.c (NEW_RETLOADA): Use vret_addr if set.
10521
10522         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
10523         
10524         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
10525         new mono_print_ins () function which only takes one argument.
10526
10527 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
10528
10529         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
10530         macro arguments.
10531
10532 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
10533
10534         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
10535
10536         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
10537
10538         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
10539         opcodes and other small changes.
10540
10541         * mini-ops.h: Add some new opcodes from the linear IR branch.
10542
10543         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
10544
10545         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
10546         opcodes, use the REG_MEMBASE opcodes instead.
10547         
10548         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
10549         opcodes, use the REG_MEMBASE opcodes instead.
10550         
10551         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
10552         linear IR branch.
10553
10554         * mini.c (mono_op_imm_to_op): New helper function.
10555
10556         * mini-ops.h: Add some opcodes from linear IR branch.
10557
10558 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
10559
10560         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
10561         <tsv@solvo.ru>.
10562
10563 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
10564
10565         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
10566         OP_ICONV_TO_R4/R8.
10567
10568         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
10569
10570 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
10571
10572         * aot-compiler.c (emit_method_code): Add an assert.
10573
10574         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
10575         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
10576         methods.
10577
10578 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
10579
10580         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
10581         some load/store opcodes so they are consistent. 
10582         (mono_arch_emit_prolog): Simplify some code.
10583
10584         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
10585
10586         * objects.cs: Add tests for large argument offsets on ARM.
10587
10588         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
10589         stack offsets. Fixes #359651.
10590
10591         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
10592
10593         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
10594
10595         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
10596
10597         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
10598
10599         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
10600
10601         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
10602         rid of CEE_CONV_R_UN.
10603
10604         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
10605
10606 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
10607
10608         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
10609
10610         * mini.c (mono_normalize_opcodes): Add some more opcodes.
10611
10612         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
10613
10614         * cpu-amd64.md: Remove some unused opcodes.
10615
10616         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
10617
10618         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
10619
10620         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
10621         arch specific functions for its parts. Call the peephole pass after local
10622         regalloc so the prolog can compute a more accurate max_offset.
10623         
10624         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
10625         the corresponding OP_I/OP_L opcodes.
10626
10627         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
10628
10629         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
10630
10631 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10632
10633         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
10634         as they are handled in mini.c.
10635
10636         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
10637         
10638         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
10639         case since it is handled in mini.c.
10640
10641         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
10642
10643         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
10644
10645         * *.c: Use the new opcodes in the IR and back end code.
10646
10647         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
10648
10649         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
10650
10651 2008-02-06  Mark Probst  <mark.probst@gmail.com>
10652
10653         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
10654         an assert because it has a race condition.
10655
10656 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10657
10658         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
10659
10660         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
10661
10662         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
10663
10664         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
10665         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
10666
10667 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
10668
10669         * cpu-amd64.md (move): Correct the maximum size of move.
10670
10671 2008-02-05  Mark Probst  <mark.probst@gmail.com>
10672
10673         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
10674         the generic class init trampoline to return quickly if the class
10675         is already inited.
10676
10677 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
10678
10679         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
10680         issues where an 32 bit callsite cannot be patched by a 64 bit address.
10681
10682 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
10683
10684         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
10685         branch.
10686
10687 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
10688
10689         * objects.cs: Add some soft-float tests.
10690
10691         * mini.c: Fix a couple more soft-float issues.
10692
10693         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
10694
10695         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
10696         avoid a REX prefix.
10697
10698 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
10701         exception happens while compiling a virtual method.
10702
10703 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
10706         
10707         * mini-sparc.c: Fix build.
10708
10709         * mini-sparc.c (get_call_info): Add support for generic sharing.
10710
10711         * mini-exceptions.c: Add a FIXME.
10712
10713 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
10714
10715         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
10716         altstack handling code.
10717
10718         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
10719         
10720         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
10721
10722         * mini-s390.c: Add support for generic sharing.
10723
10724         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10725         Fix CAS on s390.
10726         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10727
10728         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
10729
10730         * mini-s390x.c: Add support for generic sharing.
10731         
10732         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10733         Fix CAS on ia64.
10734         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10735
10736         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
10737         can be used since it takes a 16 bit signed immediate.
10738
10739         * inssel-s390x.brg: Fix OP_SETRET.
10740
10741         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
10742
10743         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
10744
10745         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
10746
10747         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
10748
10749         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10750         in one place.
10751
10752         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10753         stuff.
10754
10755         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10756         of the unused mono_arch_patch_delegate_trampoline stuff.
10757
10758 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10759
10760         * basic-long.cs: Move the fp related tests to basic-float.cs.
10761
10762         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10763
10764         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10765
10766         * basic-calls.cs: Add a test for proper float argument passing.
10767
10768         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10769         if the context corresponds to an exception received through a signal.
10770
10771         * exceptions.cs: Add a test for nullref handling at the start of a try
10772         clause.
10773
10774         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10775
10776         * jit-icalls.c (mono_break): New JIT icall.
10777
10778         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10779
10780         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10781
10782 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10783
10784         * cpu-*.md: Get rid of unused opcodes.
10785
10786         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10787
10788         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10789         by all platforms.
10790
10791         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10792         define.
10793
10794         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10795         the arch independent trampoline code in mini-trampolines.c.
10796
10797         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10798
10799         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10800
10801         * mini-s390.h: Remove an unused define.
10802         
10803         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10804         the arch independent trampoline code in mini-trampolines.c.
10805
10806         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10807
10808 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10809
10810         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10811
10812         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10813
10814         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10815
10816         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10817
10818         * cpu-amd64.md: Use smaller sizes for int opcodes.
10819
10820         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10821
10822         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10823         objects.cs.
10824
10825         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10826         debugging.
10827
10828         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10829         instead of though a pointer to save an indirection when accessing elements of
10830         the array.
10831
10832         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10833         some typos.
10834         (NOT_IMPLEMENTED): New helper macro.
10835         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10836         of a bb.
10837
10838         * *.c: Use the new helper macro.
10839
10840 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10841
10842         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10843
10844 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10847         stack slots.
10848
10849 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10850
10851         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10852         profiling is enabled.
10853         
10854         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10855         the end.
10856         (mono_arch_emit_prolog): Add more first bblock optimizations.
10857
10858         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10859         in order if possible.
10860         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10861         bblock, since the arguments are still in their original registers.
10862
10863         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10864
10865 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10866
10867         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10868         as well.
10869
10870         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10871         offset 0.
10872
10873         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10874
10875         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10876         process async exceptions received while in unmanaged code.
10877
10878         * mini.c (mini_init): Install a callback with the runtime which will be called
10879         when a thread receives an async exception while in unmanaged code.
10880
10881         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10882
10883         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10884
10885 2008-01-16  Wade Berrier  <wberrier@novell.com>
10886
10887         * cpu-g4.md:
10888         * cpu-arm.md:
10889         * cpu-s390x.md:
10890         fix build
10891
10892 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10893
10894         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10895         compilation with sun cc.
10896
10897         * cpu-*.md: Fix the build.
10898
10899         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10900
10901         * mini-amd64.h: Add some comments to the MonoLMF structure.
10902
10903         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
10904         
10905         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
10906         in the LMF structure if possible. This saves two instructions in the
10907         managed->native wrappers.
10908
10909         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
10910
10911 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10912
10913         * generic-sharing.c: New type argument lookup code which uses the
10914         runtime generic context template.
10915
10916 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10917
10918         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
10919
10920         * mini-arm.c (add_general): Fix arm eabi parameter passing.
10921         (mono_arch_output_basic_block): Fix localloc implementation.
10922
10923         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
10924
10925         * mini-ia64.c (peephole_pass): Fix ia64 build.
10926
10927         * mini-amd64.c (peephole_pass): Fix a warning.
10928         
10929         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
10930         at a constant offset from sp/fp.
10931
10932         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
10933         instead of obtaining it from *lmf in the managed method case.
10934
10935 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10936
10937         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
10938
10939 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
10940
10941         * mini.h (MonoInstList): New type.
10942         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
10943         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
10944         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
10945         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
10946         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
10947         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
10948         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
10949         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
10950         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
10951         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
10952         MONO_INST_LIST_FOR_EACH_ENTRY,
10953         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
10954         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
10955         mono_inst_list_first, mono_inst_list_last,
10956         mono_inst_list_next, mono_inst_list_prev): New instruction
10957         list handling interfaces.
10958         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
10959         list head 'ins_list'.
10960         (MonoInst): Replace next pointer with list head 'node'.
10961         (MonoCallInst): Make 'out_args' a MonoInstList.
10962         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
10963         (MonoCompile): Delete reverse_inst_list and
10964         reverse_inst_list_len.
10965         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
10966         mono_arch_lowering_pass, mono_arch_local_regalloc,
10967         mono_arch_output_basic_block, mono_arch_emit_prolog):
10968         Convert to new instruction lists.
10969         (insert_after_ins): Delete.
10970         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
10971         instruction lists.
10972         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
10973         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
10974         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
10975         mono_emulate_opcode, mono_emit_load_got_addr,
10976         inline_method, mono_method_to_ir, mono_print_bb_code,
10977         print_dfn, decompose_pass, nullify_basic_block,
10978         replace_out_block_in_code, remove_block_if_useless,
10979         merge_basic_blocks, move_basic_block_to_end,
10980         try_unsigned_compare, optimize_branches, mono_print_code,
10981         mini_select_instructions, remove_critical_edges): Likewise.
10982         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
10983         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
10984         mono_arch_output_basic_block, mono_arch_emit_prolog):
10985         Likewise.
10986         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
10987         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10988         mono_arch_output_basic_block): Likewise.
10989         (inst_list_prepend, insert_after_ins): Delete.
10990         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
10991         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
10992         instruction lists.
10993         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
10994         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
10995         mono_arch_emit_prolog): Likewise.
10996         * cfold.c (mono_constant_fold): Likewise.
10997         * liveness.c (visit_bb, mono_analyze_liveness,
10998         optimize_initlocals): Likewise.
10999         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
11000         * graph.c (mono_draw_code_cfg): Likewise.
11001         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
11002         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
11003         mono_ssa_cprop): Likewise.
11004         * abcremoval (get_relations_from_previous_bb, process_block):
11005         Likewise.
11006         * local-propagation (mono_cprop_invalidate_values,
11007         mono_local_cprop_bb): Likewise.
11008         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
11009         peephole_pass, mono_arch_output_basic_block,
11010         mono_arch_emit_prolog): Likewise.
11011         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
11012         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11013         mono_arch_emit_prolog): Likewise.
11014         (insert_after_ins): Delete.
11015         * aliasing.c (print_code_with_aliasing_information,
11016         mono_build_aliasing_information, mono_aliasing_deadce):
11017         Convert to new instruction lists.
11018         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
11019         peephole_pass, NEW_INS, mono_arch_lowering_pass,
11020         mono_arch_local_regalloc, mono_arch_output_basic_block):
11021         Likewise.
11022         (insert_after_ins): Delete.
11023         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
11024         peephole_pass, mono_arch_output_basic_block): Convert to
11025         new instruction lists.
11026         * mini-codegen (InstList, inst_list_prepend,
11027         insert_after_ins): Delete.
11028         (insert_before_ins, get_register_force_spilling,
11029         get_register_spilling, free_up_ireg, free_up_reg,
11030         create_copy_ins, create_spilled_store, alloc_int_reg,
11031         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
11032         to new instruction lists.
11033         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
11034         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11035         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
11036         (insert_after_ins): Delete.
11037         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
11038         mono_arch_local_regalloc, mono_arch_output_basic_block,
11039         mono_arch_call_opcode): Convert to new instruction lists.
11040         (insert_after_ins): Delete.
11041         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
11042         peephole_pass, mono_arch_output_basic_block,
11043         mono_arch_emit_prolog): Convert to new instruction lists.
11044
11045 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
11046
11047         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
11048
11049         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
11050         Fixes #353182.
11051
11052         * Makefile.am (version.h): Make this work with non-bash shells.
11053
11054 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11055
11056         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
11057
11058 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
11059
11060         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
11061         the InitializeArray optimization.
11062
11063 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
11064
11065         * mini.c driver.c: Don't include os/gc_wrapper.h.
11066
11067 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11068
11069         * mini.c (print_jit_stats): Print GC statistics if available.
11070
11071 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
11072
11073         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
11074
11075 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
11076
11077         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
11078
11079 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
11080
11081         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
11082         
11083         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
11084
11085         * driver.c (mono_main): Ditto.
11086
11087 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
11090
11091         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
11092         in the vtable can't be encoded.
11093         (compile_method): Ditto.
11094
11095 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
11096
11097         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
11098         defined.
11099
11100         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
11101         lmf->rbp.
11102
11103         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
11104         the top LMF entry belongs to the current method.
11105
11106         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
11107
11108 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
11109
11110         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
11111         
11112         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
11113
11114         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
11115
11116         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
11117
11118         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
11119
11120         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
11121         implementation.
11122
11123         * basic-float.cs: Add an ulong->double cast test.
11124
11125 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * mini.c (mono_method_to_ir): Fix a warning.
11128
11129 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * mini-ops.h: Add OP_SWITCH.
11132
11133         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
11134         CEE_SWITCH in back-end code, use OP_SWITCH instead.
11135
11136 2007-12-11  Geoff Norton  <gnorton@novell.com>
11137
11138         * mini-s390x.c: Minor change to the MAX() define to allow
11139         it to compile with other gcc versions.
11140
11141 2007-12-11  Geoff Norton  <gnorton@novell.com>
11142
11143         * cpu-s390x.md:
11144         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
11145
11146 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11147
11148         exceptions-arm.c (mono_arch_get_restore_context): Restore
11149         the frame pointer.
11150
11151         exceptions-arm.c (throw_exception): Save the frame pointer.
11152         This is a partial fix for #323747. Only the client side is
11153         fixed.
11154
11155 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11156
11157         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
11158         was using an unrelated variable to log the class which
11159         needed the cctor to be called. This was crashing on arm.
11160
11161 2007-12-09  Robert Jordan  <robertj@gmx.net>
11162
11163         * mini-x86.c (mono_arch_emit_epilog):
11164         Consider all kinds of 64-bit types. Fixes #323114.
11165
11166 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
11167
11168         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
11169
11170 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11171
11172         * mini-amd64.c (peephole_pass): Add a missing instruction check.
11173
11174 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11175
11176         * mini.c: run type ctor before allocating an object, not only
11177         when running it's constructor method (fixes at least part of bug #342507).
11178
11179 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11180         
11181         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
11182         
11183         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
11184         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
11185         function.
11186
11187         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
11188         mono_generic_class_init_trampoline () the same as it is done with the other
11189         trampolines.
11190
11191         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
11192         aot-runtime.c aot-compiler.c: Implement AOT support.    
11193
11194 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11195
11196         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
11197         build for archs which don't have the vtable trampoline defined
11198         yet.
11199
11200 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11201
11202         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
11203
11204         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
11205
11206         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11207
11208         * tramp-<ARCH>.c: Use the new helper function.
11209
11210 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11211
11212         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11213         trampoline call, which takes a vtable argument.
11214
11215         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11216         OP_TRAMPCALL_VTABLEs like other calls.
11217
11218         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11219         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11220         call.  Implemented a support function which fetches the vtable
11221         from a register set.
11222
11223         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11224         Implemented a generic class init trampoline, using the
11225         OP_TRAMPCALL_VTABLE opcode.
11226
11227         * mini.c: Implemented static field access when sharing generic
11228         code.  This implies initing the class using the new
11229         OP_TRAMPCALL_VTABLE call.
11230
11231 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11232
11233         * mini.c: Don't compile methods with sharing enabled if their
11234         classes are disabled for sharing.
11235
11236 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11237
11238         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11239         opcodes. Fixes #346563.
11240
11241         * objects.cs: Add a new test.
11242
11243         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
11244
11245         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
11246         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
11247
11248 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
11251
11252 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
11253
11254         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
11255         code stream.
11256
11257 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
11260
11261         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
11262         optimization in the AOT case.
11263         
11264 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
11267         
11268         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11269
11270         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
11271
11272         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
11273
11274         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
11275         is created by the inlined delegate ctor.
11276
11277         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
11278
11279         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
11280
11281 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
11282
11283         * cpu-x86.md: Fix the length of ckfinite.
11284
11285 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
11286
11287         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
11288         
11289         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
11290         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
11291
11292         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
11293
11294         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
11295         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
11296
11297 2007-11-28  Martin Baulig  <martin@ximian.com>
11298
11299         * mini-x86.c
11300         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
11301         after creating the trampoline.
11302
11303 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
11304
11305         * aot-runtime.c (load_aot_module): Check runtime version if needed.
11306
11307         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
11308         the same version.
11309
11310         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
11311         instead of the calling method to help AOT.
11312
11313         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
11314
11315 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
11316
11317         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
11318         is defined.
11319
11320 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
11321
11322         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
11323         
11324         * aot-compiler.c (compile_method): Correct check for generic method definitions.
11325         (encode_method_ref): No need to handle generic method definitions specially.
11326
11327         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
11328
11329         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
11330         decode_klass_info.
11331
11332         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
11333         encode_klass_info.
11334         (compile_method): Enable generic sharing.
11335
11336 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
11337
11338         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
11339         (mini_method_compile): Add preliminary support for AOTing shared generic code.
11340
11341         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
11342         generic code.
11343
11344         * mini-trampolines.c: Fix a warning.
11345
11346         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
11347         NEW_PCONST.
11348         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
11349         (generic_class_is_reference_type): Remove unused function.
11350
11351         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
11352         in the generic vtable trampoline case.
11353
11354         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
11355         
11356         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
11357         return an AOT method based on a vtable slot.
11358
11359         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
11360
11361         * mini.c (mini_get_vtable_trampoline): Export this.
11362
11363 2007-11-22  Martin Baulig  <martin@ximian.com>
11364
11365         * debug-debugger.h
11366         (MonoDebuggerInfo): Move `debugger_version' up.
11367
11368 2007-11-22  Martin Baulig  <martin@ximian.com>
11369
11370         * mini-amd64.c
11371         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
11372
11373         * mini-trampolines.c
11374         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
11375         after compiling the method.
11376
11377 2007-11-20  Martin Baulig  <martin@ximian.com>
11378
11379         * debug-mini.c
11380         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
11381         (mono_debugger_remove_breakpoint): Likewise.
11382         (mono_debugger_check_breakpoints): Likewise.
11383
11384         * debug-debugger.c: Implement the new breakpoint interface here.
11385
11386 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
11387
11388         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
11389         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
11390
11391         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
11392
11393 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
11394
11395         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
11396
11397         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
11398         mini.c.
11399
11400         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
11401         mini.c.
11402
11403         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
11404         returning a vtype in a register.
11405
11406         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
11407         here from the arch specific code.
11408
11409         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
11410         mini.c.
11411
11412         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
11413         (mono_arch_emit_prolog): Increment maximum prolog size.
11414
11415         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
11416         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
11417
11418         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
11419         MonoGenericSharingContext.
11420
11421         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
11422         MonoGenericSharingContext. Allocate memory from the cfg mempool.
11423
11424 2007-11-15  Mark Probst  <mark.probst@gmail.com>
11425
11426         * mini.c, mini.h, generic-sharing.c: Functions for producing code
11427         which extract fields out of the runtime generic context.  Full
11428         sharing of the NEWARR opcode.
11429
11430 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11431
11432         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
11433         --enable-minimal=ssa.
11434
11435 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
11436
11437         * mini-trampolines.c (mono_delegate_trampoline): Update after 
11438         mono_marshal_get_delegate_invoke () signature change.
11439
11440 2007-11-13  Mark Probst  <mark.probst@gmail.com>
11441
11442         * mini.c: Removed the shared context in favor of the generic
11443         sharing context.  Allocate the MonoJitInfo structure with room for
11444         the generic sharing context if it's needed.
11445
11446         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
11447         domain-internals.h now.
11448
11449         * mini-x86.c: Pass the generic sharing context to get_call_info ().
11450
11451         * generic-sharing.c: Several changes for working without a shared
11452         context and instead operating on open types instead.
11453
11454 2007-11-12  David S. Miller  <davem@davemloft.net>
11455
11456        * inssel-sparc.brg: Fix double instruction emit.
11457
11458 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
11461         Get/Set/Address methods.
11462         
11463         * mini.c debug-debugger.c mini-trampolines.c: Update after 
11464         mono_marshal_get_delegate_invoke signature change.
11465
11466 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11467
11468         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
11469         This can happens with dynamic methods. Fixes the other bug in #322722.
11470
11471 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11472
11473         * tramp-arm.c (mono_arch_patch_callsite): Support patching
11474         BX call sequence.
11475
11476         * mini-arm.c (arm_patch): Implement patching of BX call
11477         sequence. Fixes one of the bugs in #322722.
11478
11479 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
11480
11481        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
11482        under Linux.  We only need to flush every 32-byte cache line.    
11483
11484 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
11485
11486         * mini.c:
11487         move_basic_block_to_end: Add branches when needed, eventually creating
11488         a new BB.
11489         optimize_branches: added a parameter that tells if it's ok to create
11490         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
11491         and avoid calling move_basic_block_to_end when it's not ok.
11492         Fixes bug 318677.
11493
11494 2007-11-07  Mark Probst  <mark.probst@gmail.com>
11495
11496         * mini.c: Abort inlining call to InitializeArray if something
11497         looks wrong.  Let the icall handle it, which now has proper safety
11498         checks.
11499
11500 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
11501
11502         * mini.c (mono_spill_call): add support for soft-float.
11503
11504         * mini.c (mono_method_to_ir): add support for soft-float
11505         to inlined functions that return float.
11506
11507         * mini.c (mono_method_to_ir): add support for soft-float
11508         to cee_stsfld opcode on float fields.
11509
11510 2007-11-05  Geoff Norton  <gnorton@novell.com>
11511
11512         * mini-x86.h: Fix the structure access for X86 Leopard.
11513
11514
11515 2007-11-05  Martin Baulig  <martin@ximian.com>
11516
11517         * mini-trampolines.c
11518         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
11519         after compiling the method to notify the debugger.
11520
11521 2007-11-05  Martin Baulig  <martin@ximian.com>
11522
11523         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
11524
11525 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
11526
11527         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
11528         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
11529
11530 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
11531
11532         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
11533         native-to-managed wrappers.
11534         
11535 2007-11-01  Geoff Norton  <gnorton@novell.com>
11536
11537         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
11538         members.
11539
11540 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11541
11542         * mini.c, mini-x86.c: when getting back from unmanaged code
11543         to managed via a marshaled delegate we also need to set the
11544         right domain.
11545
11546 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11547
11548         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
11549         for amd64.
11550
11551 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11552
11553         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
11554         let the debugger or other external agents to tell the JIT when
11555         a sw breakpoint has been inserted in the code that the JIT needs
11556         to be able to inspect.
11557
11558 2007-10-31  Martin Baulig  <martin@ximian.com>
11559
11560         * debug-debugger.h
11561         (MonoDebuggerInfo): Remove `runtime_class_init'.
11562
11563 2007-10-30  Martin Baulig  <martin@ximian.com>
11564
11565         * debug-mini.h
11566         (mono_debugger_thread_created): Added `MonoThread *' argument.
11567         (mono_debugger_extended_notification): New public method.
11568         (mono_debugger_trampoline_compiled): New public method.
11569
11570         * debug-mini.c
11571         (MonoDebuggerThreadInfo): Added `thread' and
11572         `extended_notifications' fields.
11573
11574         * debug-debugger.c
11575         (debugger_executable_code_buffer): New static variable.
11576
11577         * debug-debugger.h
11578         (MonoDebuggerInfo): Added `executable_code_buffer',
11579         `executable_code_buffer_size', `breakpoint_info_area',
11580         `breakpoint_table' and `breakpoint_table_size'.
11581
11582 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
11583
11584         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
11585         that IP  either is an unused value or the vtable pointer. IMT 
11586         calls use vtable + offset now. Reduced by almost half the size
11587         of IMT entries.
11588
11589 2007-10-26  Jonathan Chambers <joncham@gmail.com>
11590
11591         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
11592         defines to access param registers. Replace long usage with
11593         gsize as sizeof(long) != sizeof(void*) on Win64.
11594
11595         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
11596         on Win64. Fix intrinsic, use _AddressOfReturnAddress
11597         instead of non-existant _GetAddressOfReturnAddress.
11598
11599         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
11600         param registers. Save/restore %rdi and %rsi in MonoLMF.
11601
11602         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
11603         param registers. Modify (throw_exception) signature to take 
11604         %rdi and %rsi on Win64. 
11605
11606         Code is contributed under MIT/X11 license.
11607
11608 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11609
11610         * helpers.c: unlink debugging output files.
11611
11612 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
11613
11614         * mini.c: Move mono_create_ftnptr () to object.c.
11615
11616 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
11617
11618         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
11619         optional. This function can now be used to disassemble code generated
11620         outside the JIT such as trampolines and IMT thunks.
11621
11622         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
11623
11624         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
11625         vtable pointer from a ldr instruction.
11626
11627         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
11628         new IMT call sequence.
11629
11630         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
11631         call sequence for interface invocations.
11632
11633         * mini-arm.c (mono_arch_emit_imt_argument): added, required
11634         for imt support. This function is empty since IMT on ARM requires no
11635         special handling on the IR side.
11636
11637         * mini-arm.c (mono_arch_find_imt_method): added, required for
11638         imt support.
11639
11640         * mini-arm.c (mono_arch_find_this_argument): added, required
11641         for imt support.
11642
11643         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
11644         a ldr instruction to load a value stored in the code stream.
11645
11646         * mini-arm.c (mono_arch_build_imt_thunk):added, required
11647         for imt support.
11648
11649
11650 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * mini.c (mini_init): Install the jump trampoline callback.
11653
11654 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11655
11656         * mini-trampolines.c: handle synchronized methods with the common
11657         vtable trampoline (bug #335601).
11658
11659 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
11660
11661         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
11662
11663         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
11664         64 bit platforms.
11665
11666         * mini-ia64.h mini-ia64.c: Add support for IMT.
11667
11668         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
11669         prolog. Fixes #331958.
11670
11671 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
11672
11673         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
11674
11675 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11676
11677         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
11678         trampoline.
11679
11680 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11681
11682         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
11683         trampoline.
11684
11685 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
11686
11687         * mini-x86.c, mini-x86.h: x86 support for the common vtable
11688         trampoline.
11689
11690 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11691
11692         * mini-trampolines.c: changed the magic rampoline to understand
11693         the common vtable trampoline method: the method to invoke is
11694         determined by the vtable displacement of the call.
11695
11696 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11697
11698         * mini.c, mini.h: register the common vtable trampoline if the
11699         architecture supports it.
11700
11701 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11702
11703         * cpu-amd64.md: use the correct max length for tls_get.
11704
11705 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
11706
11707         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
11708         CEE_STELEM_ANY. Fixes #333696.
11709
11710 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11711
11712         * exceptions-x86.c: provide more graceful handling of the case where
11713         we followed a bogus function pointer from managed code (bug #332866).
11714
11715 2007-10-11  Mark Probst  <mark.probst@gmail.com>
11716
11717         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
11718         replaces the generic_shared flag and will carry more information
11719         in the future.
11720
11721         * generic-sharing.c: Added mini_type_stack_size() which allows
11722         allows open types if given a generic sharing context.
11723         mini_get_basic_type_from_generic() takes a
11724         MonoGenericSharingContext* instead of a MonoCompile* now.
11725
11726         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
11727         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
11728         mini-sparc.c, mini-x86.c: Trivial changes required by the two
11729         changes above.  Just passing arguments through to the right
11730         places.
11731
11732 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11733
11734         * mini-arm.c: unify the call emission to emit_code_seq().
11735
11736 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
11737
11738         * tramp-arm.c: reduced the trampoline size.
11739
11740 2007-10-10  Mark Probst  <mark.probst@gmail.com>
11741
11742         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
11743         variable handling out of arch-specific code.
11744
11745 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
11746
11747         * mini-arm.c: implemented fast delegate dispatch.
11748
11749 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11750
11751         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11752         that fp elimination is turned off if the space required by locals is too
11753         big. Fixes #331958.
11754
11755 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11756
11757         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11758         ARM to the new style trampoline.
11759
11760 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11763
11764         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11765
11766 2007-10-09  Martin Baulig  <martin@ximian.com>
11767
11768         * debug-debugger.h
11769         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11770         `field_info_offset_offset'.     
11771
11772 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11773
11774         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11775         removed more internal usage of the r11 register and made it available
11776         to the register allocator.
11777
11778 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11779
11780         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11781         when sharing generics and treat type variables as references.
11782
11783 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11784
11785         * mini-ppc.c: started removing the internal uses of register r11
11786         to eventually allow the register allocator to manage it as an
11787         additional available register.
11788
11789 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11790
11791         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11792
11793 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11794
11795         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11796         specific trampolines as they are not performance critical as a jump
11797         target (maybe align as before only for AOT code?). This saves about
11798         200 KB of native code on x86 for monodevelop startup.
11799
11800 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11801
11802         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11803         monodevelop startup.
11804
11805 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11806
11807         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11808
11809         * mini-sparc.h mini-sparc.c: Implement IMT support.
11810
11811         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11812         its smaller and doesn't clobber sparc_g1.
11813
11814         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11815
11816 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11817
11818         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11819
11820 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11821
11822         * mini-ppc.c: implemented fast delegate invocation.
11823
11824 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11825
11826         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11827
11828 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11829
11830         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11831         code to the new style trampoline in preparation for IMT support.
11832
11833 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11834
11835         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11836         systems already. This also reduces the specific trampiline sizes and
11837         prepares for the use of r12 as the IMT identifier register.
11838
11839 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11840
11841         * mini-mips.h: endianess fix (simplified from a patch by
11842         Thomas Kunze <thommy@tabao.de>, bug #323737).
11843
11844 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11845
11846         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11847         to access ucontext fields and enable netbsd support
11848         (partially from Magnus Henoch <mange@freemail.hu>).
11849
11850 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11851
11852         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11853         use the preprocessor from the CPP env var if it is set.
11854
11855 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11856
11857         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11858         code, before interface_offset gets used.
11859
11860 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11861
11862         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11863         mono_class_setup_vtable () before accessing klass->vtable.
11864
11865 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11866
11867         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11868         hackish.
11869
11870 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11871
11872         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11873         IMT slots (this saves hundreds of KB of memory in programs like
11874         IronPython and Monodevelop).
11875
11876 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11877
11878         * mini.c: print the delegate counter.
11879
11880 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11881
11882         * mini-x86.c: make it easier to enable the debugging code for IMT
11883         slots.
11884
11885 2007-09-28  Martin Baulig  <martin@ximian.com>
11886
11887         * debug-debugger.h
11888         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11889         `mono_method_klass_offset' and `mono_method_token_offset'.
11890
11891 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11892
11893         * mini.c: First generics sharing implementation.  Can only share
11894         in very simple cases.  If sharing doesn't work it falls back to
11895         dedicated compilation.
11896
11897         * mini.h: Flag in MonoCompile to specify whether generic
11898         compilation is shared.  Flags enum for marking which generic inst
11899         of a context is used.  Prototypes for helper functions.
11900
11901         * generic-sharing.c: Helper functions for generic method sharing.
11902
11903         * optflags-def.h: Optimization flag (gshared) for enabling generic
11904         method sharing added.
11905
11906         * Makefile.am: generic-sharing.c added.
11907
11908 2007-09-19 Daniel Nauck <dna@mono-project.de>
11909
11910         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
11911
11912 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
11913         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
11914         fixes bug 325507.
11915
11916 2007-09-19  Martin Baulig  <martin@ximian.com>
11917
11918         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
11919         mono_debug_cleanup() is now part of mono_cleanup().
11920
11921 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11922
11923         * driver.c (mono_main): Fix a warning.
11924
11925 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11926
11927         * aot-compiler.c: Optimize various parts when processing large assemblies.
11928         Fixes ##325568.
11929
11930         * mini.c (mono_patch_info_hash): Improve hash function.
11931
11932 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11933
11934         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
11935         
11936         Code is contributed under MIT/X11 license.
11937
11938 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11939
11940         * mini.c (mini_init): Fix a leak.
11941
11942         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
11943
11944 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11945
11946         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
11947
11948 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11949
11950         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
11951
11952 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11953
11954         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
11955         variance tests.
11956
11957         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
11958
11959         * mini.c (handle_alloc): Enable managed allocators in AOT code.
11960
11961         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
11962
11963         * aot-runtime.c (decode_patch_info): Ditto.
11964
11965 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11966
11967         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
11968         static case. Cache delegates in architecture specific code, 
11969         based on number of parameters.
11970         
11971         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
11972         in architecture specific code, based on number of parameters.
11973         
11974         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
11975         caching happen in architecture specific code now.
11976         
11977         Code is contributed under MIT/X11 license.
11978
11979 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11980
11981         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
11982         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
11983         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
11984
11985         Code is contributed under MIT/X11 license.
11986
11987 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11988         * mini.c: (mono_thread_abort) Fixed bug #82416.
11989
11990 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11991
11992         * mini.: hook the new managed GC allocation feature into the JIT.
11993
11994 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11995
11996         * mini.c: implementation for the new runtime tls opcode.
11997
11998 2007-09-11  Martin Baulig  <martin@ximian.com>
11999
12000         * debug-debugger.h
12001         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
12002         `mono_method_inflated_offset'.
12003
12004 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * driver.c mini.h mini.c: Add a new devel command line option for injecting
12007         async exceptions into a method.
12008
12009         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
12010         purpose of testing whenever the unwinder works at every instruction.
12011
12012 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12013
12014         * mini.c: check accessibility of method used in ldftn (fixes
12015         bug #82635).
12016
12017 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
12018
12019         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
12020
12021         * inssel.brg: Fix a warning.
12022
12023 2007-09-03  Martin Baulig  <martin@ximian.com>
12024
12025         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
12026         now takes the `main_method' as argument.
12027
12028 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
12029
12030         * cpu-sparc.md (endfilter): Add missing src1:i argument.
12031
12032 2007-08-30  Jonathan Chambers <joncham@gmail.com>
12033
12034         * driver.c: include the cil-coff.h header on Windows.
12035         
12036         Code is contributed under MIT/X11 license.
12037
12038 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12039
12040         * mini.c, driver.c: don't include the cil-coff.h header.
12041
12042 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12043
12044         * mini.c: flag places that needs fixes fo soft-float support.
12045
12046 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
12047
12048         * mini.h, inssel-float.brg: fix soft-float constant loads on big
12049         endian systems (partially from Dean Jenkins, bug #81924).
12050
12051 2007-08-28  Mark Probst  <mark.probst@gmail.com>
12052
12053         * mini.c (check_linkdemand): Remove embedded reference object in
12054         call to LinkDemandSecurityException.
12055         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
12056         with an IntPtr instead of a reference object.
12057
12058 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
12059
12060         * mini.c (handle_initobj): Handle alignment properly.
12061
12062         * inssel.brg (mini_emit_memset): Ditto. 
12063
12064         * inssel.brg (mini_emit_memcpy): Ditto. 
12065
12066         * inssel-sparc.brg: Ditto.              
12067
12068         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
12069
12070 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
12073         exceptions raised in unmanaged code. Fixes part of #82594.
12074
12075 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12076
12077         * mini.c (mono_method_to_ir), declsec.c
12078         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
12079
12080 2007-08-22  Martin Baulig  <martin@ximian.com>
12081
12082         * debug-mini.h
12083         (MonoDebuggerThreadInfo): New typedef.
12084         (mono_debugger_thread_table): New global variable.
12085         (mono_debugger_thread_created): New public function.
12086         (mono_debugger_thread_cleanup): New public function.
12087
12088         * debug-debugger.h
12089         (MonoDebuggerInfo):
12090         - removed `get_current_thread' and `lookup_assembly'.
12091         - removed `data_table'.
12092         - added `thread_table'.
12093
12094         * mini.c
12095         (mono_thread_start_cb): Call mono_debugger_thread_created().
12096         (mono_thread_attach_cb): Likewise.
12097         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
12098         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
12099         initial domain.
12100
12101         * driver.c (mono_main): Move mono_debug_init() up, before calling
12102         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
12103
12104 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12105
12106         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
12107         together when passing several arguments of type double (gives a small
12108         speedup and saves a few bytes of generated code).
12109
12110 2007-08-20  Jb Evain  <jbevain@novell.com>
12111
12112         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
12113
12114 2007-08-20  Jb Evain  <jbevain@novell.com>
12115
12116         * mini.c (mono_method_to_ir): throw MethodAccessException
12117         and FieldAccessException instead of InvalidProgramException.
12118
12119 2007-08-20  Mark Probst  <mark.probst@gmail.com>
12120
12121         * mini.c: CoreCLR security checks.
12122
12123         * mini.h: Removed MonoSecurityMode (moved to
12124         metadata/security-manager.h) and mono_security_mode global var
12125         (replaced by set/get functions in security-manager.h).
12126
12127         * driver.c: Added "core-clr-test" security mode for testing.  Used
12128         set-function for setting security mode.
12129
12130 2007-08-17  Mark Probst  <mark.probst@gmail.com>
12131
12132         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
12133         the new jit_info_table.
12134
12135         * driver.c: Test code for the new jit_info_table (enabled by the
12136         define MONO_JIT_INFO_TABLE_TEST).
12137
12138 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
12139
12140         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
12141         detection of call <REG> instruction sequence. Fixes build on freebsd.
12142
12143 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
12144
12145         * mini-exceptions.c: Fix a warning.
12146
12147 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
12148
12149         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
12150         stack overflow handling code on amd64 too.
12151
12152         * mini-exceptions.c (mono_setup_altstack): Make this use 
12153         mono_thread_get_stack_bounds ().
12154
12155         * mini-x86.h: Disable sigaltstack on solaris x86.
12156
12157 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
12158
12159         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
12160
12161 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
12162
12163         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
12164
12165 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
12166
12167         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
12168
12169         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
12170
12171 2007-08-03  Neale Ferguson <neale@sinenomine.net>
12172
12173         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
12174         due to alignment.
12175
12176 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12177
12178         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
12179         to be emitted (bug #82281).
12180
12181 2007-08-01  Martin Baulig  <martin@ximian.com>
12182
12183         Merged the `debugger-dublin' branch.
12184
12185         * debug-debugger.h (MonoDebuggerInfo):
12186         Removed the `old_*' compatibility entries.
12187         Added `debugger_version' and `data_table'.
12188         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
12189         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
12190
12191         * debug-mini.c
12192         (MiniDebugMethodBreakpointInfo): Add `address_list'.
12193         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
12194         instead of a `gconstpointer'.
12195         (mono_debugger_insert_method_breakpoint): Return a
12196         `MonoDebugMethodAddressList *'.
12197
12198 2007-06-28  Martin Baulig  <martin@ximian.com>
12199
12200         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12201
12202 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12203
12204         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
12205         __builtin_frame_address () since it is broken on older gcc versions.
12206
12207 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12208
12209         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12210         on the stack overflow handling and made the managed stack overflows
12211         catchable in most cases using soft guard pages.
12212         * exceptions-x86.c: added code to restore the protection in the soft
12213         guard pages at the end of exception handling.
12214
12215 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12216
12217         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12218
12219 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12220
12221         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12222         exception handling.
12223
12224 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12225
12226         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12227         signal handling support until it has been ported to the new mechanism.
12228         * mini.c: fixed stack overflow detection and use the new
12229         architecture code  to handle signals on the altstack.
12230
12231 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12232
12233         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12234         stack overflows on the alt stack.
12235
12236 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12237
12238         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12239         stack overflows on the alt stack.
12240
12241 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
12242
12243         * exceptions-ppc.c: cleanup preparing for altstack support.
12244
12245 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12246
12247         * exceptions-arm.c: cleanup preparing for altstack support.
12248
12249 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12250
12251         * mini.c (print_jit_stats): Output hazard pointer stats.
12252
12253 2007-07-26  Mark Probst  <mark.probst@gmail.com>
12254
12255         * driver.c, mini.c: Replaced security mode flags with a single
12256         enum variable.
12257
12258 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12259
12260         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
12261
12262 2007-07-25  Mark Probst  <mark.probst@gmail.com>
12263
12264         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
12265         (which doesn't do anything yet) for activating Core CLR
12266         (Silverlight) security.
12267
12268 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12269
12270         * mini-codegen.c: work around a possible gcc bug on arm.
12271
12272 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12273
12274         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
12275         message for platforms that don't support AOT compilation.
12276
12277 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12278
12279         * mini.h, mini.c, driver.c: temporary smcs hack.
12280
12281 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
12282
12283         * mini-arm.h, mini-arm.c: arm EABI fixes.
12284
12285 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12286
12287         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
12288         case.
12289
12290         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
12291         trampolines taking a method argument.
12292
12293         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
12294
12295         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
12296         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
12297
12298         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
12299         JIT compilation throws an exception. Fixes #82050.
12300
12301 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12302
12303         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
12304         with the MONO_EXCEPTION_ defines.
12305
12306 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
12307
12308         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
12309         #82117.
12310         
12311         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
12312         the cause of an assertion.
12313
12314 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
12315
12316         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
12317         removed.
12318
12319 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12320
12321         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
12322         assert. Should fix #82103.
12323
12324 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12325
12326         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
12327         here too. Fixes #82095.
12328
12329         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
12330         addresses.
12331
12332         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
12333
12334         * mini-amd64.h: Enable IMT for amd64.
12335         
12336         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
12337
12338 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
12339
12340         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
12341
12342 2007-07-12  Mark Probst  <mark.probst@gmail.com>
12343
12344         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
12345         as soon as check_linkdemand sets an exception_type.
12346
12347 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12348
12349         * mini-x86.c: fixed offsets for IMT call sequence.
12350         * mini-x86.h: enable IMT again.
12351
12352 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12353
12354         * trace.c (mono_trace_enter_method): Decode MonoType too.
12355
12356         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
12357
12358         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
12359
12360         * mini-amd64.c: Add preliminary IMT implementation.
12361         
12362 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12363
12364         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
12365         understand the new IMT-base interface invocation (thanks to
12366         Daniel Nauck for the report and the remote debugging session).
12367
12368 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12369
12370         * mini-x86.c: size and speed optimizations for the IMT bsearch.
12371
12372 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12373
12374         * Makefile.am (aotcheck): Make this actually use the AOTed code.
12375
12376 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
12377
12378         * mini-trampolines.c: implement AOT IMT support.
12379         * mini-x86.h: enable IMT support for wider testing.
12380
12381 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * inssel.brg (emit_imt_argument): Add aot support here.
12384
12385         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
12386
12387 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12388
12389         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
12390         of the IMT implementation, partially from massi, with my
12391         implementation of the bsearch sequence. Disabled by default until
12392         the AOT code is implemented.
12393
12394 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
12397
12398         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
12399
12400 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12401
12402         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
12403         arch-independent IMT JIT code from Massimiliano
12404         Mantione (massi@ximian.com) with small cleanups from me.
12405
12406 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12407
12408         * Makefile.am: fix svn invocation to get the svn revision to be
12409         independent of the local language (build fix).
12410
12411 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12412
12413         * mini.c (inline_method): Reset cfg->exception_type if the
12414         inlining is aborted.  Fixes: 82049.
12415
12416 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
12417
12418         * mini.c: remove assert from exception handling code when exception_ptr
12419         is not set.
12420
12421 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12422
12423         * mini.c (mono_codegen): Add an assert.
12424
12425         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
12426         enter and leave code.
12427         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
12428
12429 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12430
12431         * mini-ppc.c: fixed memory corruption for localloc(0)
12432         (bug #81852).
12433
12434 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12435         
12436         * mini.c: Fix warnings.
12437
12438 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
12439
12440         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
12441         to emit better double->int conversions.
12442
12443 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12444
12445         * mini.c: the provided Min/Max optimizations are valid for unisgned
12446         ints.
12447
12448 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
12449
12450         * 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
12451
12452 2007-06-28  Miguel de Icaza  <miguel@novell.com>
12453
12454         * mini.c (mono_running_on_valgrind): Add support for reporting the
12455         method and  its boundaries to valgrind.
12456
12457 2007-06-28  Martin Baulig  <martin@ximian.com>
12458
12459         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12460
12461 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
12462
12463         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
12464
12465         * generic.2.cs: Add new test case.
12466
12467 2007-06-25  Martin Baulig  <martin@ximian.com>
12468
12469         Merged the `debugger-dublin' branch.
12470
12471         * debug-mini.c
12472         (mono_debugger_insert_method_breakpoint): New public method.
12473         (mono_debugger_remove_method_breakpoint): Likewise.
12474         (mono_debugger_check_breakpoints): New static method.
12475         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
12476
12477         * debug-debugger.h (MonoDebuggerInfo):
12478         Renamed (to keep backward compatibility in the vtable):
12479         `insert_breakpoint' -> `old_insert_breakpoint'.
12480         `remove_breakpoint' -> `old_remove_breakpoint'.
12481         `create_string' -> `old_create_string'.
12482         `lookup_class' -> `old_lookup_class'.
12483         `lookup_type' -> removed; changed into a dummy field.
12484         `lookup_assembly' -> `old_lookup_assembly'.
12485         Added (same functionality, but different signature):
12486         `create_string', `lookup_class', `lookup_assembly'
12487         Added new:
12488         `get_method_addr_or_bpt', `remove_method_breakpoint',
12489         `runtime_class_init'.
12490
12491         * debug-debugger.c: Merged the `debugger-dublin' branch.
12492
12493 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
12494
12495         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
12496         well.
12497         (peephole_pass): Likewise.
12498
12499 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
12500
12501         * driver.c: hopefully make setaffinity work also for ancient
12502         versions of linux.
12503
12504 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
12505
12506         * driver.c : win32 build fix.
12507
12508 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12509
12510         * driver.c: check for the MONO_NO_SMP env var and bind to a single
12511         processor if it is set.
12512
12513 2007-06-21  Martin Baulig  <martin@ximian.com>
12514
12515         * debug-mini.h: New file.
12516
12517         * debug-mini.c
12518         (mono_debugger_insert_breakpoint_full): Moved here from
12519         ../metadata/mono-debug-debugger.c.
12520         (mono_debugger_remove_breakpoint): Likewise.
12521         (mono_debugger_breakpoint_callback): Likewise.
12522
12523 2007-06-15  Raja R Harinath  <rharinath@novell.com>
12524
12525         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12526         changes in MonoGenericClass.
12527
12528 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
12529
12530         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
12531
12532 2007-06-14  Raja R Harinath  <rharinath@novell.com>
12533
12534         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12535         removal of MonoGenericMethod.
12536
12537 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12538
12539         * mini-exceptions.c: hooks for the exception events profiling API.
12540
12541 2007-06-14  Randolph Chung  <tausq@debian.org>
12542
12543         * Makefile.ma: Add hppa target.
12544         * mini-arch.h: Include mini-hppa.h
12545         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
12546         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
12547         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12548
12549 2007-06-14  Randolph Chung  <tausq@debian.org>
12550
12551         * inssel.brg: Add rules for "chained" compare-branch operations so that
12552         a single compare op can affect multiple branches.  Adjust cost for
12553         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
12554         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
12555         cost for some rules so that they can more easily be overridden by
12556         per-arch rules (with fixes from lupus).
12557         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12558
12559 2007-06-13  Randolph Chung  <tausq@debian.org>
12560
12561         * mini-ops.h: Reorder branch ops so that they match the order of the
12562         corresponding CEE_* ops.  The code expects them this way.
12563         Add new ops for HPPA target.
12564         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12565
12566 2007-06-13  Randolph Chung  <tausq@debian.org>
12567
12568         * mini-exceptions.c: Handle cases where the stack grows towards
12569         larger addresses.
12570         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12571
12572 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12573
12574         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
12575         counter.
12576         * driver.c: explain where a non-matching corlib is found.
12577
12578 2007-06-13  Mark Probst  <mark.probst@gmail.com>
12579
12580         * mini.c (print_jit_stats): Output dynamic code allocation stats.
12581
12582 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
12583
12584         * mini-exceptions.c: Generate a method profile leave event during
12585         an exception to ensure that the profiler gets notified.
12586
12587 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
12588
12589         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
12590         branch.
12591
12592         * cpu-amd64.md: Add long_and/or/xor opcodes.
12593
12594 2007-06-06  Wade Berrier  <wberrier@novell.com>
12595
12596         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
12597         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
12598         length of instruction shr_imm (expected 8, got 10)
12599
12600 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
12601
12602         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
12603
12604 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12605
12606         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12607         MonoInternalHashTable again (fixed bug in the internal hash table
12608         code).
12609
12610 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12611
12612         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
12613         Have to figure out what makes it crash the SWF regression.
12614
12615 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
12616
12617         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
12618
12619 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12620
12621         * mini.c: optimize out the type check when storing null in a
12622         reference array.
12623
12624 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12625
12626         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12627         MonoInternalHashTable.
12628
12629 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12630
12631         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
12632         signed integer methods.
12633
12634 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12635
12636         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
12637         permanently since the current approach doesn't work.
12638
12639 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12640
12641         * inssel.brg (stmt): Only call delegate->invoke_impl if 
12642         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
12643
12644 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12645
12646         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
12647         the sreg2==rdx case.
12648         
12649         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
12650         account if it contains a rex prefix.
12651         (peephole_pass): Handle OP_FMOVE as well.
12652
12653 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12654
12655         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
12656         as it causes regressions.
12657
12658 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
12659
12660         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
12661         static case as well.
12662
12663         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
12664
12665         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12666         (mono_arch_get_this_arg_from_call): Ditto.
12667
12668         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
12669
12670         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
12671         invoke_impl field.
12672
12673         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12674         (mono_arch_get_this_arg_from_call): Ditto.
12675
12676         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
12677         
12678         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
12679         try to create optimized invoke code and use that for further invocations. 
12680         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
12681
12682         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
12683
12684 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
12685
12686         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
12687         sealed classes or methods.
12688         *devirtualization.cs: tests for the new optimization
12689
12690 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
12691
12692         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
12693         by the update_volatile () function.
12694
12695 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
12696
12697         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
12698         require it.
12699
12700         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
12701
12702 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
12703
12704         * mini.c: Add configure checks for header files.
12705         * mini-x86.c: Add configure checks for header files.
12706         * trace.c: Add configure checks for header files.
12707         * aot-runtime.c: Add configure checks for header files.
12708         * aot-compiler.c: Add configure checks for header files.
12709         * driver.c: Add configure checks for header files.
12710         * mini-codegen.c: Add configure checks for header files.
12711         
12712         Code is contributed under MIT/X11 license.
12713
12714 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
12715
12716         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
12717         icompare_imm -128 + op_iclt. Fixes #81703.
12718
12719 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
12720
12721         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
12722
12723 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12724
12725         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
12726         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
12727         so that all isinst checks now use "interface_bitmap".
12728
12729 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
12730
12731         * cpu-amd64.md (jmp): Fix a warning.
12732
12733         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
12734
12735         * basic.cs: Add new regression test.
12736
12737         * basic.cs: Remove test which is now in basic-long.cs.
12738
12739         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
12740
12741         * basic-long.cs: Add new test.
12742         
12743 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
12744
12745         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
12746
12747 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12748
12749         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12750
12751         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12752         places.
12753         
12754         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12755         throwing code a bit.
12756
12757         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12758         the exception throwing code a bit.
12759
12760         * mini-x86.c (get_call_info): Allocate result from a mempool.
12761
12762 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12763
12764         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12765
12766         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12767
12768         * mini.h (MonoCompile): Add 'token_info_hash' field.
12769
12770         * mini.c: Save token->method associations during compilation so the AOT 
12771         compiler can use it.
12772         
12773         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12774         which reference generic classes and methods.
12775
12776 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12777
12778         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12779
12780         * aot-compiler.c (compile_method): Fix a typo in a comment.
12781
12782         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12783
12784         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12785         everything generic.
12786
12787         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12788
12789 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12790
12791         * mini.h (MonoCompile): Add 'args' field.
12792
12793         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12794         into cfg->args.
12795
12796         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12797
12798 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12799
12800         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12801
12802         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12803
12804         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12805         opcodes for some opcodes.
12806
12807         * mini.h *.brg *.c: Use the new opcodes.
12808
12809 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12810
12811         * mini.h: Bumped aot revision.
12812
12813         * inssel.brg: modified code generation of type checks for interfaces
12814         to use the new "MonoClass.interface_bitmap" instead of the old
12815         "MonoClass.interface_offsets".
12816
12817 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12818
12819         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12820
12821 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12822
12823         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12824         64 bit platforms.
12825
12826 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12827
12828         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12829
12830 2007-04-27  Wade Berrier  <wberrier@novell.com>
12831
12832         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12833         mini.h) to fix build.
12834
12835 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12836
12837         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12838         
12839         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12840         causes the corlib unit tests to fail.
12841
12842 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12843
12844         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12845
12846         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12847
12848         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12849         opcodes to the comparison relations.
12850
12851         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12852         opcodes to their types.
12853         
12854         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12855
12856         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12857         it in cfg->arch.cinfo.
12858
12859         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12860
12861         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12862         cfg->cil_offset_to_bb.
12863
12864 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12867         created becase of initlocals.
12868
12869 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12870
12871         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12872         Sergey Tikhonov <tsv@solvo.ru>.
12873
12874 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12875
12876         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12877
12878 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12879
12880         * cpu-s390.md (break): Correct the length of break instruction.
12881
12882 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12883
12884         * mini.c: fix a couple of soft-float issues and comments.
12885
12886 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12887
12888         * trace.c (is_filenamechar): - is also a filename char.
12889
12890 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12891
12892         * mini-s390.c: Correct checking for enum type in return value processing.
12893
12894 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12895
12896         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12897         (version.h): Makefile is in the build directory.
12898
12899 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12900
12901         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12902
12903 2007-04-11  Martin Baulig  <martin@ximian.com>
12904
12905         * mini.c (can_access_member): Fix handling of generic classes;
12906         fixes #81259.
12907
12908 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
12909
12910         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
12911
12912 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
12915
12916 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12917
12918         * mini-codegen.c: make sure the right spill amount is
12919         used for fp or integer registers (fixes the float_sub_spill() on ppc).
12920
12921 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
12922
12923         * mini-ppc.c: fixes for the fp_branch_nan test.
12924
12925 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
12926
12927         * basic.cs: Comment out new test which still fails on ia64.
12928
12929 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12930
12931         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
12932
12933 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12934
12935         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
12936
12937 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
12940         on 64 bit machines. Fixes part of #80738.
12941
12942         * basic.cs: Add regression test.
12943
12944 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12945
12946         * inssel.brg basic.cs: Revert previous change to fix build.
12947
12948         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
12949         platforms.
12950         
12951         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
12952
12953         * basic.cs: Add new regression test.
12954
12955 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12956
12957         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
12958         many arguments.
12959
12960 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12961
12962         * cpu-s390x.md: Correct length of break instruction.
12963
12964 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12965
12966         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
12967         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
12968
12969 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
12970
12971         * *.c: Begin WIN64 port.
12972         * mini.c:  Use correct register in profiler.
12973         * mini-amd64.c: No inline assembly on Win64.
12974         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
12975         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
12976         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
12977         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
12978         mono_arch_ip_from_context for Win64.
12979         
12980         Contributed under MIT/X11 license.
12981
12982 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
12983
12984         * exceptions-amd64.c (seh_handler): Ditto.
12985
12986         * exceptions-x86.c (seh_handler): Fix a memory leak.
12987
12988 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
12989
12990         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
12991         mini-s390x.c: fixed peephole optimizations to deal
12992         correctly with 1 and 2 byte reload avoidance.
12993
12994 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12995
12996         * cpu-s390.md, cpu-s390x.md: update localloc length.
12997
12998 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12999
13000         * cpu-g4.md: added missing descriptions.
13001
13002 2007-03-14  Miguel de Icaza  <miguel@novell.com>
13003
13004         *  Makefile.am: Add support so the tail tests are not executed on
13005         PowerPC as that is a known limitation of the PowerPC port.
13006
13007 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13008
13009         * runmdesc.bat:  Move to msvc directory.
13010         
13011 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13012
13013         * runmdesc.bat:  Run executable that was produced by the current
13014         target and sent via an argument.
13015         
13016 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
13019         #81102.
13020
13021         * generics.2.cs: Add regression test.
13022
13023 2007-03-09  Wade berrier  <wberrier@novell.com>
13024
13025         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
13026
13027 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
13028
13029         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
13030         AOT code depends on this.
13031
13032 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13033
13034         * mini.c: more precise tracking of types in the eval stack
13035         (part of fix for bug #81044).
13036
13037 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
13038
13039         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
13040
13041         * aot-compiler.c (encode_patch): Remove an obsolete comment.
13042
13043 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13044
13045         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
13046
13047         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
13048
13049 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
13050
13051         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
13052         a pointer on 64 bit systems. Fixes #80190.
13053
13054         * iltests.il: Add new regression test.
13055
13056 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13057
13058         * mini.c: inline a constant for Environment.IsRunningOnWindows.
13059
13060 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
13061
13062         * trace.c: Remove an erroneous alignemnt check when tracing.
13063           Fixes --trace on OSX86.
13064
13065 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13066
13067         * mini-$(arch).h: initialize SP in context for all the archs.
13068
13069 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
13070
13071         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
13072         regressions in the thread tests.
13073
13074 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
13075
13076         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
13077         - fixed implementation of LOCALLOC opcode
13078         - implemented non-un compare for floats
13079         - code cleanup
13080         - implementation of FDIV and CKFINITE opcodes
13081         - fixes for latest mono updates
13082         - additional arch opcodes
13083
13084 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13085
13086         * Makefile.am: simplify and merge rules for cross-compilation.
13087
13088 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
13089
13090         * local-propagation.c: Actually *apply* the fix for bug 80591...
13091
13092 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13093
13094         * mini-exceptions.c: backuot part of the last change
13095         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
13096
13097 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
13098         * inssel.brg: Fix bug 59286.
13099
13100
13101 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
13102
13103         * mini-exceptions.c: patch from Zoltan to correctly check for
13104         stack boundaries (using the stack register, not the frame register),
13105         fixes bugs #80724, #79717.
13106
13107 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
13108
13109         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
13110         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
13111
13112         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
13113         presence of frame pointer elimination.
13114
13115 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
13116         
13117         * mini-x86.h: NetBSD UCONTEX_REG defines.
13118
13119 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
13120
13121         * inssel-amd64.brg: Fix amd64 build.
13122
13123 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
13124
13125         * mini.h: remove extern to workaround what looks likes gcc bug 26905
13126         on amd64.
13127
13128 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
13131         ends.
13132
13133         * mini-<ARCH>.c: Use mono_is_regsize_var ().
13134
13135 2007-01-30 Mark Mason <mason@broadcom.com>
13136
13137            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
13138            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
13139            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
13140            beginning support for CEE_JMP [not quite working yet]
13141            * tramp-mips.c: LMF handling now works
13142         
13143 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
13144
13145         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
13146
13147         * mini.h (NULLIFY_INS): New macro.
13148
13149 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13150
13151         * mini.c: statistical profiler fix for windows, patch
13152         from Tor Lillqvist (tml@novell.com).
13153
13154 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
13155         * local-propagation.c: Fix bug 80591.
13156
13157 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13158
13159         * Makefile.am: put back the --export-dynamic option as with
13160         the previous gmodule flags (thanks to Robert Jordan).
13161
13162 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
13165
13166         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
13167         simplify and speed up the local register allocator. Also rename some fields
13168         like iassign->vassign.
13169         
13170         * regalloc.c: Remove some functions which are no longer used since their
13171         inlined version is in mini-codegen.c.
13172         
13173         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
13174
13175         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
13176
13177 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
13178
13179         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
13180         narrowing. Fixes #80622.
13181
13182         * iltests.il: Add new regresssion test. 
13183
13184 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13185
13186         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
13187         debug-debugger.c, debug-debugger.h: warning fixes.
13188         * driver.c: updated copyright year and made it fit in one line.
13189
13190 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
13191
13192         * aot-runtime.c: updated to use mono-dl instead of gmodule.
13193
13194 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
13195
13196         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
13197
13198         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
13199
13200         * iltests.il: Add new test for bug #80507.
13201
13202 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13203
13204         * mini-arm.h: use soft-float also on vfp for now.
13205
13206 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13207
13208         * mini.c: fix some more soft-float issues.
13209
13210 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13211
13212         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13213
13214 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13215         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13216         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13217         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13218
13219 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13220
13221         * mini-arm.c: typo fix.
13222
13223 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13224
13225         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13226
13227 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13228
13229         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13230         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13231
13232         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13233
13234         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13235
13236         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13237         
13238         * inssel.brg: Fix a warning.
13239
13240         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
13241
13242         * abcremoval.c ssa.c ssapre.c: Update after this change.
13243         
13244         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
13245
13246         * dominators.c (df_set): Use mono_bitset_union_fast.    
13247
13248 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13249
13250         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
13251         mini-codegen.c: reduce relocations and memory usage for the cpu
13252         description.
13253
13254 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
13255
13256         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
13257
13258         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
13259         to reduce their size.
13260
13261 2007-01-19 Mark Mason <mason@broadcom.com>
13262
13263         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
13264         * mini-mips.c: more configuration macros, support long conditional branches, additional
13265         asserts, fix epilog instrumentation.
13266         * mini-mips.h: use standard stack walk
13267         * cpu-mips.md: increase size of div, rem and conditional branches
13268         
13269 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
13270
13271         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
13272         to cpu spec data.
13273
13274 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
13275
13276         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
13277         (compile_method): Ditto.
13278
13279         * aot-runtime.c (decode_klass_info): Ditto.
13280
13281         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
13282         needed by the code generated by inssel.brg. Also fix a warning.
13283
13284 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
13285
13286         * mini.c: deal with enums that become genericinsts by
13287         being nested in a generic class (bug #79956).
13288
13289 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13290
13291         * mini.c: match the generic definition to check for
13292         private access with generic types (bug #78431).
13293
13294 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13295
13296         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
13297         to make life easier for people cross-compiling that insist on not
13298         using scratchbox.
13299
13300 2007-01-17 Mark Mason <mason@broadcom.com>
13301
13302         * inssel-long.brg: patch to deal with mips missing flags
13303         * inssel-long32-mips.brg: implement overflow checks
13304         * insset-mips.brg: implement overflow checks
13305         * mini-mips.h: implement conditional exception handling
13306         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
13307           Remove unused code, minor cleanups.
13308         * exceptions-mips.c: minor cleanups
13309         * mini-ops.h: add mips conditional exception ops
13310         * cpu-mips.md: add mips conditional exception ops
13311
13312         
13313 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13314
13315         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
13316         to deal with mips missing of flags.
13317
13318 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13319
13320         * exceptions-ppc.c: execute fault handlers.
13321
13322 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
13323
13324         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
13325
13326 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13327
13328         * mini.c: handle also floating point values in initialize_array.
13329
13330 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13331
13332         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
13333         array initialization and make it conditional on the intrins option.
13334
13335 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13336
13337         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
13338         relocations and put the patch info names close to the enum definition.
13339
13340 2007-01-15 Mark Mason <mason@broadcom.com>
13341
13342         * basic.cs, exceptions.cs: break up large tests to increase debugability.
13343
13344 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13345
13346         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
13347
13348 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13349
13350         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
13351
13352 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13353
13354         * Makefile.am: distribute the mips sources.
13355
13356 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13357
13358         * mini-codegen.h: handle bug #80489 here, by excluding ecx
13359         directly.
13360
13361 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
13362
13363         * cpu-x86.md: back out for now as this triggers other regressions.
13364
13365 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13366
13367         * cpu-x86.md: force src1 and dest regpair for long shift instructions
13368         to eax:edx, so ecx can't get allocated to them (bug #80489).
13369
13370 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
13371
13372         * mini.c, mini-exceptions.c: enabled running fault handlers
13373         (bug #80469).
13374
13375 2007-01-03  Miguel de Icaza  <miguel@novell.com>
13376
13377         * driver.c: If nothing fail, do not use the string "failed",
13378         because it makes it very annoying to view test result logs on the
13379         web. 
13380
13381 2006-12-30  Miguel de Icaza  <miguel@novell.com>
13382
13383         * debug-debugger.c (mono_debugger_main): Rename "main" to
13384         "main_method" to prevent a warning.
13385
13386         Remove a warning for unused field.
13387
13388 2006-12-28  Martin Baulig  <martin@ximian.com>
13389
13390         * debug-debugger.c
13391         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
13392
13393 2006-12-22  Martin Baulig  <martin@ximian.com>
13394
13395         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
13396         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
13397         seperate `.mdb_debug_info' section, so we can access it from the
13398         debugger even if the binary is stripped.
13399
13400         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
13401         from the `.mdb_debug_info' here to prevent the linker from
13402         removing that section.
13403
13404         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
13405         mdb-debug-info64.s.
13406
13407 2006-12-19  Robert Jordan  <robertj@gmx.net>
13408
13409         * mini-x86: enable the code to return small structures in
13410         registers for FreeBSD as well. Fixes bug #80278.
13411         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
13412
13413 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13414
13415         * mini-x86.c: align the stack when calling the profiler
13416         function instrumenting the prolog (on OSX).
13417
13418 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
13419
13420         * mini.c: emit a break opcode where Debugger.Break () is called.
13421
13422 2006-12-13  Miguel de Icaza  <miguel@novell.com>
13423
13424         * mini.c (mono_method_to_ir): Provide useful information on this
13425         assert, to prevent others from debugging like I did.
13426
13427 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13428
13429         * mini.c: enable code which was incorrectly commented
13430         (bug #80235).
13431
13432 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13433
13434         * mini-x86.c: enable on OSX, too, the code to return small
13435         structures in registers.
13436
13437 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13438
13439         * mini-x86.c: remove the use of the dynamic code manager here, too.
13440
13441 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13442
13443         * mini.h, debug-debugger.c, tramp-*.c: fixed 
13444         mono_debugger_create_notification_function() to use
13445         mono_global_codeman_reserve () instead of a dynamic code manager.
13446
13447 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
13448
13449         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
13450         ves_array_element_address() jit icall and use a generated
13451         managed method instead (which is about 4 times faster for a rank 3
13452         array access).
13453
13454 2006-11-29  Mark Mason  <mason@broadcom.com>
13455
13456         * basic-calls.cs: additional tests for passing
13457         structures as function arguments.
13458
13459 2006-11-29  Mark Mason  <mason@broadcom.com>
13460
13461         * mini-mips.h: disable custom exception handling
13462         * mini-mips.c: throw/rethrow should use jalr to call
13463         exception stubs.  Fixed bug with passing structures
13464         by value. More support for tracing floating point
13465         functions.
13466
13467 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13468
13469         * mini.c: fixed typo in the soft-float ldind.r4 handling
13470         (bug #80086).
13471
13472 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13473
13474         * mini.c, mini.h, driver.c: added --runtime command line
13475         option to select a different runtime than the autodetected one.
13476         * jit.h: added API for embedders to initialize with a specific
13477         runtime version.
13478
13479 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13480
13481         * mini.c: handle also boxing of r4 values (bug #80024).
13482
13483 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13484
13485         * mini-ppc.c: force indirect calls until we reserve
13486         enough address space for all the generated code.
13487
13488 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
13489
13490         * exceptions-arm.c: workaround bugs in the libc definition
13491         of struct ucontext.
13492
13493 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13494
13495         * inssel.brg: fixes from me and Mark Mason.
13496
13497 2006-11-23  Dick Porter  <dick@ximian.com>
13498
13499         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
13500         semaphore display now we've fixed the initial value
13501
13502 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13503
13504         * inssel.brg: partially revert the last change to fix the build.
13505
13506 2006-11-21  Mark Mason  <mason@broadcom.com>
13507
13508         * inssel.brg: Add and use compare-and-branch macros to support
13509         architectures that do not have condition code registers (ie. MIPS).
13510         * *-mips.{c,brg,md}: Fix copyright statements
13511
13512 2006-11-20  Mark Mason  <mason@broadcom.com>
13513
13514         * Makefile.am: remove mini-codegen.c from list of MIPS sources
13515         * mini.c: Allow GET_CONTEXT to be specified by the arch port
13516         * mini.h: Added declaration for mono_print_ins()
13517         * mini-codegen.c: added ins_spec initializer for MIPS
13518         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
13519         vreg to be virtual and hreg to be non-virtual.
13520         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
13521         is not yet working/implemented correctly.
13522         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
13523         non-static, fixup calls to print_ins() from other parts in the file.
13524
13525 2006-11-20  Mark Mason  <mason@broadcom.com>
13526
13527         * basic-calls.cs: added tests for passing structures as arguments
13528         to calls.
13529
13530 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13531
13532         * inssel-long32.brg: optimize signed division by power of two.
13533
13534 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
13535
13536         * mini-arm.c: added support for interworking with thumb code
13537         (mono must be still be built using the ARM instruction encoding).
13538
13539 2006-11-19  Miguel de Icaza  <miguel@novell.com>
13540
13541         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
13542         verifier has different rules for it.   Fixes a few verifier issues
13543         in the test suite.
13544
13545         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
13546         at the end, so people know what happened.
13547
13548 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13549
13550         * brach-opts.c: in optimize_exception_target() make sure we
13551         are in a catch clause (fixes bug #79871).
13552
13553 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13554
13555         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
13556         more soft-float support fixes.
13557
13558 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
13559
13560         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
13561         that are passed half on the stack and half in registers.
13562
13563 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13564
13565         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
13566         more mips integration work from Mark E Mason 
13567         <mark.e.mason@broadcom.com>.
13568
13569 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13570
13571         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
13572         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
13573         tramp-mips.c: added sources for the mips port, not
13574         integrated in the build yet. Contributed by
13575         Mark E Mason <mark.e.mason@broadcom.com>.
13576
13577 2006-11-14  Neale Ferguson <neale@sinenomine.net>
13578
13579         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
13580
13581 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13582
13583         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
13584         put the soft-float rules in its own file since it seems to
13585         break s390 compilation.
13586
13587 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13588
13589         * mini-arm.c: fixed wrnings.
13590
13591 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
13592
13593         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
13594         inssel-arm.brg: ARM support for soft-float.
13595
13596 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13597
13598         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
13599         loads and stores of 32 bit fp values.
13600
13601 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
13602
13603         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
13604
13605         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
13606         works. Fixes #79852 and #79463.
13607
13608 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13609
13610         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
13611         more soft-float support WIP and fixes.
13612
13613 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
13614
13615         * mini-arm.c: some VFP updates.
13616
13617 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13618
13619         * mini-exceptions.c: 0 is a valid local var offset in some
13620         architectures, don't assert (bug #78508).
13621
13622 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
13623
13624         * exceptions-arm.c: fixed off by one error in stack walk code.
13625
13626 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13627
13628         * mini.h, mini.c: more precise tracking of type load exceptions.
13629
13630 2006-11-03  Robert Jordan  <robertj@gmx.net>
13631
13632         * Makefile.am: [WIN32] Add monow.exe target.
13633         * driver.c: [WIN32] Don't detach the console when debugging.
13634         Fixes bug #79797.
13635         
13636 2006-10-30  Miguel de Icaza  <miguel@novell.com>
13637
13638         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
13639
13640 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
13641
13642         * aot-compiler.c (emit_method_info): Add a case missed earlier.
13643
13644         * driver.c (mini_regression): Fix --regression with AOT.
13645
13646         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
13647
13648 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
13649
13650         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
13651
13652         * mini-sparc.h: Don't use sigaction on sparc/linux.
13653
13654         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
13655
13656         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
13657
13658         * mini-exceptions.c: Add proper include files for getpid ().
13659
13660 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
13661
13662         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
13663         address instead of a MonoJitInfo* to avoid decoding the exception info for the
13664         method.
13665
13666         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
13667         name cache to reduce its size.
13668
13669         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
13670
13671 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13672
13673         * mini-x86.c: Save/restore the current LMF structure more efficiently using
13674         the mono_lmf TLS variable.
13675
13676         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
13677         trampoline lmf frames.  
13678
13679         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
13680
13681 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
13684         the mono_lmf TLS variable.
13685
13686         * mini-exceptions.c: Access the LMF structure through accessors.
13687
13688         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
13689         variable instead of in jit_tls->lmf.
13690
13691         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
13692         
13693         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
13694         trampoline lmf frames.
13695
13696         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
13697
13698 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
13699
13700        * mini.c trace.c mini-x86.c: Revert these too.
13701         
13702        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
13703        signature change.
13704
13705 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
13706
13707         * genmdesc.c: removed now dead code.
13708
13709 2006-10-09  Robert Jordan <robertj@gmx.net>
13710
13711         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
13712
13713 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
13714
13715         * mini.h: do not leave gaps in the opcode values.
13716
13717 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
13718
13719         * jit-icalls.h: flag functions as internal here, too.
13720
13721 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
13722
13723         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
13724         functions with the internal attribute.
13725
13726 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
13727
13728         * aot-compiler.c: fclose the file descriptor in the profile read loop.
13729
13730 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13731
13732         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
13733         for soft-float.
13734
13735 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
13736
13737         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
13738         tail calls as on other platforms.
13739
13740         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
13741
13742         * iltests.il: Add a few tailcall tests.
13743
13744 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13745
13746         * driver.c: fix loop for old compilers (bug #79521).
13747
13748 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13749
13750         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13751
13752         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13753
13754         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13755         metadata without any code.
13756
13757         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13758         more precise debugging information using gdb.
13759
13760 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13761
13762         * inssel-ia64.brg: Make the helper methods static.
13763
13764 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13765
13766         * inssel-x86.brg: make the helper methods static.
13767
13768 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13769
13770         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13771
13772 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13773
13774         * mini.c: updates for monoburg changes.
13775         * inssel.brg: make a few helper functions static as they should.
13776
13777 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13778
13779         * Makefile.am: Move mini-codegen.c to common_sources.
13780
13781 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13782
13783         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13784         instructions.
13785         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13786         mini-ppc.h: port to use the common local register allocator.
13787
13788 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13789
13790         * mini.h: Remove the comment too then.
13791
13792 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13793
13794         * mini.h: put back backend.data which is to be used shortly and
13795         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13796         pointers on 4 byte boundaries it'd have much bigger issues running
13797         and you can ifdef it out anyway.
13798
13799 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13800
13801         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13802         MonoInst size by 4 bytes on 64 bit machines.
13803
13804 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13805
13806         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13807         replacement with more meaningful field names. Arch maintainers, please
13808         check the assigned names are good enough for your arch.
13809
13810 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13811
13812         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13813         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13814
13815 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13816
13817         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13818         relocations and memory requirements, put the optimization flags
13819         definitions in their own file.
13820
13821 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13822
13823         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13824
13825         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13826
13827 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13828
13829         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13830
13831 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13832
13833         * inssel.brg: use the correct function to get the size of an item
13834         in an array, given an element class.
13835         * aot-compiler.c: do not access class->class_size directly.
13836
13837 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13838
13839         * mini.h, debug-mini.c: added a debugging function to print
13840         info about local variables and arguments in a jitted method.
13841
13842 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13843
13844         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13845
13846         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13847
13848 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13849
13850         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13851         inner and outer loops when passing vtypes.
13852
13853 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13854
13855         * mini-ppc.c: take into account the cpu errata for cache flushing
13856         which caused some random errors (bug #79381).
13857
13858 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13859
13860         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13861         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13862
13863 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13864
13865         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13866         loaded.
13867
13868         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13869         freebsd ports tree.
13870
13871         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13872         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13873
13874         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13875         displacement.
13876
13877 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13878
13879         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13880
13881 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13882
13883         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13884         macro does not have to be changed during debugging.
13885
13886         * 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>.
13887
13888         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13889
13890         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13891         
13892         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13893         MONO_ARCH_NO_EMULATE_MUL is defined.
13894
13895         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13896
13897         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13898
13899         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13900
13901         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13902         
13903 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13904
13905         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
13906         stuff to mini-exceptions.c where it is used.
13907
13908         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
13909         setup code, the real one is in mini-exceptions.c.
13910
13911         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
13912         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
13913         some changes from the freebsd ports tree.
13914
13915         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
13916         constants.
13917         
13918         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
13919
13920 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
13921
13922         * mini.c: on Linux, check for /proc to be mounted
13923         (bug# 79351, novell bug#201204).
13924
13925 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13926
13927         * mini.c: handle cases where pthread_attr_getstack() behaves
13928         incorrectly (bug #78096).
13929
13930 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
13931
13932         * mini-arm.c: support larger stack frames (bug #79272).
13933
13934 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13935
13936         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
13937
13938         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
13939         tokens.
13940
13941         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
13942         mono_class_from_name () to find a class from its name.
13943
13944         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
13945
13946 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
13947
13948         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
13949
13950 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
13951
13952         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
13953
13954 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13955
13956         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
13957         callinfo->trampoline.
13958
13959         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
13960         fixes #79271.
13961         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
13962         future.
13963
13964 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13965
13966         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
13967
13968 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
13969
13970         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
13971         stats.method_trampolines, it is already done by the generic trampoline code.
13972
13973         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
13974         
13975 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13976
13977         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
13978
13979         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
13980
13981         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
13982
13983         * mini.c (print_jit_stats): Print mscorlib mempool size too.
13984         
13985         * mini.c (print_jit_stats): Print new stats.
13986
13987         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13988
13989 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13990
13991         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
13992         Address on two dimensional arrays. Fixes #78729.
13993
13994         * mini.h (MonoCompile): Add a 'skip_visibility' field.
13995
13996         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
13997         a method.
13998
13999         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
14000
14001         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
14002         #79130.
14003         
14004         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
14005         a race condition.
14006         (mini_get_ldelema_ins): Ditto.
14007
14008 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
14009
14010         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
14011         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
14012         Fixes #79213.
14013
14014 2006-08-29 Neale Ferguson <neale@sinenomine.net>
14015
14016         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
14017         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
14018
14019         * exceptions-s390x.c: Cosmetic change.
14020
14021         * tramp-s390.c: Fix warning.
14022
14023         * cpu-s390.md: Correct length of mul_imm.
14024
14025 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14026
14027         * aot-compiler.c: added binary writer with ELF backend
14028         implementation (only on Linux/x86 for now).
14029
14030 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14031
14032         * Makefile.am: Don't run net 2.0 AOT tests.
14033
14034         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
14035         (mono_compile_assembly): Skip net 2.0 assemblies as well.
14036
14037         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
14038
14039 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14040
14041         * aot-compiler.c: simplified and refactored the asm-writing code
14042         to allow different backends.
14043
14044 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14045
14046         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
14047
14048         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
14049         little. Share patches of type TYPE_FROM_HANDLE as well.
14050
14051         * mini.c (mono_patch_info_equal): New helper function.
14052         (mono_patch_info_hash): Ditto.
14053
14054         * aot-compiler.c (emit_method_code): Fix s390 build.
14055
14056         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
14057         is not handled because it is stored as a flag and not as a type ctor. Fixes
14058         #79016.
14059
14060 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14061
14062         * aot-compiler.c: Fix computation of GOT slot statistics.
14063         
14064         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
14065         Also remove support for not PIC AOT.
14066
14067         * mini.h: Bump AOT file format version.
14068
14069         * objects.cs: Add a test for #78990.
14070
14071         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
14072         (peter.dettman@iinet.net.au). Fixes #79087.
14073
14074         * basic-long.cs: Add a test for the above.
14075
14076 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
14077
14078         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
14079         
14080         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
14081         code somewhat.
14082
14083 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
14086         exceptions.
14087
14088 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
14089
14090         * mini.c: Don't verify COM proxy invoke calls
14091         
14092
14093 2006-08-10  Dick Porter  <dick@ximian.com>
14094
14095         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
14096         which process is holding semaphores locked.
14097
14098 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
14099
14100         * mini-ia64.c mini-amd64.c: Fix #79027.
14101
14102         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
14103
14104         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
14105
14106         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
14107         implicit arguments in a vararg call. Fixes #79027.
14108
14109 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
14110
14111         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
14112         (mono_get_array_new_va_signature): Ditto.
14113
14114 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
14115
14116         * aot-runtime.c: Call init_plt lazily.
14117
14118         * inssel-long.brg: Fix unsigned long->int conversion.
14119
14120         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
14121
14122         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
14123         that most data is now in the .rss/.data section.
14124
14125 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
14126
14127         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
14128
14129         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
14130
14131         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
14132
14133         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
14134
14135         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
14136         virtual call. Fixes #79010.
14137
14138         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
14139         and use the result as the this argument in the real call.
14140
14141         * generics.2.cs: Add a new test for #79010.
14142         
14143 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
14144
14145         * mini-x86.c: Fix a warning.
14146
14147         * aot-compiler.c: Add a bunch of statistics.
14148
14149         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
14150
14151 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
14152
14153         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
14154
14155 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
14156
14157         * 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>.
14158
14159 2006-07-13  Miguel de Icaza  <miguel@novell.com>
14160
14161         * mini.c (mono_method_to_ir): Obtain the original method in the
14162         CIL stream and use this to perform validation.
14163
14164         Fixed: #78816
14165
14166 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
14167
14168         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
14169         (mono_arch_call_opcode): Ditto.
14170
14171         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
14172         #78826.
14173
14174         * mini.c (mono_patch_info_dup_mp): New helper function.
14175         
14176         * aot-compiler.c (compile_method): Fix some of the memory allocated during
14177         compilation. Fixes #78827.
14178
14179 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
14180
14181         * declsec.c: Use original security informations for
14182           MONO_WRAPPER_MANAGED_TO_MANAGED.
14183
14184 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
14185
14186         * mini.c: Allow Com Interop methods/classes and
14187         don't verify COM wrapper calls
14188         
14189
14190 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
14191
14192         * inssel-long32.brg: Fix long->i4 checked conversion.
14193
14194         * exceptions.cs: Add a test for the above.
14195
14196 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14197
14198         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
14199
14200         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
14201         leaks.
14202
14203         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
14204         #78775.
14205
14206 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14207
14208         * mini.c: Fix solaris/x86 exception handling.
14209
14210         * Makefile.am: Get rid of $(ICU_LIBS).
14211
14212 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14213
14214         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14215         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14216         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14217
14218         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14219
14220         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14221         this function causes a SIGSEGV.
14222
14223 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14224
14225         * mini.c: Remove unused solaris/x86 includes.
14226
14227 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14228
14229         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14230
14231 2006-06-20  Jb Evain  <jbevain@gmail.com>
14232
14233         * cpu-g4.md: fix max length of start_handler instruction.
14234
14235 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14236         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14237
14238 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14239         * ssa.c: Fixed bug 78653 for SSA based deadce.
14240         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
14241         MonoInst.flags, used in SSA based deadce.
14242         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
14243         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
14244
14245 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14246
14247         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
14248         it can end up using non executable memory on ppc64 systems
14249         running ppc32 userspace (fix from Johannes Berg).
14250
14251 2006-06-14  Dick Porter  <dick@ximian.com>
14252
14253         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
14254         4.1.1
14255
14256 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
14257         * mini.c: Made so that inline is locally disabled if it would
14258         trigger a .cctor, because too many apps depend on this behavior
14259         (which seems to be also the one of the MS CLR).
14260
14261 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
14262
14263         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
14264         No idea why this worked before.
14265
14266         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
14267         which branch to outer exception clauses since they could skip the
14268         inner finally clauses. Fixes #78633.
14269
14270         * exceptions.cs: Add a test for the above.
14271
14272         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
14273         Fixes #78629.
14274
14275         * iltests.il: Add a test for the above.
14276
14277 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
14278
14279         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
14280         after the end of a try bblock, to prevent asserts in mini_method_compile ().
14281
14282         * iltests.il: Add a test for the above.
14283
14284 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
14285
14286         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
14287         
14288         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
14289         methods as instrinsics.
14290
14291 2006-06-09  Wade Berrier <wberrier@novell.com>
14292
14293         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
14294         (simple-cee-ops.h ssapre-mini-ops.h)
14295
14296 2006-06-09  Neale Ferguson <neale@sinenomine.net>
14297
14298         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
14299         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
14300         instruction).
14301         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
14302         * cpu-s390x.md: Fix max. length values for a couple of instructions.
14303
14304 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14305
14306         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
14307
14308 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
14309
14310         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
14311         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
14312         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
14313         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
14314         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
14315         of opcodes, so that bug 78549 should not happen again.
14316         * ssapre.c: Updated to use the renamed files.
14317
14318 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14319
14320         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
14321         in OP_ATOMIC_EXCHANGE_I4.
14322
14323 2006-06-07  Wade Berrier <wberrier@novell.com>
14324
14325         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
14326         in mono_debugger_create_notification_function)
14327
14328 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
14329
14330         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
14331         
14332         * mini.c (type_from_stack_type): Disable some changes which do not
14333         seem to work.
14334
14335         * driver.c: Reenable opts.
14336
14337         * mini.h (MonoStackSlot): New structure to keep track of the verification state
14338         of the evaluation stack.
14339         
14340         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
14341         evaluation stack trace at entry to the bblock.
14342
14343         * mini.c (merge_stacks): New function to perform verification of stack merges.
14344         Turned off by default.
14345
14346         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
14347         STACK_MP.
14348         
14349 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
14350
14351         * local-propagation.c: Fixed bug 78549.
14352
14353 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
14354
14355         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
14356
14357 2006-06-02  Miguel de Icaza  <miguel@novell.com>
14358
14359         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
14360         tramp-arm.c, tramp-ia64.c
14361         (mono_debugger_create_notification_function): Update signature to
14362         new signature and use new protocol for creating the notification
14363         function.  
14364
14365         Should fix the build.
14366
14367 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
14368
14369         * exceptions-ppc.c (mono_jit_walk_stack)
14370         (ves_icall_get_frame_info): Fix the build
14371
14372 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
14373
14374         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
14375
14376 2006-05-31  Raja R Harinath  <rharinath@novell.com>
14377
14378         * il2tests.2.il: New file for generics CIL tests.  Add test for
14379         #78019.
14380         * Makefile.am: Update.
14381
14382         Fix #78019
14383         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
14384         to nullable types.
14385
14386 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
14387
14388         * aliasing.c: Fixed bug 78311.
14389
14390 2006-05-29  Martin Baulig  <martin@ximian.com>
14391
14392         * mini-exceptions.c (mono_find_jit_info): When computing the
14393         native offset, check whether we're actually inside the method's
14394         code; call mono_debug_print_stack_frame() to format the frame.
14395         (ves_icall_System_Exception_get_trace): Call
14396         mono_debug_print_stack_frame() to format the stack frame.
14397         (ves_icall_get_trace): Update to the new debugging API.
14398         (mono_jit_walk_stack_from_ctx): Likewise.
14399         (ves_icall_get_frame_info): Likewise.
14400
14401         * mini.c (get_method_from_ip): Use the new debugging API.
14402         (mono_print_method_from_ip): Likewise.
14403
14404         * exceptions-ppc.c
14405         (mono_jit_walk_stack): Use the new debugging API.
14406         (ves_icall_get_frame_info): Likewise.   
14407
14408 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
14409
14410         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
14411
14412 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
14413
14414         * mini.c: Added "limitator" to inline for debugging.
14415
14416 2006-05-24  Martin Baulig  <martin@ximian.com>
14417
14418         * debug-debugger.c (mono_debugger_init): Create a private,
14419         malloc()-based code manager for the notification function and
14420         intentionally leak it on exit.  This fixes the crash-on-exit race
14421         condition.
14422
14423         * tramp-amd64.c
14424         (mono_debugger_create_notification_function): Added
14425         `MonoCodeManager *' argument.
14426
14427         * tramp-x86.c
14428         (mono_debugger_create_notification_function): Added
14429         `MonoCodeManager *' argument.
14430
14431 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
14432
14433         * aliasing.c: Fixed 64 bit issue.
14434         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14435         default since all known bugs are fixed (one more time!).
14436
14437 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14438
14439         * mini.c: write barrier support.
14440
14441 2006-05-23  Martin Baulig  <martin@ximian.com>
14442
14443         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
14444         check at the top of the file.
14445
14446 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
14447
14448         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
14449         reverting changes without reason and without changelog entries.
14450
14451 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14452
14453         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
14454         to a few opcodes. Fixes #78439.
14455
14456         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
14457         consistency with other archs.
14458
14459         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
14460
14461 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14462
14463         * debug-debugger.c: fix the build.
14464
14465 2006-05-17  Martin Baulig  <martin@ximian.com>
14466
14467         * debug-debugger.c
14468         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
14469         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
14470         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
14471         (debugger_attach): Call GC_mono_debugger_add_all_threads().
14472
14473 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14474
14475         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
14476
14477 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14478
14479         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
14480         MONO_TYPE_GENERICINST.
14481         
14482         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
14483         MONO_TYPE_GENERICINST.
14484
14485 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14486
14487         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
14488         #78325.
14489
14490 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
14491
14492         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
14493         mempool.
14494         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
14495
14496 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14497
14498         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
14499         mono_trace_cleanup ().
14500
14501         * iltests.il: Fix problem with the newly added test.
14502
14503         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
14504         due to register constraints, free up the previous hreg. Fixes #78314.
14505
14506         * iltests.il: Add new test for #78314.  
14507
14508         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
14509         Interlocked.Add. Fixes #78312.
14510
14511         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
14512         
14513 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14514
14515         * inssel.brg (mini_emit_virtual_call): Fix a warning.
14516
14517 2006-05-05  Martin Baulig  <martin@ximian.com>
14518
14519         * debug-mini.c (mono_debug_open_block): New method.
14520
14521         * mini-amd64.c
14522         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14523         the beginning of each basic block.
14524
14525         * mini-x86.c
14526         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14527         the beginning of each basic block.
14528
14529 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14530
14531         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14532         default until I understand why they break the build on amd64.
14533
14534 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14535
14536         * mini.c (mini_cleanup): Call mono_cleanup ().
14537
14538         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
14539         errors.
14540
14541 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14542
14543         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
14544         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14545         default since all known bugs are fixed, and I cannot reproduce bug
14546         77944... I'm asking Matt Hargett to test again after this commit.
14547
14548 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
14549
14550         * mini-codegen.c: Fixed typo that thrashed inline.
14551
14552 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
14553
14554         * dominators.c (compute_dominators): Avoid using a worklist since
14555         it is not correct in some cases. Instead, iterate over all bblocks as
14556         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
14557
14558 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14559
14560         * mini.c (mono_jit_compile_method_inner): Use
14561         mono_prepare_exception_from_error that resets the value
14562         internally.
14563
14564 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14565
14566         * mini.c: Move the mini_loader_error_to_exception to metadata. 
14567         
14568 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14569
14570         * aliasing.c: Fixed bug 78210.
14571
14572 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14573
14574         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14575         default until all their problems (or the ones they trigger) are fixed.
14576
14577 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
14578
14579         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
14580         
14581         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
14582         as loaded only after resolving patches since that could invoke the same method.
14583
14584         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
14585
14586         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
14587         functions.
14588
14589         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
14590         AOT loader.
14591
14592         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
14593         stack.
14594
14595         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
14596         made from AOT code through the PLT table.
14597
14598         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
14599         holding the plt offset when a call is made to the aot plt trampoline.
14600         
14601 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14602
14603         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
14604         amd64 AOT support.
14605
14606         * Makefile.am (common_sources): Fix build breakage.
14607
14608         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
14609         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
14610         intra-assembly calls if possible.
14611         
14612         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
14613
14614         * mini-trampolines.c: Handle PLT entries.
14615
14616         * mini.c: Avoid creating a GOT var for calls.
14617
14618         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
14619         from mscorlib code.
14620
14621         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
14622         from mscorlib code.
14623
14624         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
14625         AOT code.       
14626
14627         * mini.h: Bump AOT file format version.
14628         
14629         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
14630         covers more cases.
14631
14632 2006-04-25  Martin Baulig  <martin@ximian.com>
14633
14634         * driver.c: Disable copyprop, consprop and inline when running
14635         inside the debugger.
14636
14637 2006-04-25  Martin Baulig  <martin@ximian.com>
14638
14639         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
14640         with `get_current_thread' and added `detach'.
14641         (MonoDebuggerMetadataInfo): Added `thread_size',
14642         `thread_tid_offset', `thread_stack_ptr_offset' and
14643         `thread_end_stack_offset'.
14644
14645 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14646
14647         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
14648         aot-runtime.c.
14649
14650         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
14651         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
14652
14653         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
14654
14655         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
14656
14657         * aot.c: Add support for ADJUSTED_IID.  
14658
14659 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
14660
14661         * aot.c (emit_method_order): Don't align method_order_end.
14662
14663         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
14664         the interface ID changes.
14665
14666 2006-04-21  Dick Porter  <dick@ximian.com>
14667
14668         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
14669         cleaning up a thread.  Fixes the new part of bug 77470.
14670
14671 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
14672
14673         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
14674         to managed wrapper.
14675                      
14676 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
14677
14678         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
14679         
14680         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
14681         SIGSEGV. Fixes #78072.
14682
14683         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
14684         unregister our SIGABRT handler.
14685
14686 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
14687
14688         * mini.c: Disabled inline where it can alter the call stack in a
14689         way visible from managed code.
14690         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
14691         default.
14692
14693 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
14694
14695         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
14696         on other platforms. Fixes #78089.
14697
14698 2006-04-13  Martin Baulig  <martin@ximian.com>
14699
14700         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
14701         determine whether we're inside the debugger.
14702
14703         * debug-debugger.h
14704         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
14705
14706 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14707
14708         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
14709         handler clauses. Fixes #78024.
14710
14711         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
14712         in the CALL_MEMBASE opcodes. Fixes #78088.
14713         (mono_arch_get_vcall_slot_addr): Ditto.
14714
14715 2006-04-10  Martin Baulig  <martin@ximian.com>
14716
14717         * debug-debugger.c: The thread handling code has now been moved
14718         into ../metadata/threads.c.
14719
14720 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14721
14722         * driver.c (mono_main): Fix --with-gc=none build.
14723
14724         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
14725         (mono_spillvar_offset_float): Ditto.
14726         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
14727         hreg, not when its !global, since on ia64, there is a third category: stacked
14728         registers.      
14729
14730 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini.c: set MonoInst->klass for load field address and a few other
14733         places.
14734
14735 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14736
14737         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
14738
14739 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14740
14741         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
14742         the branch opt changes.
14743
14744 2006-04-06  Dick Porter  <dick@ximian.com>
14745
14746         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
14747         
14748         * wapihandles.c (mini_wapi_seminfo): 
14749         * driver.c (mono_main): Add semaphore info option
14750
14751 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14752
14753         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14754         branch optimization changes. Fixes #78009.
14755
14756 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14757
14758         * mini.c: ignore accessibility of methods in managed->native wrappers.
14759
14760 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14761
14762         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14763         
14764         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14765
14766 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14767
14768         * mini.c: Modify the branch optimizations to preserve the invariant that
14769         the entries inside the in_bb and out_bb arrays are unique.
14770         (mono_unlink_bblock): Avoid creation of new arrays.
14771
14772 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14773
14774         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14775         change (#77992).
14776
14777 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14778
14779         * mini.c (optimize_branches): Remove the "optimizations" in
14780         the cbranch1/cbranch2 -> branch cases which were causing several
14781         problems in the past. Fixes #77986.
14782
14783 2006-03-31  Chris Toshok  <toshok@ximian.com>
14784
14785         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14786         default optimizations :(
14787
14788 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14789
14790         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14791         branch.
14792
14793 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14794
14795         * local-propagation.c: Added comments to structs and removed
14796         "Mono" prefixes from local tree mover types.
14797
14798 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14799
14800         * Makefile.am (arch_sources): Define this for each architecture so 
14801         libmono_la_SOURCES is defined in one place.
14802
14803 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14804
14805         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14806         from handles/.
14807
14808 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14809
14810         * driver.c: print the GC name supplied by configure.
14811
14812 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14813
14814         * local-propagation.c: Added tree mover, and moved here all the
14815         local propagation code from mini.c
14816         * mini.c: Added support for treeprop, and moved all the local
14817         propagation code to local-propagation.c
14818         * mini.h: Added support for treeprop
14819         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14820         treeprop, inline and deadce by default
14821         * Makefile.am: Added local-propagation.c
14822
14823 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14824
14825         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14826
14827 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14828
14829         * debug-debugger.c: make it compile without the Boehm GC.
14830
14831 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14832
14833         * mini.c: fixed issue with mismatch when an icall is registered
14834         with multiple names but same address.
14835
14836 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14837
14838         * declsec.c, mini-exceptions.c: use write barrier to set reference
14839         fields of managed objects.
14840
14841 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14842
14843         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14844         (can_access_internals): Fix a warning.
14845
14846         * mini.c (print_method_from_ip): Rename this to 
14847         mono_print_method_from_ip so it gets exported.
14848
14849         * trace.c: Deal with strings inside StringBuilder's containing garbage
14850         and fix memory leaks. Fixes #77848.
14851
14852 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14853
14854         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14855         fixes #77787.
14856
14857 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14858         
14859         * mini-s390.c: Remove OP_X86_TEST_NULL.
14860
14861 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14862
14863         * mini.c: use the correct GetHashCode() for the moving collector.
14864
14865 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14866
14867         * liveness.c: Regalloc spill cost tuning.
14868
14869 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14870         
14871         * mini-s390x.h: Correct S390_LONG macro.
14872
14873         * mini-s390x.c: Cleanup unused code.
14874
14875 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14876
14877         * jit-icalls.h: New file.
14878
14879         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14880         icalls and include that instead of including jit-icalls.c.
14881
14882         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14883         OP_X86 opcodes.
14884
14885 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14886
14887         * mini.c: when checking for member accessibility, also check for
14888         friend assemblies and for explicit interface implementations.
14889
14890 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14891
14892         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14893
14894         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14895
14896         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14897         common cases are done first.    
14898
14899         * mini-ops.h: Only define platform specific opcodes on the given platform.
14900
14901         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14902         branch.
14903         
14904 2006-03-14  Martin Baulig  <martin@ximian.com>
14905
14906         Revert Paolo's change from r57348:
14907
14908         * mini.h: don't use gboolean for bitfields.
14909         * mini.c: verifier changes for fields and methods accessibility.
14910
14911 2006-03-13  Neale Ferguson <neale@sinenomine.net>
14912
14913         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
14914
14915         * mini-s390x.c: Fix conv_r_un.
14916
14917         * cpu-s390, cpu-s390x.md: Fix lengths.
14918
14919 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14920
14921         * mini.c: nested types have access to all the nesting
14922         levels, not just the enclosing types.
14923
14924 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14925
14926         * mini.c: added a few more verification checks.
14927
14928 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
14929
14930         * liveness.c: Merge optimizations from the linear-il branch.
14931
14932 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14933
14934         * mini-ia64.c (emit_call): Add a comment.
14935
14936         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
14937
14938         * tramp-ia64.c: Fix some warnings.
14939
14940 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14941
14942         * mini.h: don't use gboolean for bitfields.
14943         * mini.c: verifier changes for fields and methods accessibility.
14944
14945 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14946
14947         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
14948         lazy icall wrapper changes.
14949
14950         * dominators.c: Replace all the dominator algorithms with faster
14951         ones from the linear-il branch.
14952
14953         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
14954         the mempool.
14955
14956         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14957         common cases are done first.
14958
14959         * mini-amd64.c: Fix some warnings.
14960
14961         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
14962         from the mempool.
14963
14964         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
14965         added code.
14966
14967         * mini.h: Add a missing prototype.
14968
14969 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14970
14971         * mini.c: Compile icall wrappers lazily.
14972
14973         * mini-codegen.c: Use printf instead of g_print since its much faster.
14974
14975         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
14976         function.
14977
14978         * mini.c (optimize_branches): Cache the negative result from 
14979         remove_block_if_useless ().
14980
14981         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
14982         Also fix some bblock linking issues.
14983
14984         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
14985         assembly files.
14986
14987         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
14988
14989         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
14990         accessed fields first, for better cache behavior.
14991         
14992 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14993
14994         * mini.c: speedup IList<T> array accesses.
14995
14996 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14997
14998         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
14999         inline_costs counter. Fixes #77190.
15000
15001 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
15002
15003         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
15004         trace messages. Fixes #77706.
15005
15006 2006-03-04  Martin Baulig  <martin@ximian.com>
15007
15008         * tramp-amd64.c, tramp-x86.c
15009         (mono_debugger_create_notification_function): Use
15010         mono_global_codeman_reserve() to allocate a buffer at runtime and
15011         return it.
15012
15013         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
15014
15015         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
15016         notification function at runtime and then call `initialize' in the
15017         `MONO_DEBUGGER__debugger_info' vtable.
15018
15019 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
15020
15021         * iltests.il: Fix a visibility problem.
15022
15023 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15024
15025         * driver.c, mini.c: add hooks for the counters API.
15026
15027 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15028
15029         * driver.c: show disabled options.
15030
15031 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15032
15033         * linear-scan.c: always use cost-driven selection.
15034
15035 2006-02-28  Raja R Harinath  <rharinath@novell.com>
15036
15037         * jit-icalls.c (helper_compile_generic_method): Revert change from
15038         2006-02-24.
15039
15040 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
15041
15042         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
15043
15044 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
15045
15046         * inssel.brg: style fixes, mostly to force the updated monoburg
15047         to run for people using svn.
15048
15049 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
15050
15051         * mini.c: match monoburg changes.
15052
15053 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15054
15055         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
15056         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
15057         declaration in the header file.
15058
15059 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15060
15061         * helpers.c: reduce relocations and mem usage.
15062
15063 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15064
15065         * mini.h, mini-codegen.c: disable logging features if
15066         requested by configure.
15067
15068 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
15069
15070         * mini.c: tiny verifier changes.
15071
15072 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15073
15074         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
15075         cpu-pentium.md: stack alignment changes for osx/x86,
15076         partially from Geoff Norton <gnorton@customerdna.com>.
15077
15078 2006-02-24  Raja R Harinath  <harinath@gmail.com>
15079
15080         * jit-icalls.c (helper_compile_generic_method): Update to changes
15081         in metadata/class.c.
15082
15083 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
15084         
15085         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
15086         
15087         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
15088         interface calls with large offsets.
15089
15090 2006-02-23  Raja R Harinath  <rharinath@novell.com>
15091
15092         * jit-icalls.c (helper_compile_generic_method): Document the
15093         special-case we depend on so that we can inflate the method twice
15094         with the same context with no bad side-effects.
15095
15096 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
15097
15098         * mini-x86.c, mini-amd64.c: fix for case when xen support
15099         is disabled.
15100
15101 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
15102
15103         * mini-x86.c, mini-amd64.c: generate code to access tls items
15104         in a faster way for Xen systems.
15105
15106 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15107
15108         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
15109         updates and compilation fixes for the OSX/x86 port, mostly from
15110         Geoff Norton <gnorton@customerdna.com>.
15111
15112 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15113
15114         * inssel.brg: faster interface call implementation
15115         to sync with the interface_offsets MonoVTable changes.
15116
15117 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15118
15119         * mini.c: more verification checks.
15120
15121 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
15122
15123         * mini.c: added a few more verification checks.
15124
15125 2006-02-17      Neale Ferguson <neale@sinenomine.net>
15126
15127         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
15128         facility on the processor and use it if available.
15129
15130 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15131
15132         * driver.c, aot.c, mini.c: throw exception if the IL code is
15133         invalid or unverifiable.
15134
15135 2006-02-17  Raja R Harinath  <rharinath@novell.com>
15136
15137         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
15138         m.StructField.
15139
15140 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
15141
15142         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
15143
15144 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15145
15146         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
15147         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
15148         handling of instantiated generic valuetypes.
15149
15150 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
15151
15152         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
15153         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
15154         instead.
15155
15156         * generics.2.cs: Revert the nullable reftypes tests.
15157
15158 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
15159
15160         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
15161         using __builtin_frame_address (1) as it doesn't work in the presence
15162         of optimizations. Hopefully fixes #77273.
15163
15164         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
15165         -> generics.cs change as it doesn't work with some automake versions.
15166
15167 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15168
15169         * mini.c: handle systems that sue a different way to
15170         retrieve the stack address of the current thread.
15171
15172 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
15173
15174         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
15175         it specially in the makefile.
15176
15177         * generics.2.cs: Add tests for nullable reference types.
15178
15179 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15180
15181         * mini.c: always handle the case when mono_jit_init()
15182         is called in a thread different from the main thread,
15183         confusing libgc (bug #77309).
15184
15185 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
15186
15187         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
15188
15189 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15190
15191         * mini.c: change optimize_branches () to use a single loop
15192         and introduce a new optimization to simplify some range checks.
15193
15194 2006-02-03  Martin Baulig  <martin@ximian.com>
15195
15196         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
15197         and merged with debugger_thread_manager_add_thread().
15198         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
15199         inform the debugger about the main thread.
15200
15201 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15202
15203         * basic.cs: Add test for div.un/rem.un constant folding.
15204
15205 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15206
15207         * cpu-s390x.md: correct int_xor_imm length
15208
15209 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15210
15211         * generics.2.cs: New test for #77442.
15212
15213         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15214         #77442.
15215
15216 2006-02-02  Martin Baulig  <martin@ximian.com>
15217
15218         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15219         <mono/metadata/mono-debug-debugger.h>   
15220
15221         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15222
15223 2006-02-02  Martin Baulig  <martin@ximian.com>
15224
15225         * debug-debugger.h: New header file for debug-debugger.c.
15226
15227         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15228         function is a separate thread anymore; add support for attaching.
15229
15230 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15231
15232         * tramp-x86.c: Fix a warning.
15233
15234 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15235
15236         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15237         on very large methods.
15238
15239         * aot.c (load_patch_info): Fix a warning.
15240
15241 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15242
15243         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
15244         mini-ops.h: alu membase optimizations.
15245
15246 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
15247
15248         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
15249         to speedup StringBuilder.
15250
15251 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
15252
15253         * dominators.c (mono_compute_natural_loops): Fix detection of
15254         loop body start blocks.
15255
15256         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
15257
15258 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15259
15260         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
15261         #75145.
15262
15263 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
15264
15265         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15266
15267 2006-01-25  Martin Baulig  <martin@ximian.com>
15268
15269         * debug-debugger.c: Moved the `MonoDebuggerManager' and
15270         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
15271         started to cleanup this file a little bit.
15272
15273 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
15274
15275         * mini.c: optimize a codepath frequently happening in generics code.
15276
15277 2006-01-23  Martin Baulig  <martin@ximian.com>
15278
15279         * Makefile.am: Only compile debug-debugger.c on supported platforms.
15280
15281         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
15282         functions directly.
15283
15284         * driver.c: debug-debugger.c is only available if
15285         `MONO_DEBUGGER_SUPPORTED' is defined.   
15286
15287 2006-01-23  Martin Baulig  <martin@ximian.com>
15288
15289         * debug-debugger.c: Only enable this on platforms where the Mono
15290         Debugger is working (x86 and x86_64).
15291
15292 2006-01-21  Martin Baulig  <martin@ximian.com>
15293
15294         The Mono Debugger is now using the normal `mono' instead of the
15295         `mono-debugger-mini-wrapper' when executing managed code.
15296
15297         * debug-debugger.c: New file; previously known as
15298         debugger/wrapper/wrapper.c.
15299
15300         * debug-mini.c (mono_init_debugger): Removed.
15301
15302         * driver.c (mono_main): Added new `--inside-mdb' command line
15303         argument which is used when running inside the debugger.
15304
15305 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
15306
15307         * liveness.c (mono_analyze_liveness): Remove some unused data
15308         structures.
15309
15310 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15311
15312         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
15313
15314 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
15315
15316         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
15317         depends on implementation details of monobitset.
15318
15319         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
15320         Fixes #77271.
15321
15322 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
15323
15324         * liveness.c: Update after monobitset changes.
15325
15326 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
15327
15328         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
15329
15330 2006-01-11 Neale Ferguson <neale@sinenomine.net>
15331
15332         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
15333
15334         * mini-s390x.c: Remove warning messages.
15335
15336 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15337
15338         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
15339
15340 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
15341
15342         * generics.2.cs: Add ldelem/stelem_any test.
15343
15344 2006-01-10 Neale Ferguson <neale@sinenomine.net>
15345
15346         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
15347
15348 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
15349
15350         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
15351         
15352 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
15353
15354         * generics.2.cs: Reenable vtype tests.
15355
15356         * inssel-x86.brg: Remove an icorrect valuetype rule.
15357
15358 2006-01-06 Neale Ferguson <neale@sinenomine.net>
15359
15360         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
15361         initial support for OP_ABS.
15362
15363 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15364
15365         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
15366
15367 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15368
15369         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
15370         conversion and implement LADD/LSUB.
15371
15372         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
15373         architectures.
15374
15375 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15376
15377         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
15378
15379         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
15380         architectures.
15381
15382 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15383
15384         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
15385         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
15386         (stack walk problem).
15387
15388 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
15389
15390         * aot.c (mono_aot_load_method): Fix a warning.
15391
15392 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15393
15394         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
15395
15396 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15397
15398         * iltests.il: Add test for #77148.
15399
15400         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
15401         #77148.
15402
15403 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15404
15405         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
15406
15407 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15408
15409         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
15410         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
15411
15412         * basic-long.cs: Add lconv-to-r4/r8 tests.
15413
15414 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15415
15416         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
15417
15418         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
15419         here as on other archs.
15420
15421 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15422
15423         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
15424
15425 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15426
15427         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
15428         
15429         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
15430
15431         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
15432         instrument_prolog; Add memory_barrier instruction.
15433
15434 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
15435
15436         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
15437
15438 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
15439
15440         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
15441
15442         * aliasing.c inssel.brg: Fix warnings.
15443
15444         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
15445         could skip initialization of some parts of memory.
15446
15447         * mini.c mini-ia64.c: Fix warnings.
15448
15449         * inssel-sparc.brg: Add an implementation of lneg which actually works.
15450
15451 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15452
15453         * aliasing.c (mono_build_aliasing_information): Add a workaround for
15454         a crash seen on sparc.
15455
15456         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
15457         
15458         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
15459
15460 2005-12-21 Neale Ferguson <neale@sinenomine.net>
15461
15462         * mini-ops.h: Add s390_backchain instruction
15463
15464         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
15465
15466         * cpu-s390.md: Add s390_backchain instruction
15467
15468         * mini-s390.c: Significant ABI changes
15469
15470         * mini-s390.h: Cater for zero length structures
15471
15472 2005-12-20 Neale Ferguson <neale@sinenomine.net>
15473
15474         * mini-s390.c: ABI fixes
15475
15476         * inssel-s390.brg: Remove debug statements
15477
15478         * cpu-s390.md: Fix length of ATOMIC_xx operations
15479
15480 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
15481
15482         * basic-float.cs: Add float<->long conversion tests.
15483
15484 2005-12-16 Neale Ferguson <neale@sinenomine.net>
15485
15486         * mini-s390.c: Fix LOCALLOC processing.
15487
15488         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
15489
15490 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15491
15492         * iltests.il: Add tests for some opcodes not covered by the other
15493         tests.
15494
15495 2005-12-15 Neale Ferguson <neale@sinenomine.net>
15496
15497         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
15498         register loading for Tail processing; Correct trace output.
15499
15500         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
15501
15502         * cpu-s390.md: Correct size of jmp instruction. 
15503
15504 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15505
15506         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
15507
15508 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15509
15510         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
15511           Bring s390 up to current level.
15512
15513 2005-12-12  Zltan Varga  <vargaz@gmail.com>
15514
15515         * generics.2.cs: Disable the newly added tests as they do not work yet.
15516         
15517         * generics.2.cs: Add valuetype tests.
15518
15519 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
15520
15521         * basic-long.cs: Add i4->u8 test.
15522
15523         * objects.cs: Add tests for JIT intrinsic.
15524
15525         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
15526         optimizations lost by a mistake.
15527
15528 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15529
15530         * basic-long.cs: Remove a test moved to objects.cs.
15531
15532         * arrays.cs: Add more array tests.
15533
15534 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15535
15536         * arrays.cs: Add new tests for multi-dimensional arrays.
15537
15538 2005-12-06  Raja R Harinath  <rharinath@novell.com>
15539
15540         * Makefile.am (test_sources2): Add generics.2.cs.
15541         (EXTRA_DIST): Add test_sources2.
15542
15543 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15544
15545         Support for boxing and unboxing nullable types as well as the
15546         isinst operation on nullables, per the CLI ammendment.
15547
15548         * inssel.brg (CEE_ISINST): Special case for nullable
15549
15550         * mini.c (handle_unbox_nullable): new method
15551         (handle_box): Special case for nullable types
15552         (mono_method_to_ir): Call handle_unbox_nullable in correct
15553         places.
15554
15555         * generics.2.cs: New test suite
15556
15557         * Makefile.am: Support for regression tests with generics.
15558
15559 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
15560
15561         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
15562         allocated to registers. Fixes #76800.
15563
15564 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
15565
15566         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
15567
15568 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
15569
15570         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
15571         of platforms.
15572
15573 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
15574
15575         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
15576         objects.cs.
15577
15578         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
15579         
15580         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
15581 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
15582
15583         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
15584         single precision before storing to a single precision location.
15585
15586 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15587
15588         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
15589
15590 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
15591
15592         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
15593         correct files.
15594
15595         * basic.cs: Remove test_0_byte_compares test which was moved to
15596         objects.cs a long time ago.
15597
15598 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
15599
15600         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15601
15602 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
15603
15604         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
15605         handlers are called.
15606
15607         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
15608         throwing code.
15609
15610          * mini-ia64.c: Add support for the throw->branch exception 
15611         optimization.   
15612
15613         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
15614
15615 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15616
15617         * mini.c: Enabled "fastpath" deadce :-)
15618         
15619 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15620
15621         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
15622         alias analysis pass to support it.
15623         * mini.h: Likewise.
15624         * ssa.c: Likewise.
15625         * liveness.c: Likewise (liveness computation can use aliasing
15626         information to be more accurate).
15627         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
15628         moreover made so that "--compile-all" uses the given optimization
15629         flags and not the default ones.
15630         * aliasing.c: Alias analysis (new file).
15631         * aliasing.h: Likewise.
15632         * Makefile.am: added "aliasing.c" and "aliasing.h".
15633         
15634 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15635
15636         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
15637         OP_L opcodes.
15638
15639 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
15642         fp >= end_of_stack exit condition, as it is not needed, and it might
15643         become true for fp eliminated frames.
15644
15645 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15646
15647         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
15648         coded offsets.
15649
15650 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
15651
15652         * mini-arm.c: fixed alignment of doubles/longs to match
15653         the C ABI (bug #76635).
15654
15655 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
15656
15657         * aot.c: fix compilation with --enable-minimal=aot.
15658
15659 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
15660
15661         * mini-arm.c: fixed compatibility with the new
15662         floating point emulator package for compares.
15663
15664 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
15665
15666         * mini.c : reverted sig->pinvoke changes (r51396-51397).
15667
15668 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
15669
15670         * mini-exceptions.c (print_stack_frame): Output to stderr.
15671         (mono_handle_native_sigsegv): Ditto.
15672
15673 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15674
15675         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
15676         OP_LCONV_TO_OVF_I implementation.
15677
15678         * mini-amd64.c: Add support for the throw->branch exception 
15679         optimization.
15680
15681         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
15682         when the catch clause catches a more general exception, i.e. Object.
15683
15684 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
15685
15686         * cpu-ia64.md: Remove unused opcodes.
15687
15688         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
15689         specific defines for architectures defining USE_SIGACTION.
15690
15691         * mini-ia64.c: Fix some warnings.
15692
15693         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
15694         version seemed to skip a frame.
15695
15696 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15697
15698         * mini.c: Clean up the usage of sig->pinvoke flag. Now
15699         only calls which are made to native code use this flag.
15700
15701 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15702
15703         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
15704         varargs methods as well.
15705         
15706         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
15707         which have save_lmf set. Reorganize methods prologs a bit.
15708
15709         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
15710         debugger to the proper place.
15711
15712 2005-10-29  Martin Baulig  <martin@ximian.com>
15713
15714         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
15715         when running inside the debugger until the debugger has support
15716         for it.
15717
15718 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15719
15720         * mini.h: Fix a warning.
15721
15722 2005-10-24  Miguel de Icaza  <miguel@novell.com>
15723
15724         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
15725         we expose publicly, this returns the string.
15726
15727 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
15728
15729         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
15730         with fp elimination.
15731
15732 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15733
15734         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
15735         native stacktrace using the glibc 'backtrace' function if available.
15736
15737 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
15738
15739         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
15740
15741         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
15742         handle SIGSEGVs received while in native code.
15743
15744         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
15745         code, call mono_handle_native_sigsegv which will abort the runtime
15746         after printing some diagnostics, instead of converting it into a
15747         confusing NullReferenceException.
15748
15749 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15750
15751         * cpu-pentium.md: Remove unused opcodes.
15752
15753 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15754
15755         * mini-amd64.h (MonoLMF): Add rsp field.
15756
15757         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15758         the lmf too.
15759
15760 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * mini-codegen.c (get_register_spilling): Fix some warnings.
15763
15764 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15765
15766         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15767         elimination during exception handling. Enable fp elimination by
15768         default.
15769
15770         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15771         elimination.
15772
15773 2005-10-16  Martin Baulig  <martin@ximian.com>
15774
15775         * mini-exceptions.c
15776         (mono_debugger_run_finally): New public method for the debugger.
15777
15778 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15779
15780         * debug-mini.c (mono_debug_init_method): Fix warning.
15781
15782         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15783         the 'exname' parameter const to fix some warnings.
15784
15785 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15786
15787         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15788         introduced by the previous patch.
15789
15790 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15791
15792         * basic-float.cs: Add test for precision of float arithmetic.
15793
15794         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15795         when loading/storing single values from/to memory.
15796
15797         * mini.c (mono_jit_compile_method_with_opt): Create the function
15798         pointers in the correct domain.
15799
15800 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15801
15802         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15803         introduced by previous patch.
15804         
15805         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15806         when out_filter_idx is NULL.
15807
15808         * mini-exceptions.c: Don't run filter clauses twice during exception
15809         handling. Fixes #75755.
15810
15811 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15812
15813         * aot.c: Add support for ldflda wrappers.
15814
15815         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15816         #75902.
15817
15818 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15819
15820         * mini.c, mini.h: do not consider exception handlers blocks when
15821         setting up interface variables.
15822
15823 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15824
15825         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15826
15827 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15828
15829         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15830         causes a regression.
15831
15832         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15833
15834 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15835
15836         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15837         of the OP_P definitions.
15838
15839         * TODO: Add a proposal for dealing with the CEE/OP mess.
15840
15841         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15842         optimizations from the x86 port.
15843
15844         * cpu-amd64.md: Ditto.
15845
15846         * basic.cs basic-long.cs: Add tests.
15847
15848 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15849
15850         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15851         Patrik Torstensson's implementation of my exception-handling
15852         optimization idea, when the exception object is not used
15853         (bug #62150).
15854
15855 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15856
15857         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15858         of the mul_imm optimizations from the old jit.
15859
15860 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15861
15862         * mini.c, liveness.c: patch by Patrik Torstensson and
15863         Zoltan Varga to improve performance in methods with
15864         exception clauses.
15865
15866 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15867
15868         * driver.c: Remove 'Globalization' entry from --version.
15869
15870 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15871
15872         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15873         there is a profiler interested in JIT events.
15874
15875         * aot.c: Load profile files produced by the AOT profiling module, and
15876         reorder methods based on the profiling info. Add a 'method_order' table
15877         to the AOT file to make mono_aot_find_jit_info work with the reordered
15878         methods.
15879
15880         * mini.h: Bump AOT file version info.
15881
15882 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15883
15884         * mini-arm.h: work around what looks like a gcc bug when optimizations
15885         are enabled.
15886
15887 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15888
15889         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15890         conditionals.  Use ...
15891         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15892
15893 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15894
15895         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15896         to determine the amount of memory to copy when passing valuetypes.
15897
15898         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15899         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15900
15901 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15902
15903         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
15904         information about aot.
15905
15906 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15907
15908         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15909         macros. This will allow a deadlock debugger to easily be plugged
15910         in.
15911
15912 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
15913
15914         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
15915
15916 2005-09-27  Raja R Harinath  <rharinath@novell.com>
15917
15918         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
15919         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
15920         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
15921         ($(arch_built)) [CROSS_COMPILING]: Error out.
15922
15923 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15924
15925         * aot.c: Add support for the no_special_static flag for classes.
15926
15927 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15928
15929         * Reapply reverted patches.
15930
15931         * *: Revert r50174 as well.
15932
15933         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
15934
15935 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15936
15937         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
15938
15939 2005-09-23  Miguel de Icaza  <miguel@novell.com>
15940
15941         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
15942         part of the SIG_HANDLER_SIGNATURE.  
15943
15944 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15945
15946         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
15947         statistics.
15948
15949         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
15950         introduced by previous patch.
15951
15952 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
15953
15954         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
15955         saved registers too.
15956
15957         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
15958         upon the information returned by get_call_info ().
15959         
15960         * mini-x86.c (add_float): Fix stack size calculation.
15961         (mono_arch_call_opcode): Rewrite this so it works based up the
15962         information returned by get_call_info ().
15963         (mono_arch_get_this_vret_args): Ditto.
15964
15965 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
15966
15967         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
15968         in cinfo to determine the registers which need to be used.
15969
15970 2005-09-20  Miguel de Icaza  <miguel@novell.com>
15971
15972         * driver.c (mono_main): Add --server and --desktop flags. 
15973
15974 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
15975
15976         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
15977         registers as global registers.
15978
15979         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
15980         longer needed with the new register allocator.
15981
15982         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
15983
15984         * cpu-ia64.md: Remove unused opcodes.
15985         
15986         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
15987         
15988 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
15989
15990         * cpu-amd64.md: Remove unused opcodes.
15991
15992         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
15993         needed with the new register allocator.
15994
15995         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
15996         reg-reg moves.
15997
15998 2005-09-16  Raja R Harinath  <rharinath@novell.com>
15999
16000         * Makefile.am (check-local): Don't invoke semdel-wrapper.
16001
16002 2005-09-16  Martin Baulig  <martin@ximian.com>
16003
16004         * exceptions-amd64.c
16005         (throw_exception): Don't call mono_debugger_throw_exception() if
16006         we're a rethrow - see the FIXME in the code.
16007
16008 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
16009
16010         * mini.c (mono_init_exceptions): This only works on some architectures.
16011         
16012 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16013
16014         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
16015         on ia64.
16016
16017         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
16018
16019         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
16020         now in mini-exceptions.c.
16021
16022 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
16023
16024         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
16025         now in mini-exceptions.c.
16026
16027 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16028
16029         * exceptions-x86.c: Applied patch from Patrik Torstensson 
16030         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
16031
16032         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
16033         code into mini-exceptions.c. Add some assertions to it.
16034
16035 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
16036
16037         * aot.c (emit_section_change): Applied patch from "The Software Team" 
16038         (<software@solmersa.com>). Fix as errors on windows.
16039
16040 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16041
16042         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
16043         method info into the LMF.
16044
16045 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16046         
16047         * mini-ia64.c: Add proper unwind info for method epilogs.
16048
16049         * exceptions-ia64.c: Add some code to help debugging.
16050         
16051         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
16052
16053         * mini-exceptions.c: Fix warning.
16054
16055 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16056
16057         * mini.c: Really fix build.
16058
16059         * mini-x86.c mini-amd64.c: Fix build.
16060
16061 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16062
16063         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
16064
16065         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
16066         some Interlocked methods as intrinsics.
16067
16068         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
16069         for Thread methods as well.
16070
16071         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
16072
16073         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
16074
16075         * mini-ia64.c mini-x86.c mini-amd64.c 
16076         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
16077         OP_MEMORY_BARRIER.
16078         
16079         * mini.c (mono_init_exceptions): Fix build breakage.
16080
16081 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
16082
16083         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
16084         of instructions. Use the new ia64_unw_op macros for emitting unwind
16085         info.
16086
16087         * mini.c (mono_init_exceptions): Initialize exception handling
16088         related trampolines at startup.
16089
16090 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
16091
16092         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
16093
16094 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
16095
16096         * mini.c: Handle type loading errors gracefully during compilation and
16097         throw the appropriate exception.
16098
16099 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
16100
16101         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
16102         for the mono binary.
16103
16104 2005-09-09  Martin Baulig  <martin@ximian.com>
16105
16106         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
16107         the release.
16108
16109 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16110
16111         * mini-arm.h: use emulation for conv.r.un for the release.
16112
16113 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16114
16115         * mini-arm.c, objects.cs: more fixes and tests for them.
16116
16117 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16118
16119         * mini-arm.c: align structures to at least 4 bytes to be able
16120         to keep our current optimized memcpy.
16121
16122 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
16123
16124         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
16125
16126 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16127
16128         * mini.c: ignore SIGPIPE.
16129
16130 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
16131
16132         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
16133
16134         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
16135
16136 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
16137
16138         * mini.h: Add prototype for mono_allocate_stack_slots_full.
16139
16140 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16141
16142         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
16143         exception handling support.
16144         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
16145         patch by Brian Koropoff <briank@marakicorp.com>).
16146
16147 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
16148
16149         * mini.c: revert another 'optimization' which breaks when
16150         items on the eval stack need to be saved at a basic block end
16151         (bug #75940).
16152
16153 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16154
16155         * jit-icalls.c: for arrays, ensure we always provide
16156         lower bounds.
16157
16158 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
16159
16160         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
16161         
16162         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
16163
16164 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
16167         arguments in their original register.
16168
16169 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
16170
16171         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
16172         memset/memcpy.
16173
16174         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
16175         when ssapre is enabled.
16176
16177         * inssel-long.brg: Fix bug in previous patch.
16178
16179         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
16180         multiplication by a constant.
16181
16182 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
16183
16184         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
16185         icc.
16186
16187         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
16188         saving registers.
16189
16190 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
16191
16192         * inssel-arm.brg: apply changes tested by Brian Koropoff
16193         <briank@marakicorp.com>.
16194
16195 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16196
16197         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
16198         
16199 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
16200
16201         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
16202         to the same register if dreg is just a base register.
16203         (print_ins): Improve printing of membase opcodes.
16204
16205         * inssel-x86.brg: Add optimized ldind(reg) rules.
16206
16207         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16208
16209 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16210
16211         * mini.c: when running under valgrind, set the stack bottom for
16212         the GC at the actual approximate stack for the app (fixes running
16213         mono with valgrind).
16214
16215 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16216
16217         * mini.c: do no break at the first valuetype to init found
16218         (fixes bug #75791).
16219
16220 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16221
16222         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16223
16224 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16225
16226         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16227
16228 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16229
16230         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16231
16232 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16233
16234         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16235
16236         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16237         code.
16238
16239         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16240         code.
16241
16242         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
16243         methods.
16244
16245 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
16246
16247         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
16248
16249 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16250
16251         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
16252         in the tail recursion optimization.
16253
16254         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
16255         debug info into the assembly file.
16256
16257         * iltests.il: Add test for filter regions.
16258
16259         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
16260         initial stack of filter regions. Fixes #75755.
16261
16262 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
16263
16264         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
16265         stack requirements.
16266
16267 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16268
16269         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
16270         the check for an already compiled method on non-ia64 platforms.
16271         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
16272         proper domain.
16273
16274         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
16275
16276         * inssel-x86.brg: Add some optimized call rules.
16277
16278 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16279
16280         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
16281         method here.
16282
16283         * mini.h mini-trampolines.c: Pass the trampoline argument to 
16284         mono_arch_patch_delegate_trampoline.
16285
16286         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
16287
16288         * mini-trampolines.c: Fix build.
16289
16290         * mini-amd64.h: Add delegate trampolines.
16291
16292         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
16293
16294         * inssel-amd64.brg: Add optimized call rules.
16295         
16296         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
16297
16298         * inssel-ia64.brg: Add optimized ldind(reg) rules.
16299
16300 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16301
16302         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
16303         change.
16304
16305         * mini-ia64.c: Remove LMF fixmes.
16306
16307         * mini-ia64.h: Remove most fields from LMF.
16308
16309         * inssel-ia64.brg (stmt): Fix unaligned access errors.
16310
16311         * mini-trampolines.c: Add support for IA64 function descriptors.
16312
16313         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
16314         for IA64 function descriptors.
16315
16316 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
16317
16318         * tramp-arm.c: patch the vtable for virtual calls. Added
16319         support code to register/unregister the LMF.
16320         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
16321         more LMF work.
16322
16323 2005-08-19  Dick Porter  <dick@ximian.com>
16324
16325         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
16326         bit value if needed.
16327
16328 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16329
16330         * mini.c (mini_get_method): Move handling of wrapper data here.
16331
16332         * mini.c (mono_method_to_ir): Add support for dynamic methods.
16333
16334         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
16335         virtual.
16336
16337         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
16338         bblock->code does not remain empty.
16339
16340 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
16341
16342         * arrays.cs: Add regression test for #75832.
16343
16344         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
16345         rules. Fixes #75832.
16346
16347         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
16348         instruction scheduling.
16349
16350 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
16351
16352         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
16353
16354 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16355
16356         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
16357
16358         * mini-codegen.c: Fix VC build.
16359
16360         * cpu-pentium.md: Increase length of atomic_exhange_i4.
16361
16362 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16363
16364         * mini.h: fix signature for mono_register_opcode_emulation.
16365
16366 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
16367
16368         * mini.c: Get rid of most of the helper_sig_... constants using
16369         mono_create_icall_signature ().
16370
16371 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16372
16373         * jit-icalls.c (helper_ldstr): New helper function.
16374
16375         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
16376
16377         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
16378         throw, load the string using a helper call instead of creating a string object.
16379
16380         * aot.c: Update after LDSTR changes.
16381
16382         * mini.h: Bump AOT file version.
16383         
16384         * aot.c: Save class size info into the AOT file. Print more statistics during
16385         compilation.
16386
16387         * mini.h: Bump AOT file version.
16388
16389         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
16390         ordering of disasm cases. Fixes #74957.
16391
16392 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
16393
16394         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
16395         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
16396         the generic code needed for the ARM port.
16397
16398 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
16399
16400         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
16401         inssel-arm.brg: more ARM features and fixes.
16402
16403 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
16404
16405         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
16406         ARM port work in progress.
16407
16408 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16409
16410         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
16411
16412         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
16413
16414         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
16415
16416         * inssel.brg (mini_emit_memset): Add support for unaligned access.
16417
16418         * *-ia64.*: Ongoing IA64 work.
16419         
16420         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
16421
16422 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16423
16424         * TODO: Remove out-of-data todo stuff.
16425
16426         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
16427         dead code.
16428
16429         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
16430
16431         * mini.h: Bump corlib version.
16432
16433 2005-07-27  Martin Baulig  <martin@ximian.com>
16434
16435         * mini-codegen.c
16436         (create_copy_ins): Added `const unsigned char *ip' argument; set
16437         `copy->cil_code' from it.
16438
16439 2005-07-27  Martin Baulig  <martin@ximian.com>
16440
16441         * mini-exceptions.c (mono_handle_exception): Don't call
16442         mono_debugger_handle_exception() for filters.
16443
16444 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
16445
16446         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
16447         as well.
16448
16449 2005-07-26  Martin Baulig  <martin@ximian.com>
16450
16451         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
16452
16453         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
16454         helper_compile_generic_method() if the method is actually virtual
16455         and non-final.
16456
16457 2005-07-26  Martin Baulig  <martin@ximian.com>
16458
16459         * mini.c
16460         (trampoline_code): Renamed to `mono_trampoline_code' and made it
16461         public; this is now accessed directly by the debugger.
16462         (mono_generic_trampoline_code): Removed.
16463
16464         * debug-mini.c
16465         (mono_debug_init_method): Also add interncalls and wrappers.
16466
16467 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
16468
16469         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
16470
16471 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16472
16473         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
16474
16475 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16476
16477         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
16478
16479 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16480
16481         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
16482         getting TLS offsets on AMD64 too.
16483
16484 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
16485
16486         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
16487
16488 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
16489
16490         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
16491         inssel-arm.brg, mini-arm.h: ARM port work in progress.
16492
16493 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16494
16495         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
16496
16497         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
16498         to mini.c.
16499
16500         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
16501         mono_sparc_is_virtual_call ().
16502         
16503         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
16504
16505         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
16506         trampoline parameters.
16507
16508         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
16509         
16510         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
16511         to mono_arch_get_vcall_slot_addr.
16512
16513         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
16514         trampoline code.
16515
16516         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
16517
16518 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16519
16520         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
16521
16522 2005-07-19  Martin Baulig  <martin@ximian.com>
16523
16524         * exceptions-amd64.c (throw_exception): Call
16525         mono_debugger_throw_exception() here like we're doing it on i386.
16526
16527 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16528
16529         * mini-ia64.c: Add optimized TLS access support.
16530
16531 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
16532
16533         * mini-exceptions.c: Ongoing IA64 work.
16534
16535         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
16536
16537         * mini.c: Use the default optimization set when embedding. Fixes
16538         #75194.
16539
16540 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
16541
16542         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
16543         of trampolines to a separate file.
16544
16545         * mini-trampolines.c: New file.
16546
16547         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
16548         separate file.
16549         
16550         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
16551         amd64/ia64 code.
16552
16553         * mini-codegen.c: Fix cygwin build.
16554
16555 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
16556
16557         * mini.c: Add some minor changes needed by the IA64 port.
16558
16559         * *-ia64.*: Ongoing IA64 work.
16560
16561 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
16562
16563         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
16564         trampolines into arch-independent and arch-dependent parts.
16565
16566         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
16567
16568 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
16569
16570         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
16571
16572         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
16573         the xp-regalloc-branch for amd64.
16574
16575         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
16576         xp-regalloc-branch for x86.
16577
16578 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16579
16580         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
16581
16582 2005-07-06  Martin Baulig  <martin@ximian.com>
16583
16584         * mini.c
16585         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
16586         (mono_jit_runtime_invoke): Likewise.
16587
16588 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16589
16590         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
16591         on x86 too.
16592         
16593         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
16594         without loading their metadata. Reorganize the file format so exception handling+
16595         debug info is kept separate from normal method info. Create MonoJitInfo 
16596         structures for methods lazily.
16597
16598         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
16599         loading metadata.
16600         (x86_class_init_trampoline): Patch AOT class init trampolines too.
16601
16602         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
16603
16604         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
16605         in AOT code.
16606
16607         * mini.h: Bump AOT file version.
16608
16609 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
16610
16611         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16612
16613 2005-07-01  Raja R Harinath  <rharinath@novell.com>
16614
16615         * Makefile.am (check-local): Call semdel-wrapper.
16616
16617 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
16618
16619         * mini-x86.c: Revert the last change as it seems to break the build..
16620
16621 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16622
16623         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16624         
16625         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
16626
16627 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
16628
16629         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
16630         outside of the macro, so strange stuff doesn't happen with gcc4
16631         (NEW_AOTCONST_TOKEN): Likewise.
16632
16633 2005-06-28  Martin Baulig  <martin@ximian.com>
16634
16635         * mini.c (mini_class_is_system_array): New static method; use this
16636         instead of `klass->parent == mono_defaults.array_class' everywhere
16637         since this also works for the new generic array class.
16638
16639 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16640
16641         * inssel.brg: Remove warnings.
16642
16643 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
16644
16645         * mini-ia64.c: Ongoing IA64 work.
16646
16647         * basic-float.cs: Add float->i1 conversion test.
16648
16649         * iltests.il: Add conv.u4 test.
16650
16651 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
16652
16653         * inssel-long.brg: Fix bug caused by last change.
16654
16655 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
16656
16657         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
16658         BSDs.  Allows the x86 JIT to work on OSX86
16659
16660 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
16661
16662         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
16663         u4->i8 conversion.
16664
16665         * mini-ia64.c: Ongoing IA64 work.
16666
16667 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16668
16669         * mini-ia64.c: Ongoing IA64 work.
16670
16671         * driver.c: Clean up jit_code_hash as well when using --regression.
16672
16673         * inssel-long.brg: Fix long->i4/u4 conversion rules.
16674
16675         * basic-long.cs: Add tests for long->u4 conversion.
16676
16677 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
16678
16679         * mini.c: Take mono_get_domainvar out of macros. This makes sure
16680         that we do not depend on undefined C behavior: the order stuff
16681         gets evaluated within an expression. Fixes mono when compiled on
16682         GCC 4.
16683
16684 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
16685
16686         * *-ia64.*: Ongoing IA64 work.
16687
16688         * aot.c: Lower memory usage while loading AOT methods.
16689
16690         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
16691
16692         * mini.h: Bump AOT file format version.
16693
16694 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16695
16696         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
16697
16698 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
16699
16700         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
16701         not on callee assembly). Fixed some comments.
16702
16703 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
16704
16705         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
16706         it gets proper disassembly.
16707         (emit_method_info): Remove some dead code.
16708
16709         * mini.c (mini_method_compile): Allways allocate the GOT var in
16710         mono_method_to_ir for emulating opcodes.
16711
16712 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
16713
16714         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
16715         before freeing the code memory. Fixes #74990.
16716
16717         * objects.cs: Add regression test for #74992.
16718
16719         * liveness.c: Extend live ranges of arguments to the beginning of the
16720         method. Fixes #74992.
16721
16722         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
16723         so it points into the faulting instruction.
16724
16725 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
16726
16727         * jit-icalls.c (mono_imul_ovf): Add exception handling.
16728
16729         * *-ia64.*: Ongoing IA64 work.
16730
16731         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
16732
16733 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
16734
16735         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
16736
16737         * *-ia64.*: Ongoing IA64 work.
16738
16739 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
16740
16741         * basic-long.cs: Add tests for add/sub.ovf.
16742
16743         * basic.cs: Add tests for sub.ovf.
16744
16745         * *-ia64.*: Ongoing IA64 work.
16746
16747 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
16748
16749         * *-ia64.*: Ongoing IA64 work.
16750
16751         * basic.cs: Add conv.ovf.i4.un test.
16752
16753 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16754
16755         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16756         
16757 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16758
16759         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16760
16761 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16762
16763         * *-ia64.*: Ongoing IA64 work.
16764
16765 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16766
16767         * trace.[ch]:
16768         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16769
16770 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16771
16772         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16773
16774 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16775
16776         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16777
16778         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16779         of a call is callable by a near call.
16780
16781 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16782
16783         * mini-ia64.c: Ongoing IA64 work.
16784
16785 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16786
16787         * genmdesc.c: Make the generated array non-static.
16788
16789         * inssel-long.brg: Fix LSHR_IMM rule.
16790
16791         * *-ia64.*: Ongoing IA64 work.
16792
16793         * *-ia64.*: Ongoing IA64 work.
16794
16795 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16796
16797         * *-ia64.*: Ongoing IA64 work.
16798
16799         * *-ia64.*: Ongoing IA64 work.
16800         
16801         * mini-ia64.c: Ongoing IA64 work.
16802
16803         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16804
16805 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16806
16807         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16808         
16809         * objects.cs basic-long.cs: Move some tests to objects.cs.
16810
16811 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16812
16813         * *-ia64.*: Ongoing IA64 work.
16814
16815         * iltests.il: Add a new test.
16816
16817         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16818         newobj. Fixes #75042.
16819
16820 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16821
16822         * *-ia64.*: Ongoing IA64 work.
16823         
16824         * *-ia64.*: Ongoing IA64 work.
16825         
16826         * *-ia64.*: Ongoing IA64 work.
16827
16828         * basic.cs objects.cs: Move tests accessing static variables as well.
16829
16830         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16831
16832 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16833
16834         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16835
16836         * driver.c: Always print failed tests.
16837
16838         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16839         frame pointer.
16840
16841         * *ia64*: Ongoing IA64 work.
16842
16843 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16844
16845         * basic.cs: Add tests for add.ovf. Fix warnings.
16846
16847 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16848
16849         * driver.c (mono_main): Avoid crash if no argument is passed to
16850         --break;  Do not use g_error, but f_printf.   And fix all other
16851         ocurrences of the same crash.
16852
16853 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16854
16855         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16856         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16857         Fixes #74742.
16858
16859 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16860
16861         * *-ia64.*: Add beginnings of IA64 backend.
16862
16863         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16864
16865 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16866
16867         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16868         Fixes #74925.
16869
16870         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16871
16872         * mini-amd64.c: Fix a warning.
16873
16874 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16875
16876         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16877         in float_neg. Fixes #74897.
16878
16879         * mini-amd64.c (emit_call): Fix another near call bug.
16880
16881 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16882
16883         * declsec.c: Keep the appdomain information in the structure. Added a 
16884         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16885         value gets overwritten).
16886         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16887         an MonoAppDomain member to MonoSecurityFrame.
16888         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16889         used in the stack walk. Now use a MonoArray which grow (double) when
16890         it gets full.
16891
16892 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16893
16894         * mini.c: Re-enabled runtime cleanup, since running threads should
16895         now properly stop when exiting.
16896
16897 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16898
16899         * mini-codegen.c: New file contaning the arch-independent local
16900         register allocator. Not used by any architectures yet.
16901
16902         * mini.h linear-scan.c: Merge some changes from the 
16903         mini-xp-local-regalloc branch.
16904
16905 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16906
16907         * mini-amd64.c (emit_call): Fix calls to native functions when the
16908         runtime is compiled as a shared library. Fixes #74756.
16909
16910         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
16911         on a literal field. Fixes #74751.
16912
16913 2005-04-25  Raja R Harinath  <rharinath@novell.com>
16914
16915         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
16916
16917 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16918
16919         * objects.cs: Add missing null casting test.
16920
16921 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16922
16923         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
16924         in wrapper methods. Also rename 'address' variable to 'offset'.
16925
16926 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16927
16928         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
16929         warnings.
16930         
16931         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
16932
16933         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
16934         work on windows.
16935
16936 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16937
16938         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
16939
16940 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16941
16942         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
16943         just the last bytes.
16944
16945 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16946
16947         * aot.c (mono_compile_assembly): Fix warning.
16948
16949         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
16950         by the _MSC_VER stuff.
16951
16952 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16953
16954         * inssel-long.brg: Fix #74588.
16955
16956         * cpu-amd64.md: Fix #74591.
16957
16958         * iltests.il: Add new regression tests.
16959
16960 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16961
16962         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
16963         valuetype.
16964
16965 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
16966
16967         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
16968
16969         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
16970         from Bill Middleton <flashdict@gmail.com>.
16971
16972 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16973
16974         * arrays.cs: Add new regression test. Fix warnings.
16975
16976 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
16977
16978         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
16979         and leakage in CKFINITE.
16980
16981         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
16982         this to a null op since it is called on amd64 too.
16983
16984         * exceptions-amd64.c (get_throw_trampoline): Align stack.
16985
16986         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
16987         body since this is not used on amd64.
16988         
16989         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
16990
16991         * mini-amd64.c: Remove obsolete fixmes.
16992
16993         * mini.c (print_method_from_ip): Fix debugging support.
16994
16995 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16996
16997         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
16998         so that expressions that don't give much gain are not reduced.
16999         * ssapre.h: Likewise.
17000
17001 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17002
17003         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
17004
17005         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
17006
17007         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
17008
17009 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
17010
17011         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
17012
17013         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
17014
17015 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
17016
17017         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
17018         stack touching.
17019
17020         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
17021
17022         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
17023
17024         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
17025
17026         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
17027         MONO_ARCH_USE_SIGACTION. Fixes #74252.
17028
17029         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
17030
17031         * mini-x86.c: Fix up stack overflow handling.   
17032
17033         * exceptions.cs: Add new regression test.
17034
17035 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
17036
17037         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
17038         mono_jit_thread_attach.
17039
17040         * mini.c (mono_method_to_ir): Verify called method is not abstract.
17041
17042 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17043
17044         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
17045         avoid calling constructors using callvirt.
17046
17047         * inssel.brg: Fix #74073.
17048
17049 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17050
17051         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
17052         compilation with non-GCC compilers.
17053         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
17054         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
17055
17056 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
17057
17058         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
17059         klass->interface_offsets (will likely fix bug#74073).
17060
17061 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17062
17063         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
17064
17065 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
17066
17067         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
17068         to amd64_div_reg_size ().
17069         
17070         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
17071
17072 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17073
17074         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
17075
17076 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17077
17078         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
17079
17080 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17081
17082         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
17083         
17084         * mini.c (mono_precompile_assembly): Load and precompile referenced
17085         assemblies as well. Fixes #74015.
17086
17087 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17088
17089         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
17090
17091 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17092
17093         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
17094         a lot of checks and (anyway) permissions cannot work until corlib is 
17095         loaded.
17096
17097 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
17098
17099         * mini-ppc.c: fixed ABI issue on sysv/ppc.
17100
17101 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17102
17103         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
17104         calls (fixes bug#72824).
17105
17106 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17107
17108         * mini.c: fix tail recursion elimination (see test in bug#73936).
17109
17110 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
17111
17112         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
17113         some fp functions in sse2 mode.
17114
17115 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
17116
17117         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
17118
17119 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
17120
17121         * mini.h mini.c: Add mono_get_jit_tls_key ().
17122
17123         * mini-x86.c: Enable fast TLS support on windows.
17124
17125 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17126
17127         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
17128         * mini.c: Check for p/invoke method when generating code. If a
17129         p/invoke method, or it's class, isn't decorated with [Suppress
17130         UnmanagedCodeSecurity] then generate code to call System.Security.
17131         UnmanagedDemand (only if the security manager is active).
17132
17133 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17134
17135         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
17136         last change as it seems to cause strange crashes.
17137         
17138 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17139
17140         * *.c: handle unsafe function pointers where needed.
17141
17142 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17143
17144         * mini.c (mono_jit_free_method): Remove the fixme too.
17145
17146 2005-03-15  Miguel de Icaza  <miguel@novell.com>
17147
17148         * mini.c: As discussed, make the code actually free the delegate
17149         thunk now, to enable the debugging of delegate problems, use
17150         MONO_DEBUG=1 when running Mono. 
17151
17152         This takes also care of parts of the leaks as seen by Joe.
17153
17154 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
17155
17156         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
17157         thread_tls_offset calculation.
17158
17159 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
17160
17161         * declsec.c: Reworked linkdemand checks for icall. The previous code
17162         was using the declaration code (untrusted) and didn't work as expected
17163         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
17164         specific case.
17165
17166 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17167
17168         * iltests.il: Add new localloc test.
17169
17170         * mini-amd64.c: Handle large stack allocations the same way as on
17171         windows if stack overflow handling is working.
17172         
17173         * mini-amd64.c: Allocate the signal stack using mmap.
17174
17175         * mini.c (sigsegv_signal_handler): Fix reading of context.
17176
17177         * mini-exceptions.c: Fix up stack overflow handling.
17178
17179         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
17180
17181         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
17182
17183         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
17184
17185         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
17186
17187         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
17188         tramp_init functions as they are no longer needed.
17189
17190 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
17191
17192         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
17193         
17194         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
17195
17196         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
17197         
17198         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
17199         support that now.
17200
17201         * mini-ops.h: Add OP_LMUL_IMM.
17202
17203         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
17204         long mul/div opcodes as intrinsic.
17205
17206         * mini-amd64.c (emit_call): Handle the case when the callee might be
17207         an AOT method.
17208
17209 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17210
17211         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17212         extra safe.
17213         
17214         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17215
17216         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17217
17218 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17219
17220         * mini.c (mono_codegen): Don't leak here, to help people running
17221         monogrind.
17222
17223 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17224
17225         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17226         conversions in sse2 mode.
17227
17228         * basic-float.cs: Add regression test.
17229         
17230         * mini-amd64.c: Reenable sse2.
17231
17232 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17233
17234         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17235
17236 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17237
17238         * driver.c: Copyright text should include 2005.
17239         
17240 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17241
17242         * cpu-amd64.md (load_membase): Fix more max lengths.
17243
17244 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
17245
17246         * cpu-amd64.md (load_membase): Fix max length.
17247
17248         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
17249
17250         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
17251
17252         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
17253         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
17254
17255         * basic-float.cs: Add rounding regression test.
17256
17257         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
17258
17259 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
17260
17261         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
17262         structures in registers for pinvoke wrappers.
17263
17264 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17265
17266         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
17267
17268 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17269
17270         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
17271         wrapper to mono_jit_thread_attach.
17272
17273         * mini.c (mini_jit_thread_attach): New jit icall.
17274
17275         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
17276         native->managed wrappers.
17277
17278         * exceptions.cs: Add new regression test.
17279
17280         * mini.c (optimize_branches): Check regions in the cbranch to throw
17281         block case as well. Fixes #73242.
17282
17283 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17284
17285         * mini.c: thread safety fixes.
17286
17287 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
17288
17289         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
17290         patching stuff, since delegates use jump trampolines so there is
17291         no caller.
17292
17293         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
17294         jump trampolines.
17295         
17296         * tramp-amd64.c: Fix build.
17297
17298         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
17299         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
17300
17301         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
17302         Rename this to mono_arch....
17303         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
17304
17305         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
17306
17307         * mini-amd64.c (emit_call): If both the caller and the callee is
17308         guaranteed to have 32 bit addresses, emit a normal call.
17309
17310         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
17311
17312         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
17313         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
17314         method_ptr inside delegates.
17315
17316 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
17317
17318         * mini.c (mono_jit_free_method): Free the method info even if the native code is
17319         invalidated. Fixes #73001.
17320
17321         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
17322
17323         * mini-x86.c: Only use stdcall for pinvokes on windows.
17324
17325 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
17326
17327         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
17328         * mini-x86.c: remove unreliable __thread var offset detection,
17329         use the correct accessors and enable by default.
17330
17331 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17332
17333         * mini.c (mono_jit_free_method): Fix memory leak.
17334
17335 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
17336
17337         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
17338
17339 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
17340
17341         * cpu-amd64.md: Fix lengths of atomic opcodes.
17342
17343 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17344
17345         * driver.c: try to not imply using ICU is any good.
17346
17347 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17348
17349         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
17350         functions as inline ops.
17351
17352         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
17353         some Interlocked functions as inline ops.
17354
17355         * mini.c (move_basic_block_to_end): Fix bug in last patch.
17356
17357         * mini.h (MonoBasicBlock): Reorganize fields a bit.
17358
17359         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
17360
17361         * mini.c: Add support for OP_NOT_TAKEN.
17362
17363         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
17364         structures in registers for pinvoke wrappers.
17365
17366         * mini-amd64.c: Fix warnings.
17367
17368 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
17369
17370         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
17371
17372         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
17373
17374         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
17375         address instead of loading the address from it.
17376
17377         * mini-x86.c: Add support for returning small structs in registers
17378         on Win32. Fixes part of #70864.
17379         
17380 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
17381
17382         * trace.c (get_token): Improve error checking.
17383
17384 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17385
17386         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
17387
17388 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
17389  
17390         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
17391         it can be reused for MonoClass.
17392         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
17393         _LINKDEMAND.
17394
17395 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
17396
17397         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
17398         instead of a MonoReflectionMethod. The method information wasn't used
17399         when displaying SecurityException details (but will be now).
17400
17401 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
17402
17403         * Makefile.am : windows build fix.
17404
17405 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17406
17407         * iltests.il: Add new regression test.
17408
17409         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
17410         #72522.
17411
17412 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
17413  
17414         * mini.c: Moved linkdemand check into helper function check_linkdemand
17415         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
17416         LDFTN, LDVIRTFTN).
17417
17418 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
17419
17420         * declsec.c: Added statistics counter for different kinds of 
17421         LinkDemands.
17422         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
17423         (and commented) declaration.
17424         * mini.c: Added statistics counter for security Demand code 
17425         generation. Added display of security statistics.
17426
17427 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17428
17429         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
17430         Fix compilation errors under gcc-2.95.
17431
17432 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17433
17434         * mini.c, driver.c: Use the new jit trampoline hashtable
17435
17436 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17437
17438         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
17439
17440 2005-02-11  Martin Baulig  <martin@ximian.com>
17441
17442         * debug-mini.c (mono_debug_close_method): Free the line number array.
17443
17444 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17445
17446         * aot.c: Break up large methods into smaller ones. Share GOT slots for
17447         icalls.
17448
17449         * mini.h: Bump AOT file format version. 
17450
17451 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17452
17453         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
17454         APTC and P/Invoke.
17455         * declsec.h: Added macros to get/set lazyly initialized security 
17456         informations about assemblies. Added new enum for different type of
17457         possible LinkDemand violation. Added function to check LinkDemands.
17458         * mini.h: Added a field to MonoCompile to hold any security violation
17459         detected when JITting a method (so it can be thrown later).
17460         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
17461         and CEE_CALLVIRT. Added code to throw exception at the end of
17462         mini_method_compile (note: the exception is unhandled right now).
17463
17464 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17465
17466         * mini.c, jit-icalls.c: use the managed implementation of
17467         memset for initobj and memset, to avoid managed <-> unmanaged
17468         transitions.
17469
17470 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17471
17472         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
17473         optimization if it would need a GOT var.
17474
17475         * basic.cs: Add tests for constant propagation and switch statements.
17476
17477         * ssa.c: Fix out-of-range constant propagation and switch statements.
17478
17479 2005-02-09    <vargaz@freemail.hu>
17480
17481         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
17482
17483 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
17484
17485         * cpu-amd64.md (load_membase): Fix max length of load_membase.
17486
17487 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17488
17489         * mini.c: update to new signature of mono_class_get_allocation_ftn().
17490
17491 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
17492
17493         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
17494         arithmetic operations.
17495
17496 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
17497
17498         * mini-ppc.c: add a workaround for broken user code that
17499         DllImports vararg functions with non-vararg signatures.
17500
17501 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17502
17503         * mini.c (mono_jit_compile_method_inner): Add detection and a 
17504         meaningfull error message for assemblies written in Managed C++.
17505
17506         * tramp-amd64.c mini-amd64.h: Add support for 
17507         create_trampoline_from_token ().
17508
17509         * aot.c mini-x86.c abcremoval.c: Applied patch from
17510         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17511
17512 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17513
17514         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
17515         which takes a MonoImage/token as parameter instead of a MonoMethod.
17516
17517         * aot.c: Use the new trampoline for initializing vtables.
17518
17519         * aot.c: Add support for ldfld/stfld_remote wrappers.
17520
17521         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
17522         rules for compare <MEM>, IMM.
17523
17524         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
17525
17526         * aot.c: Handle inherited finalizers correctly.
17527
17528 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17529
17530         * inssel.brg (stmt): Add a missing _setup_... ().
17531
17532         * aot.c: Save some parts of the class state to the AOT file and use it
17533         to recompute that state when a class is initialized.
17534
17535         * mini.c: Install AOT hooks into the runtime.
17536
17537         * mini.h: Bump AOT file format version.
17538         
17539         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
17540         Fixes #72148.
17541
17542         * iltests.il: Add new test.
17543
17544 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17545
17546         * mini.c: fix typo.
17547
17548 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
17549
17550         * mini.c: setup the statistical profiler in the thread attach
17551         callback to cope with the new single thread code.
17552
17553 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17554
17555         * mini-ppc.c: ensure we have enough room for the profiler
17556         calls (fixed bug#72084).
17557
17558 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17559
17560         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
17561         it.
17562
17563 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17564
17565         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
17566
17567 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17568
17569         * ssapre.c: Fixed an issue with down safety (this allows IronPython
17570         to succesfully execute parrotbench).
17571         * ssapre.h: Likewise.
17572
17573 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17574
17575         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
17576         variable for stores to method arguments (fixes a SSAPRE issue).
17577
17578 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17579
17580         * mini.c: handle value types in dup, fixes gen-112.cs.
17581
17582 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
17583
17584         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
17585         sequence for calls in dynamic methods to avoid thunks.
17586
17587 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17588
17589         * mini.c: correctly remove dynamic methods from the hashtable.
17590
17591 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17592
17593         * driver.c: Disabled SSAPRE until fix the bug that appears
17594         in IronPython's parrotbench.
17595
17596 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17597
17598         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
17599
17600         * mini.c (mono_method_to_ir): Revert the previous change.
17601         
17602         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
17603         when AOT compiling.
17604
17605         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
17606         mono_jit_info_table_find () etc. when running under valgrind.
17607
17608         * inssel.brg: Fix warnings.
17609
17610         * mini-exceptions.c: Fix warnings.
17611
17612 2005-01-31  Martin Baulig  <martin@ximian.com>
17613
17614         * driver.c (compile_all_methods_thread_main): Don't try to compile
17615         generic methods or anything which has type parameters.
17616
17617 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17618
17619         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
17620
17621         * TestDriver.cs: Add --verbose flags.
17622
17623         * graph.c ssa.c: Fix 64 bit warnings.
17624         
17625         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
17626         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
17627         Fix 64 bit warnings.
17628
17629         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
17630         variable not spotted by gcc.
17631         
17632         * mini-amd64.c inssel-amd64.brg: Applied patch from  
17633         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
17634         X86_COMPARE_MEMBASE opcodes.
17635
17636         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
17637
17638 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17639
17640         * *: MonoMethod->signature might be NULL now. You *MUST* use
17641         mono_method_signature.
17642
17643 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17644
17645         * driver.c (compile_all_methods_thread_main): Compile the methods
17646         without invoking cctors.
17647
17648 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17649
17650         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
17651         * basic-calls.cs: test for the above.
17652
17653 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17654
17655         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
17656         MonoJitInfo changes.
17657
17658 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
17659
17660         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
17661         eagerly if it contains dynamic methods.
17662         
17663         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
17664
17665         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
17666         trace, it is now computed by an icall from trace_ips.
17667         
17668         * mini-exceptions.c: Fix a warning.
17669
17670 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17671
17672         * mini-exceptions.c: don't bother getting stack trace info if
17673         it's not going to be used.
17674
17675 2005-01-27  Raja R Harinath  <rharinath@novell.com>
17676
17677         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
17678         ssapre-mini-ops.h.
17679
17680 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
17681
17682         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
17683
17684         * aot.c: Avoid calling mono_method_get_header () if not needed.
17685
17686         * mini.h: Bump AOT file format version.
17687         
17688         * mini.c (mono_emit_native_call): Allocate a GOT var here.
17689
17690         * mini.c (mono_print_tree): Print more info for calls.
17691
17692 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17693
17694         * declsec.h: Remove warning by adding missing include for marshal.h
17695
17696 2005-01-26  Martin Baulig  <martin@ximian.com>
17697
17698         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
17699         `ip' twice.
17700
17701 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
17702
17703         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
17704         flags.
17705
17706         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
17707
17708         * aot.c (mono_compile_assembly): Fix a warning.
17709
17710 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
17711
17712         * declsec.c: Look for security attributes on the original MonoMethod 
17713         (and not the wrapped one). This fix permissions on icalls.
17714
17715 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17716
17717         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17718
17719         * mini.c (mono_allocate_stack_slots): Add a fixme.
17720
17721         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17722
17723 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17724
17725         * inssel.brg: optimize casts of sealed types (more
17726         optimizations waiting for fixes in remoting).
17727
17728 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17729
17730         * inssel.brg (stmt): Add another dummy rule.
17731
17732         * driver.c: Fix warnings.
17733
17734         * driver.c (mono_main): If running under valgrind, instruct glib to use
17735         the system allocation functions so valgrind can track the memory
17736         allocated by the g_... functions.
17737
17738         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
17739
17740         * mini-ops.h: Add OP_DUMMY_STORE opcode.
17741
17742         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
17743
17744         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
17745         variables in try regions.
17746
17747         * mini.c (mini_method_compile): Don't disable optimizations on large
17748         methods when AOT compiling.
17749
17750         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17751         allocate stack slots. Not yet used.
17752
17753 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17754
17755         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17756
17757 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17758
17759         * mini-ppc.c: make the branch info relative as the code
17760         buffer can be reallocated.
17761
17762 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17763
17764         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17765         * driver.c: Removed the AOT/security restriction. Now initialize the
17766         security manager (in metadata) if --security is used.
17767         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17768         rather than the pointer to declarative security, when AOT is used.
17769
17770 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17771
17772         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17773         basic blocks, reduced intrinsic exception throwing code size.
17774
17775 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17776
17777         * driver.c (mini_usage): Reorder the usage screen.
17778
17779 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17780
17781         * mini.c (mono_resolve_patch_target): Fix warning.
17782
17783 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17784
17785         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17786         previous patch.
17787
17788         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17789
17790         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17791         breaks the amd64 build.
17792
17793         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17794         register allocation. Fixes #71454.
17795
17796         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17797
17798         * arrays.cs: Add new regression test.   
17799
17800 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17801
17802         * ssapre.c: Turned usage of snprintf to GString.
17803         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17804         (I left it on by mistake in my previous commit).
17805
17806 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17807
17808         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17809         on cond branch optimization (fixes bug# 71515).
17810
17811 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17812
17813         * abcremoval.c: Fixed bug 71062.
17814         * abcremoval.h: Likewise.
17815
17816 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17817
17818         * mini.c: Added a new functionality to optimize_branches, the removal
17819         of useless basic blocks, and fixed some problem in the removal of
17820         critical edges; some utility functions added for both purposes.
17821         * ssapre.c: Added complex expression support, and fixed bug 70637.
17822         * ssapre.h: Likewise.
17823         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17824         enabled in SSAPRE.
17825         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17826         * driver.c: Re-enabled SSAPRE.
17827
17828 2005-01-19  Martin Baulig  <martin@ximian.com>
17829
17830         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17831         the result of mono_get_method_constrained().
17832
17833 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17834
17835         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17836         manager.
17837
17838 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17839
17840         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17841         be detected.  Fixes #59296.
17842
17843 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17844
17845         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17846         which can happen. Fixes #71361.
17847
17848 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17849
17850         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17851         manager.
17852
17853 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17854
17855         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17856         appdomain-unload.exe to fail.
17857         
17858         * mini.c: Fix some memory leaks.
17859
17860 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17861
17862         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17863         Fixed bug and sped up some codepaths.
17864
17865 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17866
17867         * mini.c: Fix some memory leaks.
17868
17869         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17870         conversion.
17871
17872         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17873
17874         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17875         #71320.
17876
17877         * iltests.il: Add regression test for #71320.
17878
17879 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17880
17881         * mini.c (mono_codegen): Fix installation of profiler hooks.
17882
17883         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17884
17885 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17886
17887         * mini.h, mini.c, cfold.c: optimize access to enum
17888         readonly fields, too. Eval conditional branches if possible
17889         to perform unreachable code removal in more cases.
17890
17891 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17892
17893         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17894
17895         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17896         code manager.
17897
17898         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17899         WinXP DEP. Fixes #71244.
17900
17901 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17902
17903         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
17904
17905 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
17906
17907         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
17908
17909 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
17910
17911         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
17912         changes.
17913
17914         * mini.h: Bump AOT version.
17915
17916         * mini.h (MonoCompile): Change exvar to a hash table.
17917
17918         * mini.c: Allocate a separate exvar for each handler block.
17919
17920         * mini.c: Get rid of the computation of filter_lengths, its not needed.
17921
17922         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
17923         ex var with the pending exception and only throw if the two are equal.
17924         Fixes #68552.
17925         
17926         * exceptions.cs: Add tests for rethrow and nested catch clauses.
17927
17928         * mini-x86.c: Fix warnings.
17929
17930         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
17931         used by all the ports now.
17932
17933         * aot.c: Add write-symbols and save-temps options.
17934
17935 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17936
17937         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
17938
17939 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
17940
17941         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
17942         operations.
17943
17944         * tramp-s390.c: Check vtable slot belongs to the domain.
17945
17946         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
17947         as per other platforms.
17948
17949         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
17950
17951 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17952
17953         * driver.c: we don't run the Main() code in a subthread anymore.
17954
17955 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
17956
17957         * mini.c: added experimental rtc support in the statistical
17958         profiler: if the user has the permission, more accurate statistics
17959         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
17960         The MONO_RTC value must be restricted to what the linux rtc allows:
17961         power of two from 64 to 8192 Hz.
17962
17963 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17964
17965         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
17966
17967 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
17968
17969         * mini-ppc.c: better icache flush for smp.
17970
17971 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
17972
17973         * mini-amd64.c (emit_move_return_value): Fix memory leak.
17974
17975         * mini-x86.c (get_call_info): Add the get_call_info () code from the
17976         amd64 port, not yet used.
17977
17978 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17979
17980         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
17981         a struct type.
17982
17983 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
17984
17985         * driver.c: Added --security option to activate the security manager.
17986         Right now this will allow code generation for declarative demands and
17987         is disabled when AOT is specified.
17988         * mini.c: Add code generation for declarative security demands.
17989         * mini.h: Add mono_use_security_manager as an extern gboolean.
17990
17991 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17992
17993         * aot.c (mono_compile_assembly): Speed up compilation a bit by
17994         emitting more dense assembly code.
17995
17996         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
17997         exception throwing stuff.
17998
17999 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18000
18001         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
18002         dead code.
18003
18004         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
18005         left in by mistake.
18006
18007         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
18008         fixed.
18009
18010         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
18011
18012         * tramp-*.c: Only patch vtable slots if the object is in the current
18013         domain. Fixes appdomain-unload.exe.
18014
18015         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
18016         
18017         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
18018         x86 branch.
18019
18020 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18021
18022         * mini.c (reverse_branch_op): New helper function.
18023
18024         * mini.c (optimize_branches): Run the new optimization only on 
18025         platforms which support it. Also reverse all kinds of branches.
18026
18027         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
18028
18029         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
18030         a throw statement.
18031
18032         * mini.c (optimize_branches): Reverse not-equals branches if the false
18033         bblock is a throw. This happens a lot of time with argument checking in
18034         corlib.
18035
18036         * mini.c (mono_codegen): Add support for placing basic blocks after
18037         the function epilogue.
18038
18039         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
18040         function epilogue.
18041         
18042 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
18043
18044         * mini.c (setup_stat_profiler): Only set this up if the platform
18045         supports ITIMER_PROF.
18046
18047 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18048
18049         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
18050         previous patch.
18051
18052         * inssel.brg: Fix a warning.
18053
18054 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18055
18056         * mini.c: added support for statistical profiler 
18057         (run with: --profile=default:stat).
18058
18059 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
18060
18061         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
18062
18063         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
18064
18065         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
18066         related to global registers from the amd64 port.
18067
18068 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18069
18070         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
18071
18072         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
18073         with global registers.
18074         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
18075
18076         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
18077
18078 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
18079
18080         * debug-mini.c (encode_value): Fix off-by-one.
18081
18082         * aot.c (encode_value): Likewise.
18083
18084         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
18085
18086 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18087
18088         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
18089         AOT.
18090
18091         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
18092         
18093         * aot.c (emit_method_info): Increase size of temp buffer.
18094
18095         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
18096         the AOT case.
18097
18098 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
18099
18100         * aot.c (emit_method_info): Fix build.
18101         
18102         * aot.c: Further rework of the AOT file format to reduce the size of
18103         the method info data.
18104
18105         * mini.h: Bump AOT file format version.
18106
18107 2004-12-27  Martin Baulig  <martin@ximian.com>
18108
18109         * mini.c (mini_get_method): New static method; call
18110         mono_get_method_full() and mono_get_inflated_method().
18111         (mono_method_to_ir): Use mini_get_method() instead of
18112         mono_get_method_full(). 
18113
18114 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
18115
18116         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
18117
18118 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
18119
18120         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
18121
18122         * inssel-amd64.brg: Add some optimization rules.
18123
18124 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18125
18126         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
18127         standard not GC'd stuff is fine.
18128
18129 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
18130
18131         * aot.c: Rework the AOT file format to get rid of most of the global
18132         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
18133
18134         * mini.h: Bump AOT file format version.
18135         
18136 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
18137
18138         * mini.h: Bump AOT file format version.
18139
18140         * aot.c (mono_aot_is_got_entry): New function to determine if an 
18141         address is inside a GOT.
18142
18143         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
18144
18145         * cpu-pentium.md: Increase the maximum size of some instructions which
18146         might involve a got access.
18147         
18148         * mini.c (get_method_from_ip): Another debug helper function.
18149
18150         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
18151         when got var accesses are created during the decompose phase.
18152
18153         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
18154
18155         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
18156         argument mini_compile_method and to MonoCompile, and use this to
18157         determine whenever a given method is compiled for AOT. This allows the
18158         other methods compiled during AOT compilation to be free of AOT stuff,
18159         so the backends does not need to add special support for them by
18160         creating a fake GOT etc.
18161
18162         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
18163         longer needed.
18164
18165 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18166
18167         * mini.c (mono_method_to_ir): It turns out that some of the
18168         x-appdomain wrappers are lax with types, so just ignore this for
18169         all wrappers.
18170
18171         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
18172         at the vtable->klass. If it is non-shared code we can just use the
18173         vtable.
18174
18175 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
18176
18177         * mini-ppc.c: access MonoDomain from tls, too.
18178
18179 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
18180
18181         * declsec.c: Removed unused variable (and related warning ;-)
18182
18183 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18184
18185         * iltests.il: New test for LDELEMA on an array of ref types.
18186
18187         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
18188         all ldelema's on reftypes.
18189         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
18190         it was the wrong place to put it.
18191
18192         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
18193         register to pop to make this cleaner, at the request of Paolo.
18194
18195 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18196
18197         * mini-ops.h (OP_GETHASHCODE): New op.
18198
18199         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
18200
18201         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
18202         operation.
18203
18204         For a microbenchmark, this reduces the cost of Hashtable.get_Item
18205         by 25%.
18206         
18207         * mini-x86.c (mono_arch_output_basic_block): Rather than
18208
18209         add ebp, 4
18210
18211         Emit
18212
18213         pop edx
18214
18215         The first is 3 bytes while the second is 1. This saves 36 kb on
18216         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18217         see a small boost because of icache locality.
18218
18219         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18220
18221 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18222
18223         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18224         started code sharing with the generic code.
18225
18226 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18227
18228         * mini-ppc.c, cpu-g4.md: added code for direct access to
18229         tls data slots.
18230
18231 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18232
18233         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18234          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18235         to OP_TLS_GET.
18236
18237 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18238
18239         * declsec.c|h: Added functions to cache the declarative stack modifiers
18240         in MonoJitInfo and to create a security frame from a MonoJitInfo 
18241         structure.
18242         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
18243         created. Register internal calls for System.Security.SecurityFrame::
18244         _GetSecurityFrame and _GetSecurityStack.
18245         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
18246         the definitions for the new stack walk/callback mechanism.
18247         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
18248         first security frame for LinkDemands and InheritanceDemands) and
18249         GetSecurityStack for Demands. Both use the new mono_walk_stack code
18250         from lupus.
18251         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
18252         walk initialization (lupus).
18253
18254 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18255
18256         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
18257         idiom.
18258         (handle_loaded_temps): Do not create a temporary variable for
18259         things that we know are temps. They will never be modified.
18260         (mono_spill_call): Set MONO_INST_IS_TEMP
18261         (mono_emulate_opcode): ditto
18262         (emit_tree): ditto
18263         (mono_method_to_ir.CEE_DUP): ditto
18264
18265 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
18266
18267         * mini.c (type_to_eval_stack_type): Make this handle the void type
18268         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
18269         (emit_tree): use ip_in_bb to special case some common idioms
18270         Update all callers to pass in the IP.
18271         (mono_method_to_ir): Make CEE_CALL* do the above as well.
18272
18273         This gives us a nice 2% speedup in mcs bootstrap.
18274
18275         * mini-x86.c (peephole_pass): Peephole pass to make
18276         mov  [foo], eax
18277         push [foo]
18278
18279         into
18280
18281         mov [foo], eax
18282         push eax
18283
18284         * mini.c (ip_in_bb): new method.
18285         (mono_method_to_ir): use this method rather than doing the hash
18286         lookup ourselves.
18287
18288         * linear-scan.c (mono_linear_scan): When expiring actives, you
18289         don't need to keep around variables that expire on this
18290         instruction. This makes it so that:
18291              a = b + 1
18292         will turn into:
18293              store (ebx add (ebx, 1))
18294         which will become
18295              add ebx, 1
18296
18297 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
18298
18299         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
18300         combination to avoid doing two copies. Fix up problems with previous
18301         patch.
18302
18303         * mini.c: Fix 64 bit warnings.
18304
18305         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
18306
18307 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
18308
18309         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
18310         changes from the x86 code.
18311
18312         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
18313
18314 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18315
18316         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
18317         throwing code to reduce its size, unify the AOT and non-aot code and 
18318         get rid of relocations in the AOT case.
18319
18320         * mini-x86.h mini.c exceptions-x86.c 
18321         (mono_arch_get_throw_corlib_exception): New arch specific function to 
18322         raise corlib exceptions which doesn't require relocations in the 
18323         caller.
18324
18325         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
18326
18327 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18328
18329         * mini.c (mono_emit_method_call): Only allocate the got var when it is
18330         needed.
18331
18332         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
18333         in the AOT case.
18334
18335 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18336
18337         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
18338         with add function when used from Inc/dec atomic 
18339         functions. Re-enabled optimization on x86.
18340         * mini-ops.h: renamed atomic_add functions to
18341         allow _add to match the Interlocked::Add and
18342         _add_next to match Interlocked::Inc/Dec.
18343
18344 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
18345
18346         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
18347         linking of BBs to the end BB, and enabled SSAPRE also with
18348         consprop and copyprop (which was prevented by that bug).
18349
18350 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18351
18352         * mini-x86.c: disabling the Interlocked optimizing code. 
18353
18354 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * aot.c (load_aot_module): Move reading of got_addr after the AOT
18357         file version check.
18358         
18359 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18360
18361         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
18362         interlocked optimization due lack of support on x86, rewrote 
18363         exchange to take into account that base may be in eax.
18364         
18365         xsp works again; activated Interlocked optimizing code.
18366         
18367 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18368
18369         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
18370
18371 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
18372
18373         * mini-ops.h: Add new opcodes.
18374
18375         * mini.h: Add new patch types. Add got_var to MonoCompile.
18376
18377         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
18378         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
18379         make it work with all kinds of patchable code.
18380
18381         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
18382         address of the GOT, and referencing entries in the GOT.
18383
18384         * mini.c: Add code to load the GOT address if needed by an opcode.
18385
18386         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
18387         independent AOT code on the x86 using an elf-style Global Offset Table.
18388
18389 2004-12-14  Raja R Harinath  <rharinath@novell.com>
18390
18391         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
18392
18393 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18394
18395         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
18396         when running xsp.
18397
18398 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
18399
18400         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
18401         of Interlocked:Increment/Decrement/Add as inline ops.
18402         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
18403
18404 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
18405
18406         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
18407         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
18408
18409 2004-12-12  Duncan Mak  <duncan@ximian.com>
18410
18411         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
18412         again. `patch_info->table_size' is no longer valid after Zoltan's
18413         commit #37636.
18414
18415 2004-12-12  Martin Baulig  <martin@ximian.com>
18416
18417         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
18418         if we are the "real" method, ie. not an inlined method inside it.
18419
18420 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
18421
18422         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
18423         before we look in the special fields table. This fixes
18424         ../tests/thread-static-init.cs.
18425
18426 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18427
18428         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
18429         for Array get_Rank and get_Length. Fixes bug #70465.
18430
18431 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
18432
18433         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
18434         separate structure to reduce the size of MonoJumpInfo.
18435
18436 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18437
18438         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
18439
18440 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
18441
18442         * mini.c (mini_get_inst_for_method): Changed to allow ports
18443         to return a MonoInst instead of opcode 
18444         (renamed mini_get_opcode_for_method to better reflect the new functionality)
18445         
18446         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
18447         Allow ports to return a created MonoInst instead of op-code, will enable
18448         new optimizations.
18449         (renamed mini_get_opcode_for_method to better reflected the functionality)
18450
18451 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
18452
18453         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
18454
18455 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18456
18457         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
18458         Fixes #69985.
18459
18460 2004-12-08  Martin Baulig  <martin@ximian.com>
18461
18462         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
18463         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
18464
18465 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18466
18467         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
18468         correctly.
18469
18470         * exceptions.cs: Disable some tests which depend on properties of x86 fp
18471         arithmetic.
18472
18473 2004-12-08  Raja R Harinath  <rharinath@novell.com>
18474
18475         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
18476
18477 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18478
18479         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
18480         bug introduced by the previous patch.
18481
18482 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18483
18484         * mini-ppc.c, objectc.cs: handle large structs passed by value
18485         (fixes bug #69972).
18486
18487 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18488
18489         * mini-ppc.c: OP_ARGLIST implementation from
18490         Geoff Norton  <gnorton@customerdna.com>.
18491
18492 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18493
18494         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
18495         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
18496
18497 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18498
18499         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
18500
18501 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18502
18503         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
18504         support.
18505
18506 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18507
18508         * mini-sparc.c: Zero out localled-ed memory.
18509
18510         * iltests.il: Add tests for zeroing out localloc-ed memory.
18511
18512 2004-12-04  Martin Baulig  <martin@ximian.com>
18513
18514         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
18515         mono_method_get_signature_full().       
18516
18517 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
18518
18519         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
18520         and some utility functions (always for SSAPRE), integrated SSAPRE.
18521         * mini.h: Likewise.
18522         * driver.c: Added ssapre option.
18523         * ssa.c: Small fix on OP_ARG handling.
18524         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
18525         * Makefile.am: Likewise.
18526
18527 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18528
18529         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
18530         now in the xp code.
18531
18532         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
18533         icall.
18534
18535 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18536
18537         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
18538         
18539         * cpu-s390.md : Increase instruction length of oparglist.
18540
18541         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
18542
18543 2004-11-30  Martin Baulig  <martin@ximian.com>
18544
18545         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
18546         virtual generic methods.  We call a special helper_compile_generic_method()
18547         icall to retrieve the method from the vtable, inflate and compile
18548         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
18549
18550         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
18551
18552 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
18553
18554         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
18555
18556 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
18559         Fixes #69929.
18560
18561 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
18562
18563         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
18564         platforms with PIC aot.
18565
18566 2004-11-28  Martin Baulig  <martin@ximian.com>
18567
18568         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
18569         Fixes gen-112.cs.
18570
18571 2004-11-28  Martin Baulig  <martin@ximian.com>
18572
18573         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
18574         the result of mono_type_get_underlying_type() to check whether
18575         we're byref.
18576
18577 2004-11-26  Martin Baulig  <martin@ximian.com>
18578
18579         * mini.c
18580         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
18581         in the g_assert().
18582
18583 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
18584
18585         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
18586         the same way as the other arguments so they won't get clobbered.
18587
18588         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
18589         calls through R11 since it is clobbered by the trampoline code.
18590
18591 2004-11-26  Raja R Harinath  <rharinath@novell.com>
18592
18593         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
18594         pick up in-tree mscorlib.dll.
18595
18596 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18597
18598         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
18599
18600         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
18601         runtime data/code are now stored in a table similar to the GOT in ELF. 
18602         This allows the code itself to be position independent.
18603
18604         * aot.c: Fix loading of referenced assemblies after the lazy assembly
18605         loading changes.
18606
18607         * aot.c: Attach ELF type (object/function) directives to all global
18608         symbols.
18609
18610         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
18611
18612         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
18613
18614         * mini-amd64.h: Turn on PIC AOT code.
18615
18616         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
18617         returning the offset within an OP_AOTCONST instruction where the GOT
18618         offset needs to be added.
18619
18620         * mini.h: Bump AOT file format version.
18621
18622 2004-11-25  Martin Baulig  <martin@ximian.com>
18623
18624         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
18625         uninflated generic methods.
18626
18627 2004-11-25  Martin Baulig  <martin@ximian.com>
18628
18629         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
18630
18631 2004-11-24  Martin Baulig  <martin@ximian.com>
18632
18633         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
18634         original klass (this only applies for generic instances).
18635
18636 2004-11-24  Martin Baulig  <martin@ximian.com>
18637
18638         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
18639         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
18640         that array).
18641
18642 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18643
18644         * mini.c (mono_method_to_ir): Disable inlining for methods containing
18645         localloc. Fixes #69678.
18646
18647         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
18648         
18649 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
18650
18651         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
18652         used SSE registers on pinvoke calls. Fixes #69774.
18653
18654 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
18655
18656         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
18657         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
18658
18659 2004-11-23  Raja R Harinath  <rharinath@novell.com>
18660
18661         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
18662         Refer directly to the mcs/ tree.
18663
18664 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18665
18666         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
18667         Check if a trampoline for a synchronized method is required. 
18668
18669 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
18670
18671         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
18672         with localloc if needed. Throe arithmetric exception in
18673         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
18674         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
18675
18676 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
18677
18678         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
18679         types before switching on type.  Fixes #69622.
18680
18681 2004-11-19  Raja R Harinath  <rharinath@novell.com>
18682
18683         * Makefile.am (check-local): New.  Integrate into 'make check'.
18684         (MCS,RUNTIME): Define using in-tree mono and mcs.
18685         (ILASM): New.
18686         (%.exe): Use $(ILASM).
18687
18688 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
18689
18690         * mini-ppc.c: adjust initial prolog size (bug #69691).
18691
18692 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
18693
18694         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
18695         #69664.
18696
18697 2004-11-17  Raja R Harinath  <rharinath@novell.com>
18698
18699         * Makefile.am (clean-local): Rename from 'clean'.
18700
18701 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18702
18703         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
18704         to mono_arch_is_int_overflow. 
18705         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
18706         SIGFPE events.
18707
18708 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18709
18710         * declsec.c|h: New files to support declarative security attributes.
18711         Added function to check if a method has (applicable) security.
18712         * mini.c|h: Add check for declarative security attributes in
18713         mono_method_check_inlining.
18714         * Makefile.am: Added declsec.c and declsec.h to the build.
18715
18716 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18717
18718         * mini.c, mini.h: update to keep dynamic code info per-domain.
18719
18720 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
18721
18722         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
18723         (mini_init): Get rid of it from here too.
18724
18725 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18726
18727         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
18728         implemented OP_RETHROW (patch by Geoff Norton
18729         <gnorton@customerdna.com>).
18730
18731 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
18732
18733         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
18734         between appdomains.  Fixes appdomain-unload on PPC.
18735
18736 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
18737
18738         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18739         mini-exceptions.c: handle the new wrapper types.
18740         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
18741         token value as a MonoClass* when compiling a wrapper.
18742         mono_jit_create_remoting_trampoline now takes an additional
18743         MonoRemotingTarget parameter.
18744         
18745 2004-11-10  Martin Baulig  <martin@localhost>
18746
18747         * mini.c (mono_method_to_ir): Use `generic_container->context'
18748         rather than creating a new one.
18749
18750 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18751
18752         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18753
18754         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18755
18756 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18757
18758         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18759         the experimental aot cache stuff.
18760
18761 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18762
18763         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18764         mini-exceptions.c: update to exception clause structure changes.
18765
18766 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18767
18768         * exceptions-x86.c (throw_exception): Fix warnings.
18769
18770         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18771         for OP_RETHROW.
18772
18773 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18774
18775         * exceptions-sparc.c (get_throw_exception): Really fix this.
18776
18777 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18778
18779         * tramp-*.c: we no longer support icalls without wrappers, so
18780         a bit of code can be removed here
18781
18782 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18783
18784         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18785         patch.
18786
18787         * cpu-sparc.md: Add op_rethrow.
18788
18789         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18790
18791         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18792
18793         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18794         * mini-ops.h: Add OP_RETHROW.
18795
18796         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18797
18798         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18799
18800 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18801         
18802         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18803         Makes the output much easier to read
18804
18805 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18806
18807         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18808         prevents another huge leak when compiling with ssa. Secondly, the
18809         performance of doing this rather than freeing the lists is much
18810         better. GList does a lock every time you allocate a list link,
18811         so that it can use a memory pool. So, it is better to just use
18812         a memory pool of our own.
18813         
18814         * ssa.c, linear-scan.c: replace g_list_remove_link with
18815         g_list_delete.  The remove one does not free the GList, so we were
18816         leaking memory. On -O=all --compile-all with corlib, this cut down
18817         3 MB of allocations.
18818
18819 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18820
18821         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18822
18823         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18824
18825         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18826         into a new function mono_create_jit_trampoline ().
18827
18828 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18829
18830         * trace.c (get_spec): Allow tracing of classes without a namespace.
18831
18832 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18833
18834         * mini.c: Fix pointer overwrite in mini_method_compile.
18835
18836 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18837
18838         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18839         The darwin ABI needs some special handling for 1 and 2 byte structs
18840         Lets use lbz/lhz instead of lwz everywhere.
18841         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18842         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18843         Use stb/sth for the former, and put the latter always on stack instead of in
18844         argument registers.
18845
18846 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18847
18848         * trace.c (is_filenamechar): Add '_'.
18849
18850 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18851
18852         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18853
18854         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18855
18856 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18857
18858         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18859         depends on libmonogc. Fixes #68805.
18860
18861 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18862
18863         * mini.c (mono_jit_free_method): Provide extra information for
18864         this error.  Currently this leaks, but will be turned into a
18865         developer option in the future.
18866
18867 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18868
18869         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18870
18871 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18872
18873         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18874         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18875         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18876
18877 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18878
18879         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18880         trampolines for AOT code.
18881
18882 2004-10-22    <vargaz@freemail.hu>
18883
18884         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18885         constructed types. Fixes #68136.
18886
18887 2004-10-21  Martin Baulig  <martin@ximian.com>
18888
18889         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18890         if it returns true, unwind the stack to the call instruction.
18891
18892 2004-10-21    <vargaz@freemail.hu>
18893
18894         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18895
18896         * mini.h: Bump AOT version number.
18897
18898         * objects.cs: Add another test for unbox trampolines.
18899
18900         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18901         valuetype methods.
18902
18903 2004-10-20    <vargaz@freemail.hu>
18904
18905         * driver.c: Add SHARED to the set of optimizations tested.
18906
18907         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
18908
18909         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
18910         used by CEE_NEWARR.
18911
18912         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
18913
18914 2004-10-20  Martin Baulig  <martin@ximian.com>
18915
18916         * mini-exceptions.c (mono_handle_exception): Call
18917         mono_debugger_handle_exception() to tell the debugger about
18918         catch/finally clauses.
18919
18920 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18921
18922         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
18923
18924         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
18925         #68447.
18926
18927 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
18928
18929         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
18930         methods as their native size, fixed bug #57543, #57545.
18931         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
18932         This saves a temporary register and mullw call down into 1 (minor perf
18933         increase for cases like sum = sum * 5;  This use to translate into:
18934             li r11,5
18935             mullw r28,r28,r11
18936         It now translates to
18937             mulli r28,r28,5
18938
18939 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
18940
18941         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
18942         #68388.
18943
18944 2004-10-11  Martin Baulig  <martin@ximian.com>
18945
18946         * mini.c (mono_method_to_ir): If we're a generic method, get the
18947         MonoGenericContainer from our MonoMethodNormal and create a
18948         MonoGenericContext from it.
18949
18950 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18951
18952         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
18953
18954         * basic-long.cs: Add test for checked i8->i2 cast.
18955
18956 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18957
18958         * inssel-ppc.brg: added a couple of speedup rules.
18959
18960 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18961
18962         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
18963         to speed up rebuilds.
18964
18965 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18966
18967         * mini-s390.c: Minor fix to OP_OR_IMM.
18968
18969 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18970
18971         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
18972         better. Fixes appdomain-unload.exe on sparc.
18973
18974 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18975
18976         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
18977         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
18978         see bug 67324.
18979
18980 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
18981
18982         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
18983
18984 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18985
18986         * mini.c: Always generate a field read/write wrapper for members
18987         of the class MarshalByRefObject since the actual instance could
18988         be a CBO.
18989
18990 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18991
18992         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
18993
18994 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18995
18996         * driver.c mini.h trace.c: Move the setting of the main assembly into
18997         a separate function called mono_trace_set_assembly () and call it after
18998         actually loading the main assembly. Fixes #66872.
18999
19000 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19001
19002         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
19003         using the code manager.
19004
19005 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19006
19007         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
19008
19009 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19010
19011         * cpu-amd64.md: Fix bug in previous patch.
19012         
19013         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
19014         #66650.
19015
19016 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
19017
19018         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19019         mini-exceptions.c: updates for changed stack walk interface.
19020
19021 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19022
19023         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
19024
19025 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19026
19027         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
19028
19029 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19030
19031         * driver.c (mini_regression_list): Do not call mono_assembly_close 
19032         since assemblies can't be unloaded.
19033         
19034 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19035
19036         * cpu-amd64.md: Fix more instruction lengths.
19037
19038         * cpu-amd64.md: Fix lengths of some instructions.
19039
19040 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
19041
19042         * inssel.brg: Make the array ldelema check aot friendly.
19043
19044 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19045
19046         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
19047
19048         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
19049
19050 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19051
19052         * mini-x86.c: Fix build.
19053
19054         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
19055         mono_type_get_underlying_type () helper function to simplify code.
19056         
19057 2004-09-09  Martin Baulig  <martin@ximian.com>
19058
19059         * mini-amd64.c: Don't access `type->data.klass' directly, call
19060         mono_class_from_mono_type() instead since the type may be a
19061         generic instance.
19062
19063 2004-09-09  Martin Baulig  <martin@ximian.com>
19064
19065         * mini-amd64.c (get_call_info): Fix support for generic instances.
19066         (add_valuetype): Use mono_class_from_mono_type() to get the class
19067         since we can be a generic instance.
19068
19069 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
19070
19071         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
19072
19073 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19074
19075         * liveness.c: reset spill costs on each scan: bug 62107
19076
19077 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
19078
19079         * exceptions-sparc.c (mono_arch_find_jit_info): remove
19080         unnecessary line that doesn't compile
19081
19082 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
19083
19084         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
19085         trampolines, make them call an error function so people can fix their
19086         code.
19087
19088 2004-09-06  Martin Baulig  <martin@ximian.com>
19089
19090         * mini.c (mono_method_to_ir): When initializing locals, handle a
19091         generic instances like a valuetype if it's a valuetype and like a
19092         class if it's a class.
19093
19094 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19095
19096         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
19097         stack. Fixes #64674.
19098
19099         * exceptions.cs: Add test for unwinding of call arguments.
19100
19101 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
19102
19103         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
19104         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
19105         set the carry/borrow flag). The sparc and s390 implementations
19106         can now use optimized versions (and simplify the code). ppc bugfixes.
19107
19108 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19109
19110         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
19111
19112 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
19113
19114         * inssel-amd64.brg: Remove leftover 32 bit rule.
19115
19116         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
19117
19118 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
19119
19120         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
19121         mono_arch_find_jit_info functions into a new function. Fix a memory
19122         leak.
19123
19124         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
19125         refactored code.
19126         
19127 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19128
19129         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
19130         as well.
19131         
19132         * exceptions.cs: Add array size tests.
19133
19134         * mini.c: Allocate a separate icall wrapper for each arity of 
19135         mono_array_new_va. Fixes #59509.
19136
19137         * exceptions.cs: Add testcase for 64578.
19138
19139         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
19140
19141         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
19142         
19143 2004-09-02  Martin Baulig  <martin@ximian.com>
19144
19145         * mini.c (mono_method_to_ir): When initializing the locals, call
19146         handle_initobj() on the generic instance itself, not its
19147         underlying type.
19148
19149 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19150
19151         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
19152         MonoJitInfo for dynamic methods.
19153
19154         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
19155
19156         * mini.c: Add support for freeing JIT data for dynamic methods.
19157         
19158 2004-09-01  Martin Baulig  <martin@ximian.com>
19159
19160         * mini-x86.c (is_regsize_var): Added support for generic
19161         instances.
19162         (mono_arch_emit_prolog): Make this compile again, use
19163         `x86_push_imm_template (code)'.
19164
19165 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
19166
19167         * mini-x86.c: make all push_imm instructions that get
19168         patched always emit the long form
19169
19170 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
19171
19172         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
19173         in a per-domain hash.
19174
19175         * mini-amd64.c (merge_argument_class_from_type): Handle generic
19176         types.
19177
19178 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
19179
19180         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
19181         work.
19182         
19183         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
19184         work.
19185
19186         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
19187         Beginnings of SSE2 support.
19188
19189         * exceptions.cs: Add more tests for checked int<->uint casts.
19190
19191 2004-08-28  Martin Baulig  <martin@ximian.com>
19192
19193         * mini-x86.c (mono_arch_instrument_epilog): Added support for
19194         generic instances.
19195
19196         * mini.c
19197         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
19198         Handle generic instances recursively.
19199
19200 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19201
19202         * iltests.il: test for conv.u8 on a constant
19203
19204 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19205
19206         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19207         LCONV_x4 (shrun_32 (membase)).
19208
19209 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19210
19211         * inssel-x86.brg: c&p rules for push/setret of long
19212
19213 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19214
19215         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19216         compare (regvar, base)
19217
19218         * inssel-x86.brg: more burg love
19219
19220         * inssel.brg: more cleanup
19221
19222         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19223
19224 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19225
19226         * basic-long.cs, basic-calls.cs: new tests for optimization.
19227
19228 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19231         patch.
19232
19233 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19234
19235         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19236         
19237 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19238
19239         * inssel.brg (mini_emit_memcpy): use 
19240         NO_UNALIGNED_ACCESS to disable memcpy optimization
19241
19242 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19243
19244         * mini-amd64.c: Handle generic types in various places.
19245
19246         * mini.c (mono_method_to_ir): Handle generic types in init locals.
19247
19248 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
19249
19250         * mini.c (handle_box): Fix warning.
19251
19252         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
19253
19254         * mini-amd64.h: Enable the emit_state optimization.
19255
19256         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
19257
19258         * mini-amd64.c: Add some new 64 bit peephole opts.
19259
19260         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
19261
19262         * cpu-amd64.md: sreg1 of div instructions must be %rax.
19263
19264         * mini-amd64.c: Register allocator fixes.
19265
19266         * mini.c: Add an optimization to emit_state to avoid allocation of new
19267         registers on some platforms.
19268
19269 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
19270
19271         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
19272
19273         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
19274         allocation. Fixes #63085.
19275
19276         * basic-long.cs: Add new regression test.
19277
19278         * mini-amd64.c: Register allocator improvements.
19279
19280 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
19281
19282         * mini-amd64.c (read_tls_offset_from_method): Add another code
19283         sequence.
19284
19285         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
19286         instruction sequence for nullifying class init trampolines.
19287
19288         * objects.cs: Add new regalloc test.
19289
19290         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
19291
19292 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19293
19294         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
19295         
19296         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
19297         arguments.
19298
19299         * driver.c: Fix profiling after TLS changes.
19300         
19301         * driver.c (mono_main): Set mono_stats.enabled if needed.
19302
19303         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
19304         CEE_BOX.
19305
19306 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
19307
19308         * mini-x86.c: use a 1 op rather than a 2 op tls access
19309         instruction -> faster.
19310
19311 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19312
19313         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
19314         x86 backend.
19315
19316 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
19317
19318         * exceptions-sparc.c (throw_exception): fix typo
19319
19320 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19321
19322         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
19323         set tree->dreg correctly with tls. Allow any
19324         register to be used.
19325
19326         * mini-x86.c (read_tls_offset_from_method): add new code
19327         generation pattern seen with GCC.
19328
19329
19330 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19331
19332         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
19333         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19334         exceptions-sparc.c: fix some performance issues in exception
19335         handling and setting of the stack trace for exceptions that were
19336         already thrown.
19337
19338 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19339
19340         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
19341         x86 backend.
19342         
19343         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
19344         registers.
19345
19346 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19347
19348         This patch inlines tls access, when possible.
19349         
19350         * mini.h: new arch functions for TLS intrinsics.
19351         All platforms updated with a stub.
19352
19353         * mini.c: use the new intrinsics
19354
19355         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
19356         arch specific intrinsic for tls variables
19357
19358 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19359
19360         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
19361         under windows.
19362
19363 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19364
19365         * mini.c: thread local allocation
19366
19367 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
19368
19369         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
19370
19371         * Makefile.am: Link against the static version of libmonogc.
19372         
19373         * Makefile.am: Link the static versions of the convenience libraries
19374         into the mono executable.
19375
19376         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
19377
19378 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
19379
19380         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
19381         on integer overflow.
19382
19383         * mini-amd64.c: Reorganize function call code.
19384
19385         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
19386
19387 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19388
19389         * inssel-x86.brg: use xor eax,eax.
19390         
19391         * basic.cs: new tests
19392
19393 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19394
19395         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
19396         in exception throwing code.
19397         
19398 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19399
19400         * inssel-x86.brg: use xor esi,esi.
19401
19402 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19403
19404         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
19405         can trace methods compiled during mini_init () too.
19406
19407         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
19408         CEE_CONV_U4.
19409
19410 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19411
19412         * Makefile.am: static link on x86 (r=zoltan)
19413
19414 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19415
19416         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
19417         code since it causes some programs to fail.
19418
19419 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
19420
19421         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
19422
19423 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19424
19425         * mini.c: ovfops_op_map - add STACK_OBJ case for
19426         CONV_I 
19427         * basic.cs: add test_0_pin_string as test
19428         case for above.
19429
19430 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19431
19432         * Makefile.am: build C# if srcdir != builddir
19433
19434 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19435
19436         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
19437         fall-through blocks.
19438
19439 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19440
19441         * driver.c: enable loop by default again and include abcrem in -O=all.
19442
19443 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
19444
19445         * iltests.il: Add some localloc tests.
19446
19447         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
19448
19449         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
19450         Fixes #62574.
19451
19452         * inssel-amd64.brg: Add some optimizations.
19453
19454         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
19455         for gcc-3.4.
19456
19457         * Makefile.am: Statically link mono against libmono on AMD64.
19458         
19459         * mini-amd64.c inssel-amd64.brg: Optimizations.
19460
19461 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
19462
19463         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
19464
19465         * tramp-amd64.c: Patch calling code in trampolines.
19466
19467 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
19468
19469         * mini-amd64.c: pinvoke struct passing fixes.
19470
19471 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
19472
19473         * mini-sparc.c: redo change, make mono_arch_cpu_init call
19474         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
19475
19476 2004-08-05  Duncan Mak  <duncan@ximian.com>
19477
19478         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
19479         CEE_LDELEM_ANY.
19480
19481 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19482
19483         * mini-amd64.c (emit_move_return_value): Move return value for normal
19484         calls too.
19485
19486 2004-08-05  Martin Baulig  <martin@ximian.com>
19487
19488         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
19489         `type->type'; just modify `type' itself when dealing with enums
19490         and generic instances.
19491         (check_call_signature): Make `simple_type' a `MonoType *'.
19492
19493 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19494
19495         * mini.c: Use OP_PADD to add offsets to addresses.
19496
19497         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
19498
19499 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
19500
19501         * mini-sparc.c (mono_arch_emit_epilog): fix check
19502         for folding last op into restore instruction
19503
19504 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19505
19506         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
19507         helper methods using the code manager.
19508         
19509         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
19510
19511         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
19512
19513 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19514         
19515         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
19516           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
19517
19518         * mini-s390.c: fix tail processing
19519
19520 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
19521
19522         * mini-ppc.c: mul.ovf.un exception name fix.
19523
19524 2004-08-03  Martin Baulig  <martin@ximian.com>
19525
19526         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
19527         instances; before jumping to `handle_enum', also modify `ptype'.
19528
19529 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
19530
19531         * cpu-sparc.md: fcall maximal length too small.
19532
19533 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
19534
19535         * mini-amd64.c mini.h: Add initial support for passing/returning 
19536         structures to/from pinvoked methods.
19537
19538 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
19539
19540         * mini-ppc.c: reg allocator fix.
19541
19542 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
19543
19544         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
19545
19546         * inssel.brg: Optimize memset on 64 bit machines.
19547
19548         * mini-amd64.c: Fix some vararg cases.
19549
19550 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19551
19552         * mini-s390.c: Corrected macro in emit_float_to_int
19553
19554         * s390-abi.cs: Tests to exercise the s390 ABI
19555
19556 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19557
19558         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
19559         caller saved regs.
19560
19561         * basic.cs: Add a test for add.ovf.un.
19562
19563 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
19564
19565         * mini-sparc.c: add case for OP_IDIV_UN
19566
19567 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19568
19569         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
19570         
19571         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
19572
19573 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
19574
19575         * basic.cs: regression tests.
19576
19577         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
19578         regressions.
19579
19580 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19581
19582         * basic.cs: Add a new test.
19583
19584         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
19585         and AOT. Various fixes and optimizations.
19586
19587         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
19588
19589 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
19590
19591         * mini-ppc.c: make sure temp regs are not used for global reg
19592         allocation.
19593
19594 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
19595
19596         * cpu-sparc.md: conv_i8 fix for 64bits
19597
19598         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
19599
19600 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
19601         
19602         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
19603         add opcode for cmp BYTE PTR [eax], imm.
19604
19605         * inssel.brg: Make memcpy and memset takes bases.
19606
19607 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19608
19609         * *-amd64.*: More AMD64 work.
19610         
19611 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19612
19613         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
19614         add a compare-not-equal opcode.
19615         
19616 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
19617
19618         * mini.c: Use mono_init_from_assembly instead of mono_init.
19619         
19620 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19621
19622         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
19623
19624         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
19625
19626         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
19627
19628         * inssel.brg: 64 bit fixes.
19629
19630         * mini.h (MonoCallInst): Add some AMD64 specific data.
19631
19632         * mini.h: Add some OP_P opcodes.
19633
19634 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19635
19636         * basic.cs: tests for 61797 and 61740
19637
19638 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19639
19640         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
19641         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
19642
19643 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
19644
19645         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
19646
19647         * *-amd64*.*: Ongoing AMD64 work.
19648
19649 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
19650
19651         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
19652
19653         * *-amd64*: Ongoing AMD64 work.
19654
19655         * mini-arch.h: Add AMD64 support.
19656
19657         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
19658
19659         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
19660
19661         * mini-ops.h: Add new opcodes.
19662
19663         * Makefile.am: Add AMD64 support.
19664
19665         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
19666         rules into the inssel-long*.brg files.
19667
19668         * *-amd64.*: Add beginnings of AMD64 backend.
19669
19670 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
19671
19672         * mini.c (print_dfn): commenting out the code that prints
19673         the cil. With -O=deadce, this makes -v -v crash.
19674         
19675         * cpu-pentium.md: make checkthis have a length of 2
19676
19677 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
19678
19679         * mini-sparc.h: fix implementations of __builtin
19680         functions for Sun compiler for V9.
19681
19682 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
19683
19684         * mini.c: use the new stelem.ref wrapper
19685         * exceptions.cs, arrays.cs: new stelem.ref tests
19686
19687 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19688
19689         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
19690         new XSP should work with these changes).
19691
19692 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
19693         
19694         * inssel-{long32,x86,}.brg: trivial optimizations.
19695         
19696 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
19697
19698         * mini.c: load value when emitting box operation in
19699         constrained calls.
19700
19701 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
19702
19703         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
19704         is one byte shorter than cmp DWORD PTR [eax], 0.
19705
19706 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19707
19708         * inssel-ppc.brg: arguments on the stack are always
19709         relative to the stack pointer (spotted by Neale Ferguson).
19710
19711 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19712
19713         * exceptions-x86.c: delay appending the method name to the trace until
19714         after mono_jit_info_table_find is called, as this gets the real
19715         MonoMethod.
19716
19717 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
19718
19719         * aot.c: register roots
19720
19721 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19722
19723         * aot.c : I could just use PLATFORM_WIN32 flag.
19724
19725 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19726
19727         * aot.c : Reverting the previous fix. This time it broke linux build.
19728
19729 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19730
19731         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
19732
19733 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
19734
19735         * mini.c (handle_stack_args): Remove some more debugging code.
19736         
19737         * mini.c (handle_stack_args): Remove debug output left in by mistake.
19738
19739         * driver.c mini.h aot.c: Allow additional options to be specified with
19740         --aot and pass them to mono_compile_assembly.
19741
19742         * aot.c: Add experimental code to AOT compile all loaded assemblies
19743         on demand and save the code into a cache in the filesystem.
19744
19745         * aot.c: Add support for more wrapper methods.
19746         
19747         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
19748         58863.
19749
19750         * cpu-*.md: Remove removed opcodes.
19751
19752         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19753         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19754         related icalls to marshal.c.
19755
19756 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19757
19758         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19759
19760         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19761
19762         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19763
19764 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19765         * liveness.c: If liveness is recomputated we need to reset the information
19766         for each variable. This way, if the liveness range has been narrowed
19767         by optimizations that happened after the last computation, we can return
19768         a smaller range.
19769         
19770         For example, if you have
19771         
19772         {
19773                 int i = 0;
19774                 
19775                 // Tons of code that does not affect i
19776                 
19777                 i = foo ();
19778                 ...
19779         }
19780         
19781         i = 0 is dead code and will be removed by SSA. However, when
19782         linear scan gets to the code, i will still appear to be live
19783         throughout the entire block. This prevents good register allocation.
19784
19785 2004-07-06  Martin Baulig  <martin@ximian.com>
19786
19787         * debug-mini.c (mono_debug_init_method): Allow
19788         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19789         (mono_debug_add_icall_wrapper): New method.
19790
19791         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19792
19793 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19796         optimization.
19797
19798 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19799
19800         * aot.c (mono_aot_load_method): Fix loading of debug info.
19801
19802 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19803
19804         * aot.c: Add logging support.
19805
19806 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * mini.h: Add prototype for mono_print_method_from_ip.
19809
19810         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19811
19812         * inssel.brg: 64 bit fixes.
19813
19814         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19815         inssel-long32.brg.
19816
19817         * Makefile.am: Add SPARC64 support.
19818
19819 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19820
19821         * aot.c: Fix alignment problems on 32 bit platforms.
19822
19823 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19826         SPARC64.
19827
19828         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19829         problems.
19830
19831         * mini.h: Bump AOT file version. Some 64 bit fixes.
19832
19833 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19834
19835         * inssel-sparc.brg: Add new rule to avoid register moves.
19836
19837         * inssel.brg: Add ldind_to_load_membase helper function.
19838
19839 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19840
19841         * mini.c: OffsetToStringData intrinsic.
19842         
19843 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19844
19845         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19846
19847         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19848         regression tests.
19849
19850         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19851 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19852
19853         * mini.c: reinstated mono_compile_get_interface_var()
19854         on x86, too, since the change breaks the Gtk# build there as well.
19855
19856 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19857
19858         * driver.c: remove loop from the default optimizations: it seems to
19859         interact badly with some of the other options (see bug #60613).
19860
19861 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19864         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19865
19866 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19867
19868         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19869         vararg-using methods.
19870
19871 2004-06-21  Martin Baulig  <martin@ximian.com>
19872
19873         * mini/mini-exceptions.c
19874         (mono_handle_exception): Added `gpointer original_ip' argument.
19875         After calling mono_unhandled_exception(), call
19876         mono_debugger_unhandled_exception() and if that returns true,
19877         restore the context and return.
19878
19879 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19880
19881         * mini-ppc.c: prefer the use of relative branches so
19882         they won't need to be patched in aot code (patch from Patrick Beard).
19883
19884 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19885
19886         * aot.c: patch from Patrick Beard to make the output assembly
19887         more correct for the MacOSX assembler. Small tweak to
19888         generate sane images on Linux/PPC, too.
19889
19890 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19891
19892         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19893         case until bug #59509 is fixed (shows up in #60332).
19894
19895 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19896
19897         * mini.c: make sure the needed wrappers are compiled, too, with
19898         precomp.
19899
19900 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19901
19902         * driver.c: remove NPTL reference in --version output.
19903
19904 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19905
19906         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
19907         generate valid assembly for the Mach-O assembler.
19908
19909 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19910
19911         * driver.c: don't include abcrem in the all optimization specifier
19912         since it slows down jit compilation too much for now.
19913
19914 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
19915
19916         * mini.c: use BIGMUL only if both operands have the same signage.
19917         * iltests.il: Test for bug 60056. (errors related to signage in
19918         BIGMUL).
19919
19920         r=lupus.
19921
19922 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
19923
19924         * mini.c, aot.c: memory leak fixes.
19925
19926 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19927
19928         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
19929
19930 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
19931
19932         * Makefile.am: remove the -static hack completely, it links in
19933         statically glib as well.
19934
19935 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
19936
19937         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
19938         * exceptions.cs: make it compile with new mcs/csc.
19939
19940 2004-06-03 Massimiliano Mantione <massi@ximian.com>
19941         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
19942         and added relevant test case.
19943
19944 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19945
19946         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
19947         regressions in gtk-sharp.
19948
19949 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19950
19951         * exceptions.cs: New regression tests.
19952
19953         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
19954
19955 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19956
19957         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
19958
19959 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
19962
19963         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
19964
19965 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
19966
19967         * mini.c (mono_jit_runtime_invoke): Init class in this
19968         method instead of trusting mono_jit_compile_method to
19969         do the work (because wrappers can be in object class)
19970
19971 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
19972
19973         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
19974
19975         * basic-long.cs: New regression test.
19976
19977 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
19978
19979         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
19980         and div/rem checks.
19981
19982 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
19983
19984         * Makefile.am: fix miguel's change to build mono statically against
19985         libmono (track build dependencies).
19986
19987 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19988
19989         * cfold.c: Some glib versions do not have G_MININT32.
19990
19991 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
19992
19993         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
19994         with precision of tan, atan, sin and cos, and implemented related
19995         regressions tests (fixes bug 54467, but one new problem appeared and
19996         is not fixed yet).
19997
19998 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19999
20000         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
20001
20002         * exceptions.cs: Add test for constant folding && division by zero.
20003
20004         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
20005         since driver.c is in libmono too, so the optimization was useless.
20006
20007         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
20008         variable to driver.c so the compiler can emit more efficient code to
20009         access them.
20010
20011 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20012
20013         * Makefile.am: don't distribute generated inssel.[ch] files.
20014
20015 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
20016
20017         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
20018         into the default appdomain. Fixes #58707.
20019
20020         * jit-icalls.c: Remove the broken approximation for truncl, doing
20021         no conversion is better.
20022
20023         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
20024         Fixes #58863.
20025
20026 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20027
20028         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
20029         of the mcrxr instruction which is not available on some processors
20030         even if it's documented to be. Implement add and sub overflow correctly
20031         (still not complete for long unsigned). Speed up icalls a bit.
20032
20033 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
20034
20035         * mini.c (mono_jit_compile_method_with_opt): Make sure that
20036         we run .cctor in the current domain instead of target_domain.
20037         
20038         Fixes bug #58558, .cctor not being called in -O=shared.
20039
20040 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20041
20042         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
20043
20044 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
20045
20046         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
20047         which can be done with an imm8, do it that way.
20048         (mono_arch_output_basic_block): ditto for a jmp
20049         (mono_arch_emit_prolog): Computate maximum offset of a label.
20050
20051 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
20052
20053         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
20054         now tries to allocate prefered physical reg's for virtual
20055         regs. This reduces the number of emited spills/loads with
20056         20-30% on our core assemblies.
20057
20058 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20059
20060         * jit-icalls.c: truncl() is not needed and trunc() is
20061         the correct thing to do anyway (bug #58287).
20062
20063 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
20066         if available.
20067
20068 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20069
20070         * driver.c: enable loop optimizations by default.
20071
20072 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20073
20074         * mini-x86.c: fix calc of max loop size when aligning loops start.
20075
20076 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
20079         the stack.
20080
20081 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
20082
20083         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
20084         should set carry.
20085
20086         * basic-long.cs: Add tests for add/subtract of immediates with carry.
20087
20088         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
20089         
20090         * mini.c (inline_method): Allways inline some wrappers even if the cost
20091         is too large. Fixes #58785.
20092
20093         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
20094         
20095 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
20096
20097         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
20098         (crichton@gimp.org). Beginning of support for sparc/linux.
20099
20100         * mini-sparc.c: Optimize retrieval of LMF address.
20101
20102 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
20103
20104         * exceptions-ppc.c:  handle alloca in methods with clauses.
20105
20106 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
20107
20108         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
20109
20110 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
20111
20112         * mini.c: Delegate most of the abort signal work to 
20113           mono_thread_request_interruption, which also handles Stop and Suspend
20114           states.
20115
20116 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
20117
20118         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
20119         supports the save/restore lmf opcodes.
20120
20121 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
20122
20123         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
20124         by gcc-3.4 as well.
20125
20126         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
20127
20128 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20129
20130         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
20131         methods which contain array accesses.
20132
20133         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
20134         boundaries. Fixes #58537.
20135
20136         * iltests.il: Add regression test for #58537.
20137
20138 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20139
20140         * mini-x86.c (mono_arch_local_regalloc): Last part of
20141         fix for bug #58633 (releasing register to early).
20142
20143 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
20144
20145         * basic-long.cs: Add new regression test.
20146
20147 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20148
20149         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
20150         register too early on the chain.
20151
20152 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20153
20154         * mini.c (create_helper_signature): Use a helper function to reduce
20155         the code which needs to be written. Also set the calling convention of
20156         icalls on windows. Fixes #57840.
20157
20158 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20159
20160         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
20161         exceptions-ppc.c: added helper function to get the instruction address
20162         from a signal handler context.
20163
20164 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20165
20166         * helpers.c: use g_get_tmp_dir. Invokes happyness 
20167         from gonzalo.
20168
20169 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20170
20171         * helpers.c: Add new env variable to pass args to objdump.
20172         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
20173
20174 2004-05-17  Radek Doulik  <rodo@ximian.com>
20175
20176         * Makefile.am (common_sources): added abcremoval.h so it get
20177         disted and daily mono packages on go-mono.com will build again
20178
20179 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
20180
20181         * abcremoval.c: Fixed coding style, added copyright header.
20182
20183         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
20184
20185         * mini.h: Added prototype for abc removal main function.
20186
20187         * build_relations_propagation_table.pl: Added copyright header.
20188
20189 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20190
20191         * basic-long.cs: reg test for complex ceq_long bug.
20192
20193 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20194
20195         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
20196         reg in long and clob case (bug #58343). Fixed/added comments.
20197
20198 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20199
20200         * mini.c (mono_jit_runtime_invoke): Follow new convention
20201         of calling the invoke method with an function pointer.
20202
20203 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20204
20205         * ChangeLog: Fix author of memory leak patch.
20206
20207 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20208
20209         * Makefile.am: fix make dist as well...
20210
20211
20212 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20213
20214         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20215         on archs where pointers are 4 bytes long.
20216
20217         * Makefile.am: Added abcremoval.c source file.
20218
20219         * abcremoval.c: Added abcremoval.c.
20220
20221         * abcremoval.h: Added abcremoval.h.
20222
20223         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20224
20225         * inssel.brg: Enabled bounds check removal.
20226
20227         * mini.c: Added support for abcrem optimization.
20228
20229         * mini.h: Added abcrem optimization label.
20230
20231         * driver.c: Added support for abcrem optimization.
20232
20233         * propagated_relations_table.def: Added propagated_relations_table.def.
20234
20235 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20236
20237         * mini.c, cfold.c: fix style.
20238
20239 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20240
20241         * mini.c: handle issue with the low-level implementation of
20242         some long opcodes (bug #54209).
20243
20244 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
20245
20246         * basic.cs: test for my new cmov stuff.
20247
20248 2004-05-13      Patrik Torstensson
20249
20250         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
20251         opt and added peephole documentation.
20252
20253 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20254
20255         * tramp-ppc.c: rewrote the generic trampoline code.
20256
20257 2004-05-11      Patrik Torstensson
20258
20259         * mini-x86.c: optimize long shl/shr asm code (one less branch)
20260
20261 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20262
20263         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
20264
20265         * mini.h mini.c dominators.c: Applied patch from Derek Woo
20266         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
20267
20268         * mini.c: Add new icalls for AsAny marshalling.
20269
20270 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20271
20272         * tramp-ppc.c, mini-ppc.c: more cleanups.
20273
20274 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20275
20276         * mini.c: no warnings.
20277
20278 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20279
20280         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
20281
20282 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20283
20284         * mini.c: In the thread abort signal handler, if the thread is in the
20285         process of being stoped, don't throw the Abort exception, just stop the
20286         thread.
20287
20288 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
20289
20290         * tramp-ppc.c: removed old code.
20291
20292 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20293
20294         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
20295         do some simple speed optimizations on ppc.
20296
20297 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20298
20299         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
20300         and large offsets in load/store.
20301
20302 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
20305         it causes regressions.
20306
20307 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
20310         support.
20311
20312 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20313
20314         * jit-icalls.c: remove warnings.
20315         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
20316         speedups for unsafe code.
20317
20318 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20319
20320         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
20321
20322 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
20323
20324         * basic-calls.cs: Add new regression test.
20325
20326         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
20327         more portable.
20328
20329         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
20330
20331         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
20332         is no longer used.
20333
20334 2004-05-06      Patrik Torstensson
20335
20336         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
20337         long reg allocation in any reg (not only eax:edx) and implemented 
20338         long shl/shr ops in asm instead of helpers.
20339
20340 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20341
20342         * mini-sparc.h: Fix warnings.
20343
20344         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
20345         stack.
20346
20347         * mini-exceptions.c (mono_handle_exception): Call the filter in a
20348         separate statement for clarity.
20349
20350         * mini-sparc.c: Update status.
20351
20352 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
20353
20354         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
20355         here.
20356
20357 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20358
20359         * inssel-ppc.brg: another small pre-release workaround:
20360         we don't do overflow detection for long_sub_un.
20361
20362 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20363
20364         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
20365         (also works around a weird ppc bug: 57957).
20366
20367 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
20368
20369         * tramp-ppc.c: trampoline fixes.
20370
20371 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
20372
20373         * mini-ppc.c: fixed typos.
20374
20375 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20376
20377         * mini-ppc.c, exceptions-ppc.c: more code saves registers
20378         at the top of the stack. Fixed typos. Use a frame registers
20379         for all the methods with exception clauses.
20380
20381 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20382
20383         * exceptions-ppc.c: restore fp registers.
20384
20385 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20386
20387         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
20388         order from the stack top (moved the stack room to save the
20389         return value for trace after the param area). Fixed corruption
20390         in restoring registers on unwind.
20391
20392 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20393
20394         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
20395
20396 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20397
20398         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
20399         and prolog/epilog for methods that use it. Allow
20400         enough param area room for varargs methods. Fix miguel's
20401         breakage in exception handling.
20402
20403 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20404
20405         * Makefile.am: run genmdesc only on current arch.
20406
20407 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20408
20409         * exceptions-x86.c:
20410         * mini-x86.h: fix the build on windows.
20411
20412 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
20413
20414         * 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.
20415
20416         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
20417
20418         * mini-exceptions.c: New file.
20419         
20420         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
20421         Move some parts of the x86 exception handling code to an 
20422         arch-independent file so it can be shared with other ports.
20423
20424 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
20425
20426         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
20427
20428 2004-04-26  David Waite  <mass@akuma.org>
20429
20430         * driver.c: remove comma from end of enumeration declaration
20431
20432 2004-04-26  Jackson Harper  <jackson@ximian.com>
20433
20434         * driver.c: parse config file before loading first assembly. This
20435         allows the user gac to be enabled/disabled. 
20436         
20437 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
20438
20439         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
20440         simpler mechanism: we do not care what is encoded initially
20441         (branch absolute or relative), we care about the code and its
20442         target.  I kept the old code for reference for now.
20443
20444         The new code tries first to determine if the jump is anywhere in
20445         the -/+32 absolute meg range, if it succeeds, it encodes using the
20446         absolute branch;  If not, it tried to find something in the
20447         relative range, if not, it uses the handle_thunk code. 
20448
20449 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
20450
20451         * exceptions-ppc.c: use the correct ip register on macosx.
20452
20453 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
20454
20455         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
20456
20457 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
20458
20459         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
20460         Raise exception on integer divide by zero by hand since the hw
20461         doesn't support it. Handle NaNs in FP compares.
20462
20463 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20464
20465         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
20466         code reducing duplication between the platforms and enabled
20467         signal exception handling (on linux for now).
20468
20469 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
20470
20471         * exceptions-ppc.c: more macosx support.
20472
20473 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20474
20475         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
20476
20477 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20478
20479         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
20480
20481 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20482
20483         * iltests.il: more tests.
20484
20485 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20486
20487         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
20488         vars as well.
20489
20490 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20491
20492         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
20493
20494 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20495
20496         * liveness.c: Mark variables as volatile in all basic blocks reachable
20497         from exception clauses.
20498
20499 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
20500
20501         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
20502         inlining.
20503
20504 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20505
20506         * iltests.il, basic.cs: more tests for regalloc.
20507
20508 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20509
20510         * iltests.il: Some tests for register allocation modifications
20511         I have locally.
20512
20513 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
20514
20515         * exceptions.cs: Add regression test for bug #56782.
20516
20517         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
20518         original stack trace if an exception is rethrown. Fixes #56782. Oh,
20519         the beauty of fixing the same thing in 5 different files...
20520
20521 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
20524         methods.
20525
20526 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
20527
20528         * mini.c: Add support for STRWLPARRAY marshalling convention.
20529
20530 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20531
20532         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
20533         to init the context to setup the regs pointer).
20534
20535 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20536
20537         * exceptions-ppc.c: more exceptions work.
20538
20539 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20540
20541         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
20542         not allowed.
20543
20544 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20545
20546         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
20547         can use the memory directly.
20548
20549         * cpu-pentium.md: Update documentation from a post from Zoltan. 
20550
20551         add x86_add_membase, x86_sub_membase, x86_mul_membase
20552
20553 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20554
20555         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
20556         GENERAL_REGS they were also hardcoded for all PPC ports.
20557
20558         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
20559
20560         Remove hard-coded limit for floating point registers, use
20561         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
20562
20563         Notice that in MacOS X calling conventions you can fit a lot more
20564         floating point values in registers, so I should update the PInvoke
20565         test to excercise the passing of floating point values on the
20566         stack (currently broken).
20567         
20568 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
20569
20570         * tramp-ppc.c (create_trampoline_code): Added
20571         JUMP_TRAMPOLINE_SIZE. 
20572         (ppc_magic_trampoline): Follow the pattern from
20573         x86_magic_trampoline: if code is set to zero, return. 
20574         (create_trampoline_code): Always pass MonoMethod to the jump
20575         trampoline, before it was passing a null.
20576         (mono_arch_create_jump_trampoline): Implement the jump stub, could
20577         share the code with mono_arch_create_jit_trampoline. 
20578
20579         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
20580         implemented.
20581         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
20582         implemented.  
20583
20584         * cpu-g4.md: Added length for jmp instruction, the worst case
20585         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
20586         for save_lmf).
20587
20588 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
20589
20590         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
20591
20592 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
20593
20594         * mini.c: Only set bblock->real_offset when adding a new bblock, and
20595         before each IL instruction.
20596
20597         * mini.c (CEE_BOX): Fix warnings.
20598
20599 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20600
20601         * mini.c: removed a few unused vars and extra whitespace.
20602
20603 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
20604
20605         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
20606         checks.
20607         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
20608         index.
20609         (OP_GETCHR): use the above
20610         (CEE_LDELEMA): use the above.
20611
20612         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
20613         version of the generic impl.
20614         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
20615         (CEE_LDELEMA): use the above.
20616
20617 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20618
20619         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
20620         Fixes #56317.
20621
20622         * iltests.il: Added new regression test for #56317.
20623
20624 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20625
20626         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
20627         under NetBSD. Fixes #56450.
20628
20629         * liveness.c (update_gen_kill_set): Fix previous patch.
20630
20631 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20632
20633         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
20634
20635 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
20636
20637         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
20638         ldsfld and ldsflda.
20639
20640         * inssel-sparc.brg: Add more optimizations.
20641
20642         * mini-sparc.c: Replace multiply/divide with shifts if possible.
20643
20644 2004-04-01  Martin Baulig  <martin@ximian.com>
20645
20646         * mini.c (handle_box): New static function; moved the
20647         implementation of CEE_BOX here.
20648         (mono_method_to_ir): Added `constrained_call' variable.
20649         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
20650         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
20651         mono_method_get_constrained() to get the method.
20652
20653 2004-04-01  Martin Baulig  <martin@ximian.com>
20654
20655         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
20656         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
20657         (mono_method_to_ir): We don't need these macros anymore since
20658         mono_class_get_full() already takes care of it. 
20659
20660 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20661
20662         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
20663         use @function (as doesn't accept #function here) and check the return
20664         value of system and stop if fails.
20665
20666 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20667
20668         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
20669
20670 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
20671
20672         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
20673
20674         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
20675
20676         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
20677         #56223.
20678
20679         * basic-long.cs: Add test for negation of Int64.MinValue.
20680
20681 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
20682
20683         * mini-sparc.c: Update status.
20684
20685         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
20686
20687         * exceptions-sparc.c: Fix return value in filters.
20688
20689         * inssel-sparc.brg: Fix register allocation in some rules.
20690
20691 2004-03-28  Martin Baulig  <martin@ximian.com>
20692
20693         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
20694         if neccessary.  
20695
20696 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20697
20698         * mini-x86.c (mono_arch_patch_code): Fix warnings.
20699         
20700         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
20701         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
20702         remove unused conv_u4 opcode.
20703
20704         * mini-x86.c: Remove valgrind workaround since it slows down things
20705         even when mono is not run under valgrind.
20706
20707 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * mini-sparc.c: Update status.
20710
20711         * inssel-sparc.brg: Add some optimizations.
20712
20713         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
20714         future delay slot filling. Add support for varargs, tail calls and JMP.
20715
20716         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
20717         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
20718
20719         * inssel.brg: Fix register allocation in OP_ARGLIST.
20720
20721         * inssel.brg: Fix warnings.
20722
20723 2004-03-25  Martin Baulig  <martin@ximian.com>
20724
20725         * mini.c (inflate_generic_field): Removed.
20726         (mini_get_method): Removed, use mono_get_method_full(),
20727         (mini_get_class): Removed, use mono_class_get_full().
20728         (mono_method_to_ir): Pass our generic context to
20729         mono_field_from_token().        
20730
20731 2004-03-25  Martin Baulig  <martin@ximian.com>
20732
20733         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
20734         of a `MonoMethod *'.
20735         (mini_get_method): Take a `MonoGenericContext *' instead
20736         of a `MonoMethod *'.
20737         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
20738         a new local variable called `generic_context' which holds the
20739         current `MonoGenericContext *'; use it to lookup things.
20740
20741 2004-03-24  Martin Baulig  <martin@ximian.com>
20742
20743         * mini.c (mini_get_class): New static method; if we're inside a
20744         generic instance, inflate the class if neccessary.
20745         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
20746
20747 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20748
20749         * iltests.il: New regression test for #55976.
20750
20751         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20752         #55976.
20753
20754 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20755
20756         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20757         output.
20758
20759 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20760
20761         * liveness.c: Consider SSA stores as well as loads when making vars
20762         volatile.
20763
20764         * exceptions.cs: New regression tests for register allocation.
20765         
20766 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20767
20768         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20769         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20770           domain lock only to protect puntual access to data structures.
20771           Added access lock for sighash, jit_icall_hash_name, 
20772           jit_icall_hash_addr and domain->code_mp.
20773
20774 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20775
20776         * driver.c: Print SIGSEGV handling method.
20777
20778         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20779
20780         * mini.c (setup_jit_tls_data): Handle case when this is called
20781         multiple times for a thread.
20782
20783         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20784         is different from fbxx_un. Fixes #54303. Also use constants instead of
20785         magic numbers in a lot of places.
20786
20787 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20788
20789         * exceptions.cs: Fix cctor test when --regression is used.
20790
20791 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20792
20793         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20794         for Linux/ppc.
20795
20796 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20797
20798         * inssel-ppc.brg: fixed register assignments for some rules.
20799
20800 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20801
20802         * exceptions.cs: Add test for exceptions in static constructors.
20803
20804         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20805         static constructors outside the domain lock. Fixes #55720.
20806
20807 2004-03-17  Martin Baulig  <martin@ximian.com>
20808
20809         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20810         (inflate_generic_field): Take the `MonoMethod *' instead of the
20811         `MonoClass *' and added support for generic method.
20812         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20813         have a `field->parent->gen_params', only inflate the field if it's
20814         an open constructed type.
20815
20816 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20817
20818         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20819         exception object instead of the preconstructed ones.
20820
20821 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20822
20823         * mini.c: reverted changed to sigsegv_signal_handler commited
20824         accidentally in the previous patch.
20825
20826 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20827
20828         * mini.c:
20829         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20830         running --aot with an old assembly.
20831
20832 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20833
20834         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20835         point values.
20836
20837         * mini-sparc.c: Add support for v9 branches with prediction.
20838
20839 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20840
20841         * mini.c (mini_init): #warning is GNUC only
20842
20843         * mini-sparc.h: implement __builtin_frame_address
20844         and __builtin_return_address for Sun C compiler
20845
20846 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20847
20848         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20849
20850 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20851
20852         * basic-calls.cs: Add test for unaligned byref long argument passing.
20853
20854         * mini-ops.h: Add sparcv9 compare and branch instructions.
20855
20856         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20857         v9 instructions if we have a v9 cpu.
20858
20859         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20860         registers for global allocation.
20861
20862         * exceptions-sparc.c: Fixes.
20863         
20864 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20865
20866         * liveness.c (mono_analyze_liveness): Optimized version.
20867
20868         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20869
20870         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20871         sparc work.
20872
20873         * basic-float.cs basic-calls.cs: New regression tests.
20874
20875 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20878         sigaltstack implementation.
20879
20880         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20881         
20882         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20883         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20884
20885 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20886
20887         * mini.c: Fix warnings.
20888         
20889         * mini.c (mono_resolve_patch_target): New function which contains the
20890         arch independent part of the patching process.
20891
20892         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20893         patching code to a separate function.
20894
20895 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20896
20897         * mini.c (add_signal_handler): ifdef out on Windows
20898
20899 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20900
20901         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20902         cpu-sparc.md: Add exception handling support + other fixes.
20903
20904         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
20905         typed GC detection in --version.
20906
20907         * basic.cs exceptions.cs: New regression tests.
20908
20909         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
20910         the arch specific code can store data during a compilation.
20911
20912         * mini-ops.h: Add OP_SETFRET.
20913
20914         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
20915         function, register a separate icall for each arity, so the icalls can
20916         get a wrapper.
20917         
20918         * mini.c (mono_print_tree): Print negative offsets in a more readable
20919         form.
20920         
20921         * mini.c: Make signal handling work on sparc.
20922         
20923         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
20924
20925         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
20926
20927         * jit-icalls.c: Emulate truncl by aintl on solaris.
20928
20929         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
20930
20931 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
20932
20933         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
20934
20935 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20936
20937         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
20938         a MarshalByRef type, inline a method that performs the check, taking into
20939         account that the object can be a proxy. Also implemented tow new opcodes:
20940         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20941         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
20942         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20943
20944 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20945
20946         * mini-ppc.c: if a relative branch displacement is too big
20947         but it points to and area reachable with an absolute branch, 
20948         avoid the thunks.
20949
20950 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20951
20952         * mini.c: optimize small copies in cpblk.
20953
20954 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
20955
20956         * basic-calls.cs basic-float.cs: New regression tests.
20957
20958         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
20959         negative offsets from %fp. Implement localloc. Fix local register 
20960         allocation. Fix the case when the this argument needs to be saved to
20961         the stack. Implement some missing opcodes.
20962
20963 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20964
20965         * mini.c (mini_method_compile): Reenable global regalloc in methods
20966         with exception handlers.
20967
20968         * linear-scan.c (mono_varlist_sort): Fix warning.
20969
20970         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
20971
20972         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
20973         regalloc costs.
20974
20975         * liveness.c: Make all variables uses in exception clauses volatile, to
20976         prevent them from being allocated to registers. Fixes #42136.
20977
20978 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
20979
20980         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
20981         causes regressions.
20982
20983         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
20984         argument to mono_arch_regalloc_cost.
20985
20986         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
20987         precisely.
20988
20989 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
20990
20991         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
20992         Make the cost of allocating a variable to a register arch dependent.
20993
20994         * basic-calls.cs: Fix compilation of tests.
20995         
20996         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
20997         helper function to cut back on the number of #ifdefs needed.
20998
20999         * mini-ppc.c: Fix compilation.
21000
21001         * basic-calls.cs: New regression tests.
21002
21003         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
21004
21005         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
21006         of l0 since that is callee saved.
21007
21008         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
21009         to virtual calls.
21010
21011         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
21012         of delay instruction.
21013
21014         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
21015
21016         * mini.h (MonoCallInst): Add 'virtual' flag.
21017
21018         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
21019
21020 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * *.cs: New regression tests.
21023
21024         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
21025         work.
21026
21027         * mini.c (mono_runtime_install_handlers): Fix build.
21028
21029         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
21030         'signal_stack_size' members.
21031
21032         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
21033         alternate signal stack.
21034
21035         * exceptions-x86.c: Add stack overflow handling.
21036
21037         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
21038         functions to arch independent code.
21039
21040         * mini.c (mono_print_tree): Print more detailed info for load_membase
21041         opcodes.
21042         
21043 2004-02-23  Martin Baulig  <martin@ximian.com>
21044
21045         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
21046
21047 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21048
21049         * mini-x86.c: fixed reg allocation for div/rem.
21050
21051 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
21052
21053         * driver.c (mono_main): Report some configuratio options on --version.
21054
21055 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
21056
21057         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
21058         low in the address space. Correctly flush memory in thunks where we
21059         output native code.
21060
21061 2004-02-20  Martin Baulig  <martin@ximian.com>
21062
21063         * mini.c (mini_get_method): New static method; inflate all generic
21064         methods and methods in open generic instances.
21065         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
21066         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
21067
21068 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21069
21070         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
21071
21072         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
21073
21074 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
21075
21076         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
21077
21078         * mini-sparc.c (flushi mono_arch_output_basic_block): make
21079         it compile using Sun's compiler.
21080
21081 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21082
21083         * 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.
21084
21085         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
21086
21087 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21088
21089         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
21090         code.
21091         * mini-ppc.c: handle calls outside of the allowed range with thunks
21092         allocated using the code manager.
21093         * tramp-ppc.c: use the code manager to hold generated native code.
21094         Fixed the magic trampoline to just patch vtable entries.
21095
21096 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
21097
21098         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
21099         independent file.
21100
21101 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
21104         PPC.
21105
21106         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
21107         if we have a working __thread implementation.
21108
21109         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
21110         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
21111
21112 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
21113
21114         * mini-x86.c: Fix compilation under gcc 2.
21115         
21116 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
21117
21118         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
21119         contains a call to the wrapped function.
21120
21121         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
21122         OP_<CALL>_IMM opcodes, and use them under X86.
21123         
21124         * mini.c (mono_jit_find_compiled_method): Fix warning.
21125
21126         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
21127
21128         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
21129
21130         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
21131         functionality to mini.c.
21132
21133         * mini.c (mono_create_jump_trampoline): New function to create a jump
21134         trampoline. Return a compiled method instead of a trampoline if it
21135         exists. Add a cache for jump trampolines.
21136
21137         * mini.c (mono_jit_find_compiled_method): New function to return a
21138         compiled method if it exists.
21139
21140         * mini-x86.c: Call mono_create_jump_trampoline instead of 
21141         mono_arch_create_jit_trampoline.
21142
21143         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
21144         a jump trampoline. Fixes #52092.
21145         
21146 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
21147
21148         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
21149         which is not up-to-date. Add check_corlib_version () instead.
21150
21151         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
21152         have to call it.
21153         
21154         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
21155         since newer valgrind versions do not need it.
21156
21157         * mini.c (mono_jit_compile_method_with_opt): New helper function to
21158         compile a method with a given set of optimizations.
21159
21160         * mini.c: Compile icall wrappers on-demand instead of at startup.
21161
21162         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
21163         wrapper for an icall.
21164
21165 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
21166
21167         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
21168         #54063.
21169
21170         * iltests.il: Add test for non-empty stack before switch instruction.
21171
21172 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
21173
21174         * mini.c: Add support for new stringbuilder marshalling conventions.
21175
21176         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
21177
21178 2004-02-01  Martin Baulig  <martin@ximian.com>
21179
21180         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
21181         in `ginst->mtype_argv'.
21182
21183 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
21184
21185         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
21186         facilitate grepping.
21187
21188 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
21189
21190         * mini.c: fixed buglet in initobj generic implementation for references.
21191
21192 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
21193
21194         * Makefile.am: make the version script conditional.
21195         * jit-icalls.c: handle missing truncl().
21196
21197 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21198
21199         * exceptions.cs: Add more tests for double->int conversion.
21200
21201         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
21202         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
21203
21204 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
21205
21206         * driver.c: make --verbose --version emit an error
21207         if the loaded corlib doesn't match the runtime version.
21208
21209 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21210
21211         * mini-ppc.h: export ppc_patch().
21212         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21213         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21214         on par or better than on MacOSX.
21215
21216 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21217
21218         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21219         mono_lookup_pinvoke_call.
21220
21221         * mini-x86.c: Under windows, the default pinvoke calling convention is
21222         stdcall. Fixes #52834.
21223
21224         * mini.c (optimize_branches): Add an upper bound to the number of
21225         iterations to prevent infinite loops on strange loops. Fixes #53003.
21226
21227 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21230         and ISINST. Fixes #52093.
21231
21232         * objects.cs (test_0_vector_array_cast): New tests.
21233         
21234 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21235
21236         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21237         checking in Array.Set ().
21238
21239         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21240         #52590.
21241
21242         * object.cs (test_0_multi_array_cast): New regression test.
21243
21244 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
21245
21246         * exceptions-ppc.c: fix build on Linux/PPC.
21247
21248 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
21249
21250         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
21251         running under valgrind.
21252         (x86_magic_trampoline): Fix build bustage.
21253
21254         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
21255         negative values as well. This is needed for the encoding of the line number
21256         info, since sometimes the line numbers are not in increasing order.
21257
21258 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21259
21260         * cpu-pentium.md (localloc): Increase the size of the localloc 
21261         instruction since it is a loop under Win32.
21262
21263         * debug-mini.c (record_line_number): Get rid of unneccesary memory
21264         allocation.
21265
21266 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
21269         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
21270         Max Horn (max@quendi.de). Fix file names in comments.
21271
21272 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
21273
21274         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
21275         avoid stack overflow.
21276         (replace_usage): Avoid uninitialized variable warnings.
21277
21278         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
21279         and taking the address of valuetype variables.
21280
21281 2004-01-03  Patrik Torstensson
21282
21283         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
21284         for other purposes than FP later on.
21285
21286 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
21287
21288         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
21289         of tail calls.
21290
21291 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21292
21293         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
21294
21295 2003-12-30  Patrik Torstensson <p@rxc.se>
21296
21297         * mini-x86.h: Decreased number of availiable fp regs.
21298         Solves corner cases with FP spilling.
21299
21300 2003-12-23  Patrik Torstensson <p@rxc.se>
21301
21302         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
21303         for floating point stack tracking / spilling on x86. 
21304         Fixes bug #49012.
21305         
21306         * basic-float.cs: added float mul overflow test.
21307
21308 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
21309
21310         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
21311
21312 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21313
21314         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
21315         supports for cond branches that overflow the immediate
21316         overflow offset. mcs can compile simple programs.
21317
21318 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21319
21320         * exceptions-ppc.c: exception handling support wip:
21321         finally handlers get run on exception.
21322
21323 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21324
21325         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
21326         profiling.
21327
21328 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21329
21330         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
21331         initial support for stack walking and unwinding.
21332
21333 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
21334
21335         * driver.c (mono_main): Make corlib-out-of-sync message more 
21336         descriptive. Also remove verify_corlib call.
21337
21338 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21339
21340         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
21341         not overlap with other call's arguments, too.
21342
21343 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
21344
21345         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
21346         move to arch-specific code the choice of arch-specific
21347         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
21348         * mini.c: ensure emulation calls will not interleave
21349         with other calls.
21350
21351 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
21352
21353         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
21354         the magic trampoline stack frame is dropped before executing
21355         the new method.
21356
21357 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21358
21359         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
21360         and integer to fp conversions. Added support for overflowing
21361         arguments on the stack. Reserve a couple more registers as temps.
21362         Added support for aot compilation (as output still needs to be
21363         tweaked, though).
21364
21365 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21366
21367         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
21368         Don't overwrite return register in some corner cases.
21369
21370 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
21371
21372         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
21373         static constructors when AOT compiling.
21374
21375         * driver.c (mono_main): Call mono_check_corlib_version.
21376
21377 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21378
21379         * cpu-g4.md, basic.cs: fixed div target register.
21380
21381 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21382
21383         * mini-ppc.c, basic.cs: shl_imm fix with test.
21384
21385 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21386
21387         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
21388         structures by value. Misc fixes.
21389         * objects.cs: more tests.
21390
21391 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
21392
21393         * mini-ppc.c: lconv.ovf.i implemented.
21394
21395 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21396
21397         * mini.c:
21398         (mini_init): don't error out if someone already called g_thread_init.
21399
21400 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21401
21402         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
21403         to be any type per the spec. Fix abnormal memory usage when
21404         the same object is repeatedly thrown.
21405
21406 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
21407
21408         * mini.c: check for overruns in IL code.
21409
21410 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
21411
21412         * TODO: Add/remove some todo entries.
21413
21414 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
21415
21416         * driver.c (mono_main): Call mono_verify_corlib.
21417
21418 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
21419
21420         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
21421         This has been moved to mini.c
21422         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
21423         type being casted is marshalbyref it could be a proxy, so instead of
21424         emitting the type check code, emit a call to a runtime method that will
21425         perform the check by calling CanCastTo if needed.
21426
21427 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
21428
21429         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
21430         methods with large stack frames under Win32.
21431
21432 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
21433
21434         * Makefile.am: Distribute regression tests.
21435
21436         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
21437         at the end instead of inserting each variable into the sorted list.
21438
21439         * linear-scan.c (mono_varlist_sort): New helper function.
21440         
21441 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21442
21443         * mini.c: ensure arguments and locals are within bounds.
21444
21445 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21446
21447         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
21448         related fixes.
21449
21450 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21451
21452         * mini.c (mono_cprop_copy_values): Fix crash.
21453
21454         * aot.c: Set verbosity back to 0.
21455         
21456 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21457
21458         * regalloc.c: complete memory leak fix by Laurent Morichetti
21459         (l_m@pacbell.net).
21460
21461 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21462
21463         * driver.c (main_thread_handler): Revert the previous patch.
21464
21465         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
21466         under valgrind.
21467
21468         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
21469         memory from the memory pool.
21470
21471         * driver.c (main_thread_handler): Turn on all optimizations when
21472         --aot is used.
21473
21474         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
21475         an array for better performance.
21476
21477         * regalloc.c (mono_regstate_assign): Fix memory leak.
21478
21479         * debug-mini.c (mono_debug_serialize_debug_info): New function to
21480         serialize the debug info.
21481
21482         * debug-mini.c (mono_debug_add_aot_method): New function to load the
21483         debug info from the serialized representation.
21484
21485         * aot.c: Save debug info into the generated file and load it when 
21486         loading a method.
21487
21488         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21489
21490 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21491
21492         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
21493         More FP-related fixes.
21494
21495 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21496
21497         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
21498         and register allocation buglet. Hello world now runs.
21499
21500 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21501
21502         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
21503         * tramp-ppc.c: fixed class init trampoline.
21504         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
21505
21506 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21507
21508         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
21509         mini.c: more ppc changes/fixes.
21510
21511 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21512
21513         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
21514         Also optimize the case when the arguments are the same in the caller 
21515         and in the callee.
21516
21517         * iltests.il: Add tests for tail calls with valuetype arguments.
21518
21519 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21520
21521         * mini-ppc.c: fixes for struct return type.
21522
21523 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
21524
21525         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
21526         mono_spillvar_offset() to arch-specific code.
21527
21528 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21529
21530         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
21531
21532 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21533
21534         * exceptions-x86.c: Fix stack space leaks.
21535         
21536         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
21537         registers from the lmf if the method has save_lmf set.
21538
21539 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
21540
21541         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
21542         of icall wrappers into InvokeInDomain, since these are now per-domain.
21543
21544 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
21545
21546         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
21547         make some opcode emulation and intrinsic ops enabled/disabled 
21548         according to the architecture. More fixes.
21549
21550 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21551
21552         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
21553
21554 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21555
21556         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
21557         arch-specific handling for 'this' and struct return type to
21558         arch-specific code.
21559
21560 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21561
21562         * aot.c: prevent divide by zero error when reporting (it happened with
21563         Accessibility.dll).
21564
21565 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
21566
21567         * mini.h (inst_switch): Remove unused macro.
21568
21569 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21570
21571         * aot.c:
21572         (load_aot_module): free 'info->methods' and 'info' properly. No more
21573         "free(): invalid pointer blah" messages when you have an old aot
21574         compiled assembly.
21575
21576 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
21577
21578         * jit-icalls.c, mini.c: Added support for context static fields.
21579
21580 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21581
21582         * mini.c (mono_method_blittable): Methods which set LastError are not 
21583         blittable either. Fixes #51108.
21584         
21585 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21586
21587         * mini.c: flush icache.
21588         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
21589
21590 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21591
21592         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
21593
21594 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21595
21596         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
21597         safe on IA32.
21598
21599         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
21600         vararg calls.
21601
21602         * inssel.brg (CEE_MKREFANY): Fix AOT case.
21603
21604 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21605
21606         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
21607         instruction when the result is discarded.
21608
21609         * iltests.il (test_0_div_regalloc): New regression test.
21610
21611         * arrays.cs: Fix compilation error.
21612
21613 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
21614
21615         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
21616         float rules to inssel-x86.brg: sane architectures with FP registers
21617         don't need to implement these rules.
21618
21619 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21620
21621         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
21622
21623 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21624
21625         * mini.h, inssel-long32.brg: fixed endianess issues in int64
21626         implementation of 32 bit systems.
21627
21628 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21629
21630         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
21631         (Jeroen Zwartepoorte).
21632
21633 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21634
21635         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
21636         the caller and the callee matches.
21637         
21638         * mini.c (mono_method_to_ir): Add comment.
21639
21640         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
21641         signbit is missing on some platforms.
21642
21643 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21644
21645         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
21646
21647         * mini.c (setup_jit_tls_data): Call the new function.
21648         
21649         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
21650
21651         * mini-x86.c: Add experimental support for fast access to the lmf
21652         structure under NPTL/Linux 2.6.x.
21653
21654 2003-11-06  Martin Baulig  <martin@ximian.com>
21655
21656         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
21657         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
21658         the debugger.
21659
21660 2003-11-02  Martin Baulig  <martin@ximian.com>
21661
21662         * mini.c (inflate_generic_field): New static method.
21663         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
21664         generic instance and the field is declared in a generic type, call
21665         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
21666
21667 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
21668
21669         * mini.h mini.c (mono_method_same_domain): New function to return
21670         whenever the caller and the callee are in the same domain.
21671
21672         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
21673
21674 2003-10-30  Martin Baulig  <martin@ximian.com>
21675
21676         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
21677         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
21678         method parameters.
21679         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
21680         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
21681
21682 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
21683
21684         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
21685         propagation.
21686
21687         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
21688         object here, so it is in the correct appdomain etc.
21689
21690 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
21691
21692         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
21693         already done.
21694         (mono_method_to_ir): Avoid freeing the type created returned from
21695         mono_type_create_from_typespec, since it is put into an internal cache
21696         by the function. Fixes pointer.exe.
21697
21698         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
21699         trampolines for icalls and pinvokes as well. Fixes #33569.
21700
21701 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
21702
21703         * mini.c: Update after appdomain changes.
21704
21705         * mini.c (mono_jit_compile_method_inner): Allways compile native
21706         method wrappers in the root domain, since there can only be one
21707         instance of them, whose address is stored in method->info.
21708
21709 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
21710
21711         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
21712         environment variable. Instead detect automatically whenever running
21713         under valgrind using the magic macro RUNNING_ON_VALGRIND from
21714         valgrind.h.
21715
21716 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
21717
21718         * trace.c, trace.h: New files that implement the new trace option
21719         parsing. 
21720
21721         * driver.c: Document new --trace options.
21722
21723         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
21724         mini-x86.c: Apply:
21725
21726         -       if (mono_jit_trace_calls)
21727         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
21728
21729         * mini.h: prototypes.
21730         
21731 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
21732
21733         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
21734
21735         * mini.c inssel.brg: Implement typedefbyref opcodes.
21736
21737         * mini.c (mono_jit_compile_method): Remove unused local variable.
21738
21739         * mini.c (mono_jit_compile_method_inner): Ditto.
21740         
21741 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
21742
21743         * tramp-x86.c (x86_class_init_trampoline): Fix build.
21744         
21745         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
21746
21747 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21748
21749         * mini.c (mono_no_aot): Remove unused global variable.
21750
21751         * mini.c: Thread safety fixes.
21752
21753 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21754
21755         * mini.c (mono_create_class_init_trampoline): Add a lock around
21756         class_init_hash_addr.
21757
21758         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21759         #30073.
21760
21761         * mini.c: Decompose the NEWARR instruction before decomposing its
21762         arguments. Fixes #30073.
21763
21764 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21765
21766         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21767         convention.
21768
21769 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21770
21771         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21772
21773         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21774
21775         * driver.c: Add support for compiling icall wrappers to --compile.
21776
21777 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21778
21779         * inssel.brg: The empty value in class->interface_offsets is -1, not
21780         0. Fixes #49287.
21781
21782 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21783
21784         * objects.cs: New test for 'is' operator on an array of interfaces.
21785
21786 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21787
21788         * tramp-ppc.c: update trampoline code to support jumps
21789         and class initialization.
21790
21791 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21792
21793         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21794
21795         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21796
21797         * inssel.brg (OP_UNBOX): Remove unused rule.
21798
21799         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21800         region instead of one for each method. Fixes #47813.
21801
21802 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21803
21804         * exceptions.cs (test_0_nested_finally): New regression test for
21805         nested exception handlers.
21806
21807         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21808
21809         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21810
21811         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21812         inlining.
21813
21814         * mini.c (mono_method_check_inlining): Make the inlining limit 
21815         configurable by an environment variable.
21816         
21817         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21818
21819         * mini.h: Bump AOT file version.
21820
21821         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21822         token, store the image along with the token, since the token might not 
21823         refer to the same image as the method containing the relocation, 
21824         because of inlining.
21825
21826 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21827
21828         * mini.c (mono_precompile_assemblies): New function to compile
21829         all methods in all loaded assemblies.
21830
21831         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21832
21833         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21834         iassign and fassign to int*, since they can contain large negative
21835         values if the register is spilled. Also added some comments. Fixes
21836         #45817.
21837
21838         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21839         under Win32. Fixes #42964.
21840
21841 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21842
21843         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21844
21845         * aot.c: Added support for AOT compiling methods which contain calls
21846         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21847         handled.
21848         
21849         * driver.c (compile_all_methods): Run the compilation in a thread
21850         managed by mono. Fixes #44023.
21851
21852         * mini.c (mono_codegen): Print full method name in verbose output.
21853
21854         * mini-x86.c (mono_arch_patch_code): Fix warning.
21855         
21856         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21857         jumps, since the method we are jumping to might be domain-specific.
21858
21859         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21860
21861 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21862
21863         * inssel.brg: string chars are unsigned.
21864
21865 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21866
21867         * TODO: New todo item.
21868
21869         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21870         which calls mono_runtime_class_init and patches the call site to
21871         avoid further calls.
21872         (mono_arch_create_class_init_trampoline): New arch specific function 
21873         to create a class init trampoline.
21874         (create_trampoline_code): Generalized so it can create
21875         class init trampolines as well.
21876
21877         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21878         (mono_create_class_init_trampoline): New function to create and cache
21879         class init trampolines.
21880         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21881         vtable given the address of a class init trampoline. Used by the
21882         patching process.
21883         (mono_codegen): Generate a call to a trampoline instead of
21884         mono_runtime_class_init in LDSFLD[A].
21885         (mono_codegen): Add relocations for the new trampoline.
21886         
21887         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21888         MONO_PATCH_INFO_CLASS_INIT.
21889
21890         * mini.h: Bump AOT version number.
21891
21892         * aot.c: Create a copy of the loaded code instead of using the original
21893         so methods which call each other will be close in memory, improving
21894         cache behaviour.
21895         
21896         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21897         patch since it breaks the regression tests.
21898         
21899         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21900         for the register saving instruction sequence since the 
21901         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21902
21903 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
21904
21905         * TODO: Fix todo item && remove another.
21906
21907 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
21908
21909         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
21910         previous checkin.
21911
21912         * aot.c: Moved the check for MONO_LASTAOT into the initialization
21913         function of the module.
21914
21915         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
21916         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
21917         --no-aot command line option.
21918
21919 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21920
21921         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
21922         by Bernie Solomon (bernard@ugsolutions.com).
21923
21924         * inssel.brg: Refactor the interface offset table related code into
21925         its separate functions and add support for the AOT case.
21926
21927 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21928
21929         * aot.c (mono_aot_get_method_inner): Fix memory leak.
21930         
21931         * aot.c: Added mono_aot_verbose variable and made all debugging
21932         output depend on the value of this variable.
21933
21934         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
21935         method_label and info_label.
21936
21937         * mini.h mini-x86.c aot.c: Added a new relocation type 
21938         MONO_PATCH_INFO_IID for klass->interface_id.
21939
21940         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
21941         the MonoJitInfo structure.
21942
21943         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
21944         a non-root appdomain in shared mode.
21945
21946 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21947
21948         * aot.c: make aot loader less verbose. Remove free of unused variable.
21949
21950 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21951
21952         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
21953
21954         * .cvsignore: Added *.dll.
21955
21956         * mini.c (mono_print_tree_nl): New function callable while debugging.
21957
21958         * mini.c (mono_print_code): Export this.
21959
21960         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
21961         patched code.
21962
21963 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
21964
21965         * mini.h (MonoCompile): Added 'jit_info' field.
21966
21967         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
21968         the cfg structure, since it is needed by the AOT compiler.
21969
21970         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21971
21972         * aot.c: A major rewrite. Changes include:
21973         - save exception tables for methods which have them.
21974         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
21975         to g_module_symbol.
21976         - reworked the file format so it is now much smaller and needs
21977         fewer relocation entries.
21978         
21979 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21980
21981         * aot.c (load_aot_module): Fix build bustage on platforms without
21982         Boehm GC.
21983
21984 2003-09-04  Martin Baulig  <martin@ximian.com>
21985
21986         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
21987
21988 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21989
21990         * TODO: Some new optimization ideas.
21991
21992         * aot.c: Move AOT module loading logic here from mono_assembly_open.
21993
21994         * aot.c: Save the optimization flags used to compile the code into
21995         the AOT module.
21996
21997         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
21998         support emitting domain specific code.
21999         
22000         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
22001         no longer domain neutral. It can be made domain neutral by compiling 
22002         with --optimize=shared.
22003
22004         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
22005         between appdomains.
22006
22007         * driver.c mini.h mini.c: New --no-aot debugging option which disables
22008         loading of AOT code.
22009
22010         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
22011         
22012         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
22013         if there is no domain neutrality information.
22014
22015 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22016
22017         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
22018         format version into the generated library.
22019
22020         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
22021         callee method into the caller since one of them could be shared.
22022
22023         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
22024         system exceptions from AOT code now works.
22025
22026         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
22027         method if it is domain neutral and the callee is not.
22028
22029         * graph.c (cfg_emit_one_loop_level): Fix warning.
22030
22031 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22032
22033         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
22034         last checkin.
22035
22036 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22037
22038         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
22039         is needed  by code which is executed before mono_runtime_init ().
22040         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
22041         
22042         * mini.c (mono_thread_abort): Fix warning.
22043         (mono_jit_compile_method): Call static constructor in the AOT case too.
22044
22045         * aot.c (mono_compile_assembly): Fix warning.
22046
22047 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22048
22049         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
22050
22051 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
22052
22053         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
22054
22055         * cpu-pentium.md: Fix the length of call opcodes so they include the
22056         ESP restoring instruction. Fixes #47968.
22057
22058 2003-08-28  Martin Baulig  <martin@ximian.com>
22059
22060         * mini-x86.c (mono_arch_call_opcode): Added support for
22061         MONO_TYPE_GENERICINST.
22062
22063         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
22064
22065 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22066
22067         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
22068         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
22069
22070         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
22071         metadata_section.
22072
22073 2003-08-26  Martin Baulig  <martin@ximian.com>
22074
22075         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
22076         when reporting an error, set this to the actual error location.
22077         (mono_method_to_ir): Report the correct error location if
22078         get_basic_blocks() returned an error.
22079
22080 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
22081
22082         * mini.c (mono_type_blittable): OBJECT is not blittable.
22083         (mono_method_blittable): Methods which have marshalling descriptors
22084         are not blittable either. Fixes #47842.
22085
22086 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
22087
22088         * driver.c mini.c: Use an environment variable instead of a global 
22089         variable. Also fix the build.
22090
22091         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
22092         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
22093         reporting this. 
22094
22095         * driver.c mini.c: Added --with-valgrind option to turn off some
22096         code which prevents mono from running under valgrind.
22097
22098         * mini.c (mono_emit_call_args): Fixed warning.
22099
22100         * mini.c (mono_emulate_opcode): Fixed warning.
22101
22102 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22103
22104         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
22105         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
22106         regalloc.c, regalloc.h: specify available registers in arch-specific
22107         code and support floats in the regallocator (patch by Laurent Morichetti 
22108         <l_m@pacbell.net>)
22109
22110 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22111
22112         * mini.c: mono_thread_current() can be called only after
22113         mono_runtime_init(): rearrange code to not call it early on.
22114
22115 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22116
22117         * mini.c: allocate jump tables in the code mempools.
22118
22119 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22120
22121         * mini.c, mini.h: make sure per-thread data allocated by the jit is
22122         freed.
22123
22124 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
22125
22126         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
22127         12 to 16.  This fixes bug #47453.
22128
22129
22130 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22131
22132         * mini-ppc.c: fixed indexed load and unsigned compares.
22133
22134 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
22135
22136         * mini.c: reenabled installation of handler for
22137           thread abort signal.
22138
22139 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22140
22141         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
22142         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
22143         until it's fixed and actually useful.
22144
22145 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22146
22147         * inssel-long32.brg: couple more opcodes implemented.
22148
22149 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22150         
22151         * mini-sparc.c: Even more opcodes implemeted.
22152
22153 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
22154
22155         * mini-sparc.c: More opcodes implemented.
22156
22157 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
22158
22159         * mini-sparc.c: More opcodes implemented.
22160
22161 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22162
22163         * inssel-sparc.brg: Add some needed rules.  Direct
22164         copy from PPC.
22165         * Makefile.am: Use inssel-sparc.brg
22166         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
22167         an assert happy for now.
22168
22169 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
22170
22171         * mini-sparc.c: Fixed compile errors.
22172         * exceptions-sparc.c: Same.  We now produce a mono binary 
22173         on sparc-linux.  Yea.
22174
22175 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
22176
22177         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
22178         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
22179         They compile, but do not work.
22180
22181 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22182
22183         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
22184         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
22185         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
22186         (ct@gentoo.org).
22187
22188 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22189
22190         * mini.c: more opcodes implemented and better support for generics.
22191
22192 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22193
22194         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
22195         * mini.c, mini.h: first cut at generics support: some new instructions 
22196         added and changed the behaviour of some of the existing ones.
22197
22198 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22199
22200         * mini.c: Removed definition of metadata_shared mutex here.
22201
22202 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22203
22204         * mini-x86.c: make vararg calls work for instance methods.
22205
22206 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22207
22208         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22209         returns the arguments in a separte list, now.
22210
22211 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22212
22213         * aot.c, mini.c: updates for array type representation changes.
22214
22215 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22216
22217         * mini.c: register function to perform jit shutdown.
22218
22219 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22220
22221         * mini.c: use a faster allocator if possible.
22222
22223 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22224
22225         * aot.c: some cleanups and portability changes.
22226
22227 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22228
22229         * mini.c: use faster allocation for CEE_BOX if possible.
22230
22231 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22232
22233         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22234         Moved inlined mempcy code to its own function so that is can be
22235         reused. Added an inline memset function as well (optimized initobj).
22236         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22237
22238 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22239
22240         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
22241
22242 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22243
22244         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
22245         arch code can setup the cpu for CLR execution, if needed.
22246         We use it on x86 to set the precision of FP operations.
22247
22248 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22249
22250         * mini.c: disable some optimizations if we can guess they'll cost too
22251         much for a given method.
22252
22253 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22254
22255         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
22256         
22257 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22258         * mini.h mini.c mini-x86.c: Added instruction level coverage 
22259         info collection support.
22260
22261 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22262
22263         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
22264         is now implemented in the profiling API. Get rid of a couple of
22265         unnecessary global variables.
22266
22267 2003-06-15  Nick Drochak <ndrochak@gol.com>
22268
22269         * basic-long.cs: tests for negative values for bigmul, and unsigned.
22270         * cpu-g4.md: add op_bigmul and op_bigmul_un
22271         * cpu_pentium.md: add op_bigmul_un
22272         * inssel-long32.brg: add rule for unsigned bigmul
22273         * mini-ops.h: define OP_BIGMUL_UN
22274         * mini-x86.c: THE BUG: handle (un)signed properly
22275         * mini.c: choose unsigned opcode if needed.
22276         This set of patches fixes bug #44291
22277
22278 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
22279
22280         * mini.c (optimize_branches): improved to handle all kinds of
22281         conditional branches.
22282
22283 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22284
22285         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
22286         don't raise exceptions.
22287
22288 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22289
22290         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
22291         to arch-specific files.
22292
22293 2003-06-09  Martin Baulig  <martin@ximian.com>
22294
22295         * Makefile.am (libs): Added $(LIBGC_LIBS).
22296
22297 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
22298
22299         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
22300         and OP_ATAN (fixes bug#44293).
22301
22302 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
22303
22304         * Makefile.am, mini-x86.c: rename cpu description array to
22305         pentium_desc, since some compilers define the 'pentium' preprocessor
22306         symbol.
22307
22308 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
22309
22310         * mini.c (mini_select_instructions): add explicit branch if the
22311         following block is not the false target of a conditional branch -
22312         we need this with any optimization that reorder or remove bblocks
22313
22314         * mini.c (optimize_branches): bug fixes
22315
22316 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
22317
22318         * mini.c (mono_method_to_ir): inline static readonly fields
22319
22320         * ssa.c (fold_tree): start cfold support for long (very simple
22321         cases only)
22322
22323         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
22324
22325 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22326
22327         * inssel.brg: fixed memcpy (bug #44219).
22328
22329 2003-06-05  Dick Porter  <dick@ximian.com>
22330
22331         * driver.c: Set the glib log levels to not abort if g_message
22332         recurses.
22333
22334         g_set_prgname() has to happen before mini_init() so that the
22335         process handle gets the info.
22336         
22337 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22338
22339         * driver.c: add intrins to the default optimizations to get wider
22340         exposure.
22341
22342 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22343
22344         * mini.h: some large basic blocks will overflow a 16-bit
22345         integers for symbolic registers.
22346
22347 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22348
22349         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
22350         (mono_arch_output_basic_block): fix bug 43499 
22351
22352 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22353
22354         * mini.c: kill duplicated definition of mono_debug_format.
22355
22356 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22357
22358         * mini-x86.c, arrays.cs: fixed register allocation bug.
22359
22360 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22361
22362         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
22363
22364         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
22365
22366 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22367
22368         * mini.c:
22369         (print_method_from_ip): also print source location information if
22370         available.
22371
22372 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
22373
22374         * mini.c (mono_find_block_region): bug fix in region code
22375         (mini_method_compile): enable removing unreachable code again, but
22376         only in methods without exception clauses.
22377
22378 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22379
22380         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
22381         Implemented arglist opcode and handling of TypedReference type.
22382         Fixed x86 call convention when a structure is returned.
22383         Minimal support for calling static vararg methods.
22384
22385 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
22386
22387         * mini.c (mini_method_compile):  always remove unreachable code,
22388         because the code in them may be inconsistent  (access to dead
22389         variables for example).
22390
22391 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22392
22393         * driver.c, debug-mini.c: warning fixes.
22394
22395 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22396
22397         * Makefile.am, jit.h, mini.h: install header for embedding mono.
22398
22399 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
22400
22401         * mini.c: thread-static fields are registered in mono_class_vtable(),
22402         so ensure the function is called before checking for them.
22403
22404 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
22405
22406         * mini.c (optimize_branches): fix for bug 43586
22407
22408         * jit-icalls.c (mono_llmult_ovf): added an additional check for
22409         overflow (fixes Bug #43639)
22410
22411 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22412
22413         * mini.c, objects.cs: allow the use of stobj for primitive types.
22414
22415 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22416
22417         * mini.c: be less strict about argument checking until we support
22418         running the verifier.
22419
22420 2003-05-27  Nick Drochak <ndrochak@gol.com>
22421
22422         * basic-long.cs: tests for (ulong)int * (ulong)int also
22423         * mini.c: use the same trick for (ulong)int * (ulong)int
22424
22425 2003-05-27  Nick Drochak <ndrochak@gol.com>
22426
22427         * basic-long.cs: add regression test for (long)int * (long)int
22428         * cpu-pentium.md: add op_bigmul specification
22429         * inssel-long32.brg: add OP_BIGMUL rule
22430         * mini-ops.h: add OP_BIGMUL
22431         * mini-x86.c: register allocator: handle case where src1 needs to be
22432         in EAX.
22433         * mini.c: substitute special BIGMUL opcode in the tree for 
22434         (long)int * (long)int
22435
22436 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22437
22438         * jit-icalls.c: call the type ctor on field access if needed.
22439
22440 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22441
22442         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
22443         to a method (including results of ldelema, bug#43207).
22444
22445 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
22446
22447         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
22448         colors to show exception handler blocks.
22449
22450         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
22451         (fix for pinvoke7.cs).
22452
22453 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22454
22455         * mini.h, mini.c: ensure correct initialization order for types that
22456         require it. Prepare for lazy compilation of jit icall wrappers.
22457         Provide a name for opcode emulation to reduce unneeded mallocing.
22458
22459 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22460
22461         * mini-x86.c: better register restoring code and profiling
22462         support for tail calls.
22463
22464 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22465
22466         * mini.h, driver.c: prepare for leaf methods optimization.
22467
22468 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22469
22470         * mini.c: get targets of branches before converting a method.
22471
22472 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
22473
22474         * mini.c (optimize_branches): added some experimental code (disbaled) 
22475
22476 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
22477
22478         * mini.c (optimize_branches): fix branch to branch optimization 
22479
22480         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
22481
22482         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
22483
22484         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
22485
22486         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
22487         if needed.
22488
22489 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
22490
22491         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
22492         enable use of interface variables again.
22493
22494         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
22495         I1 to registers because there is no simply way to sign extend 8bit
22496         quantities in caller saved registers on x86.
22497
22498         * inssel-float.brg: set costs of some rules to 2 so
22499         that monobure always select the arch. specific ones if supplied,
22500         regardless of the order we pass the files to monoburg.
22501
22502 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22503
22504         * mini.c, mini-x86.c: since the magic trampoline for jumps
22505         can't patch the code directly, we do it as soon as the
22506         method gets compiled.
22507
22508 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22509
22510         * mini-x86.c, mini.h: introduce a new patching method
22511         to support CEE_JMP and tail calls.
22512         * mini.c: obey tail.call. Don't precompile methods target
22513         of CEE_JMP.
22514         * tramp-x86.c: new trampoline code to handle methods
22515         reached through a jump.
22516
22517 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
22518
22519         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
22520         bit values to registers
22521
22522 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
22523
22524         * mini.c (mono_compile_get_interface_var): share interface
22525         variables if possible.
22526
22527 2003-05-16  Martin Baulig  <martin@ximian.com>
22528
22529         * debug-mini.c (mono_init_debugger): New function to initialize
22530         the debugger.  This is not in the debugger since it needs to
22531         access some of mini's internals.
22532
22533 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22534
22535         * mini.c (mono_method_to_ir): inlining fixes/cleanups
22536
22537 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
22538
22539         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
22540         for value type handling.
22541
22542 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22543
22544         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
22545         (mono_method_check_inlining): enable inlining of all kinds of wrappers
22546
22547 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
22548
22549         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
22550           the constructor through a proxy.
22551
22552 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22553
22554         * jit-icalls.c, inssel.brg: fixes to array element address
22555         calculations.
22556
22557 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
22558
22559         * mini-x86.c (is_regsize_var): allocate pointer to registers
22560
22561 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22562
22563         * driver.c: fixed typo, added intrins to the set of optimizations
22564         tested with regressions.
22565
22566 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22567
22568         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
22569         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
22570         test case.
22571
22572 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
22573
22574         * inssel.brg: remove some common pop instructions without side effects
22575
22576 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22577
22578         * inssel-x86.brg: fixed thinko in int to double conversions.
22579
22580 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22581
22582         * mini.c, jit-icalls.c: added runtime thread-static variable support.
22583
22584 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22585
22586         * inssel-long32.brg: two more missing instructions.
22587
22588 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
22589
22590         * mini.c (mono_emit_call_args): set the cil_code for all arguments
22591         if not already set.
22592
22593 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
22594
22595         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
22596         correctly.
22597
22598         * basic-float.cs: Added tests for negative zero.
22599
22600 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22601
22602         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
22603         a couple of missing operations for long casts, with test cases.
22604
22605 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22606
22607         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
22608
22609 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
22610
22611         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
22612         code size estimation.
22613
22614 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
22615
22616         * mini.c (mono_jit_create_remoting_trampoline): make it work with
22617         abstract methods (fix bug 42542)
22618
22619         * aot.c: add ability to handle array types
22620         
22621 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
22622
22623         * mini.c: Call the _specific versions of the object allocation
22624         functions if possible.
22625
22626 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22627
22628         * driver.c: call setlocale ().
22629
22630 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22631
22632         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
22633         windows build.
22634
22635 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
22636
22637         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
22638
22639         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
22640         wrappers (fix bug 42122)
22641
22642 2003-05-04  Martin Baulig  <martin@ximian.com>
22643
22644         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
22645
22646         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
22647         s/mini_set_defaults/mono_set_defaults/g.
22648
22649 2003-05-04  Martin Baulig  <martin@ximian.com>
22650
22651         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
22652
22653 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22654
22655         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
22656         (reported by Don Roberts).
22657
22658 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22659
22660         * mini.c: temporarily work around two bugs for this release.
22661
22662 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22663
22664         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
22665         that contains -export-dynamic and it makes using the ld script
22666         useless.
22667         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
22668
22669 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22670
22671         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
22672         specific cpu.
22673
22674 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22675
22676         * mini.c: make sure leave calls all the needed finally blocks,
22677         even when the target jumps out of multiple exception clauses.
22678
22679 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22680
22681         * ldscript, Makefile.am: add linker script to reduce the number of
22682         exported symbols (should also fix the issues with libwine defining
22683         some of the same symbols in io-layer).
22684
22685 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
22686
22687         * driver.c (mini_main): Avoid assertion when no file name is given on 
22688         the command line.
22689
22690 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
22691
22692         * driver.c: added --version/-V command line option.
22693         Added the inline optimization in the regression tests.
22694
22695 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22696
22697         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
22698         to the type in the method signature (fixes bug#42134).
22699
22700 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
22701
22702         * mini.c: when inlining, check this is not null only when needed (bug #42135).
22703
22704 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
22705
22706         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
22707
22708 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22709
22710         * driver.c: fixed bug #42100.
22711
22712 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22713
22714         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
22715
22716 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22717
22718         * mini.c: moved most of the code required to do inlining to its own
22719         function so it can be reused. Inline also ctors if appropriate.
22720
22721 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22722
22723         * Makefile.am: Link with -export-dynamic so shared libs loaded by
22724         the runtime can call mono API functions.
22725
22726 2003-04-27  Martin Baulig  <martin@ximian.com>
22727
22728         * debug-mini.c (mono_debug_init_method): Added
22729         `guint32 breakpoint_id' argument; if the method has a breakpoint,
22730         send a notification to the debugger.
22731
22732         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
22733         running in the Mono Debugger, just pass the breakpoint number to
22734         mono_debug_init_method().
22735
22736         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
22737
22738 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
22739
22740         * mini.c: allow some more unsafe compares.
22741
22742 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22743
22744         * mini-x86.c, Makefile.am: make distcheck works (partially from
22745         a patch by Richard Lee <r.h.lee@attbi.com>).
22746         * regset.c, regset.h: removed, they are unused.
22747
22748 2003-04-25  Dick Porter  <dick@ximian.com>
22749
22750         * driver.c: Usage reports the name as 'mono' not 'mini'
22751         * exceptions-x86.c: Build and run on freebsd
22752
22753 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22754
22755         * Makefile.am: install the program with the 'mono' name and
22756         the library as libmono instead of mini and libmini.
22757
22758 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22759
22760         * driver.c: provide the APIs for the embedding interface of the old jit.
22761
22762 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22763
22764         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22765
22766 2003-04-23  Martin Baulig  <martin@ximian.com>
22767
22768         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22769
22770         * driver.c: Added `--debug' command line argument to enable
22771         debugging support.
22772
22773 2003-04-23  Martin Baulig  <martin@ximian.com>
22774
22775         * debug.[ch]: Removed.  The code is now in
22776         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22777
22778         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22779         last six months.
22780
22781 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22782
22783         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22784
22785 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22786
22787         * mini.c:
22788         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22789         mono_domain_finalize.
22790         (mini_method_compile): use mono_method_profile* if the the option is
22791         enabled.
22792
22793 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22794
22795         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22796         methods with their wrapper.
22797
22798         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22799         methods with their wrapper.
22800
22801         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22802         their wrapper.
22803
22804         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22805         wrapper.
22806
22807         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22808         methods.
22809
22810 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22811
22812         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22813
22814 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22815
22816         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22817         of the mempool. This is slightly faster and uses less memory
22818
22819 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22820
22821         * mini.c: avoid O(n) allocation for variables.
22822
22823 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22824
22825         * mini.c: handle items on the stack after inlining methods.
22826
22827 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22828
22829         * mini.c: make the method->opcode optimization dependent
22830         on MONO_OPT_INSTRINS and do it lazily.
22831
22832 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22833
22834         * driver.c: print overall results at the end of regression run.
22835
22836 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22837
22838         * inssel.brg: don't overwrite symbolic registers.
22839
22840 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22841
22842         * inssel-x86.brg: fix conversion from long to float.
22843
22844 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22845
22846         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22847
22848 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22849
22850         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22851
22852         * driver.c: Added --print-vtable option as in the old JIT.
22853
22854 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22855
22856         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22857
22858 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22859
22860         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22861
22862 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22863
22864         * mini.c regalloc.c regalloc.h: Fix memory leak.
22865
22866 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22867
22868         * aot.c (mono_aot_get_method): register all used strings
22869
22870 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22871
22872         * mini.c: always intern strings references with ldstr at compile time.
22873
22874 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22875
22876         * Makefile.am: add BUILT_SOURCES.
22877
22878 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22879
22880         * driver.c: give a better error message when the assembly to execute
22881         doesn't have an entry point.
22882
22883 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22884
22885         * Makefile.am: added hack for automake
22886
22887         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22888         correct sematics.
22889
22890         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22891
22892 22003-04-07  Martin Baulig  <martin@ximian.com>
22893
22894         * Makefile.am: Added Makefile.am.
22895
22896         * debugger-main.c: Removed, this is now in the debugger where it
22897         belongs.
22898
22899         * mini.pc.in: Call this package `mini' for the moment.
22900
22901
22902
22903
22904
22905
22906
22907
22908
22909
22910
22911
22912
22913
22914