2010-06-15 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
2
3         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
4         these trampolines.
5
6         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
7
8         * mini-llvm.c: Fix compilation with llvm 2.6.
9
10         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
11         (get_call_info): Don't place the vret arg second when using varargs, since the
12         sig cookie could come before it.
13
14         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
15         defined.
16
17         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
18         is always passed as the first argument, before the vtype ret arg. This simplifies
19         get_this_arg_reg () and LLVM integration.
20
21 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
22
23         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
24
25         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
26         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
27         translate into much nicer code.
28
29 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
30
31         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
32         parameter index information. Use this to simplify a lot of code.
33
34         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
35
36 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
37
38         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
39         to fix infinite generic recursion. Fixes #612702.
40
41 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
42
43         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
44         imt trampoline per imt slot when using LLVM.
45
46 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
47
48         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
49
50 2010-06-09  Levi Bard  <levi@unity3d.com>
51
52         * debugger-agent.c: Clear unloaded types on appdomain unload.
53
54 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
55
56         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
57         Fixes #612206.
58
59         * exceptions.cs: Add a test.
60
61 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
62
63         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
64
65         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
66
67         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
68         so it doesn't have to do it.
69
70         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
71         process does not mix with ours.
72
73         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
74         ones.
75
76         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
77         loads/stores which can throw exceptions inside clauses.
78
79 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
80
81         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
82         one ENDFINALLY.
83
84         * mini.c (mini_init): Register mono_resume_unwind as an icall.
85
86 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
87
88         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
89
90         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
91         locals.
92
93 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
94
95         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
96         appdomain.
97
98 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
99
100         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
101         Use a separate generic class init trampoline for llvm, since it needs a different
102         signature.
103
104         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
105         includes the location of this/rgctx.
106
107         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
108         branch.
109
110 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
111
112         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
113
114         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
115         clause.
116
117 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
118
119         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
120         says so.
121
122         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
123
124         * aot-compiler.c (patch_to_string): New debugging helper function.
125
126 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
127
128         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
129         trampoline.
130
131         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
132
133         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
134
135         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
136
137         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
138         clauses.
139
140         * mini.c (create_jit_info): Print EH clause info for LLVM too.
141
142 2010-05-28  Mark Probst  <mark.probst@gmail.com>
143
144         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
145         cpobj with reference types.
146
147 2010-05-28  Mark Probst  <mark.probst@gmail.com>
148
149         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
150         write barrier for reference types.
151
152 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
153
154         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
155         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
156
157 2010-05-31  Martin Baulig  <martin@ximian.com>
158
159         Fix #608271.
160
161         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
162         clear_breakpoint() on all breakpoint events and remove them from the list.
163
164 2010-05-27  Martin Baulig  <martin@ximian.com>
165
166         Fix #605698.
167
168         * debugger-agent.c (method_commands, type_commands): Temporarily
169         set the appdomain while executing this method; do all metadata
170         calls in the debuggee's appdomain where user assemblies are loaded.
171
172 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
173
174         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
175
176 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
179
180 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
181
182         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
183         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
184         be referenced even after the header is freed.
185
186         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
187         section.
188
189 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
190
191 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
192
193         * genmdesc.c (main): Fixing the detection of the nacl switch.
194
195         Code is contributed under MIT/X11 license.
196
197 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
198
199         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
200
201         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
202
203         * mini.h (LLVM_CHECK_VERSION): New helper macro.
204
205 2010-05-25  Miguel de Icaza  <miguel@novell.com>
206
207         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
208         the Perl program
209
210         * genmdesc.c: Added support for nacl: key on the machine
211         description files to support the extra space required by Google
212         Native Client.
213
214 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
215
216         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
217
218 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
219
220         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
221         mono_runtime_class_init_full ().
222         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
223
224 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
225
226         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
227
228 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
229
230         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
231         two are not the same on ilp32.
232
233 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
234
235         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
236         added by mistake.
237
238         * mini-ppc.c: Fix the DISABLE_JIT build.
239
240 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
241
242         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
243         (make_writable): Remove this unused function.
244
245 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
246
247         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
248         structure. Make the labels to plt entries local symbols instead of assembler local
249         labels, since tha latter causes problems for the iphone linker.
250
251 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
252
253         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
254
255 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
256
257         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
258         (ppc_patch_full): Ditto.
259
260         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
261
262         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
263         if gshared is enabled, to avoid asserts in the trampoline code.
264
265         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
266         on ia64.
267
268 2010-05-15  Geoff Norton  <gnorton@novell.com>
269
270         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
271         xdebug mode.
272
273 2010-05-14  Geoff Norton  <gnorton@novell.com>
274
275         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
276         misaligned stack on darwin.
277
278 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
279
280         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
281         arm.
282
283 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
284
285         * xdebug.c: Fix ARM support.
286
287 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
288
289         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
290         and do most of the work on the normal stack.
291         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
292
293 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
294
295         * aot-compiler.c: Put non-code data into the .rodata section on linux.
296
297 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
298
299         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
300
301 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
302
303         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
304         and do most of the work on the normal stack.
305
306 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
307
308         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
309         and do most of the work on the normal stack even if sigaltstack is disabled.
310
311 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
312
313         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
314         UCONTEXT_REG_ constants are available on linux as well.
315         (mono_arch_monoctx_to_sigctx): Ditto.
316         (mono_arch_ip_from_context): Ditto.
317
318 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
319
320         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
321         other domains.
322
323 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
324
325         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
326         no longer needed.
327
328 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
329
330         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
331         if a breakpoint cannot be inserted.
332
333 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
334
335         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
336
337 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
338
339         * debugger-agent.c (frame_commands): Return an error instead of asserting if
340         no JIT info is found for the method.
341
342 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
343
344         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
345         in debug printf.
346
347 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
348
349         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
350         a list of arch specific trampolines.
351
352         * aot-compiler.c (emit_trampolines): Use it.
353
354 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
355
356         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
357         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
358         get rid of the _full from their name.
359
360 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
361
362         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
363         get_nullified_class_init_trampoline to remove some code duplication.
364
365 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
366
367         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
368         attach.
369
370 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
371
372         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
373
374         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
375
376         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
377         there is no need to jump through the first plt entry.
378
379         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
380
381         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
382         arch-specific function.
383         (mono_aot_get_plt_info_offset): Ditto.
384
385         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
386         mono_arch_init () to register jit icalls called from full-aot trampolines.
387         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
388         to mini-<ARCH>.c.
389
390         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
391         the specialized throw corlib exception trampoline, use a variant of the normal
392         trampoline along with a new C function which does the call to
393         mono_exception_from_token (), just like on x86.
394
395 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
396
397         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
398         Reorganize the full aot trampoline creation functions, instead of taking a bunch
399         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
400         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
401         creation functions on architectures which have the full-aot ones.
402
403 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
404
405         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
406
407 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
408
409         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
410         explicitly, this seems to be required by some gcc versions at -O2.
411
412         * mini-arm.c: Ditto.
413
414 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
415
416         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
417         has_target delegate invokes.
418
419 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
420
421         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
422         info fields.
423
424         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
425         add patches/unwind info arguments, move to mini.c.
426
427         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
428
429 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
430
431         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
432         command which returns full path names.
433
434 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
435
436         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
437         code_size output variable.
438
439         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
440         mono_get_lmf_addr.
441         
442 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
443
444         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
445         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
446         (mono_arch_cpu_enumerate_simd_versions): Ditto.
447
448 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
449
450         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
451         apple assembler.
452
453 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
454
455         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
456
457 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
458
459         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
460
461 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
462
463         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
464
465 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
466
467         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
468         line number support works with eglib.
469
470 2010-04-27  Miguel de Icaza  <miguel@novell.com>
471
472         * driver.c, mini.c: Since linking with LLVM makes the default Mono
473         dirty an extra 70kb pages on startup we are now going to choose a
474         different strategy: ship mono and mono-llvm binaries, with the
475         second being the one that links with LLVM and defaults to LLVM
476         being enabled.
477
478 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
479
480         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
481         Implement full-aot support on x86.
482
483         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
484         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
485         the first register returned by get_global_int_regs ().
486
487         * cpu-x86.md: Fix the length of insertx_u1_slow.
488
489         * iltests.il.in: Disable tail call tests when running with full-aot.
490
491 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
492
493         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
494
495 2010-04-24  Mark Probst  <mark.probst@gmail.com>
496
497         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
498         in the initializer, because it's non-constant.
499
500 2010-04-23  Miguel de Icaza  <miguel@novell.com>
501
502         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
503         of LLVM on by default.   Used for buildbots and other setups.
504
505 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
506
507         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
508
509 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
510
511         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
512         initonly static fields when using moving GC.
513
514         Contributed under MIT/X11 license.
515
516 2010-04-23  Geoff Norton  <gnorton@novell.com>
517
518         * mini-amd64.h: Darwin x86_64 support.
519
520 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
521
522         * exceptions-arm.c: Remove platform checks in favor of configure checks.
523
524 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
525
526         * exceptions-arm.c: Add Android support for sigcontext structure.
527
528 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
529
530         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
531         wrappers correctly now that their wrapper info is NULL.
532
533 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
534
535         * mini.c (mono_jit_compile_method_inner): Avoid calling
536         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
537
538 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
539
540         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
541         so the latter can be #ifndef DISABLE_JIT-ed.
542
543         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
544
545 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
546
547         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
548
549 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
550
551         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
552         stack.
553
554 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
555
556         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
557         calling mono_class_num_methods (). Fixes #592244.
558
559 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
560
561         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
562
563         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
564
565 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
566
567         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
568         version.
569         * (handle_alloc): Ditto.
570         (mono_method_to_ir): Remove the constrained call restriction added by a previous
571         change, its not needed anymore.
572
573 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
574
575         * mini-posix.c (sigusr1_signal_handler): Fix build on
576         non x86/amd64 systems.
577
578 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
579
580         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
581         calls where the constrained class needs a context. Fixes #595863.
582
583         * iltests.il.in: Add a test.
584
585 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
586
587         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
588         2.6/SVN seems to have broken support for them.
589
590 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
591
592         * mini-llvm.c: Fix support for LLVM 2.6.
593
594 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
595
596         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
597         MonoInternalThread belonging to the thread.
598
599 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
600
601         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
602         unsafe optimization that will remove bound checks.
603
604 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
605
606         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
607         CompareExchange not to be inlined for I8.
608
609         Contributed under MIT/X11 license.
610
611 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
612
613         * array.cs: Add tests for cast between primitive array types.
614
615 2010-04-07 Andreia Gaita  <avidigal@novell.com>
616
617         * Makefile.am: create a convenience library for moon to link with
618
619 2010-04-07 Paolo Molaro <lupus@ximian.com>
620
621         * method-to-ir.c: optimize array accesses from generic interfaces.
622
623 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
624
625         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
626
627 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
628
629         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
630         of marshalbyref classes.
631
632         Fixes #515884.
633
634 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
635
636         * aot-compiler.c (emit_exception_debug_info): Encode try holes
637         information.
638
639         * aot-runtime.c (decode_exception_debug_info): Decode try holes
640         information.
641
642         * mini.h: Increase AOT version.
643
644 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
645
646         * mini-x86.h: Only enable soft debugger when using sigaction or on
647         Windows. Fixes build on Haiku (lacks siginfo_t).
648
649         Code is contributed under MIT/X11 license.
650
651 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
652
653         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
654         BeOS-style signal handlers.
655
656         Code is contributed under MIT/X11 license.
657         
658 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
659
660         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
661
662 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
663
664         * mini-exceptions.c: Fix win32 build.
665
666 2010-04-01  Mark Probst  <mark.probst@gmail.com>
667
668         * mini.c, driver.c: Call mono_gc_base_init() before
669         mono_debug_init().
670
671 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
672
673         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
674         call_method]): Delegate the actual work in security-core-clr.c
675         to ease code sharing.
676
677 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
678
679         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
680         float conv.ovf.un opcodes are encountered, instead of asserting later.
681         Fixes #566296.
682
683 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
684
685         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
686
687         * iltests.il.in: Add a test.
688
689 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
690
691         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
692         large. Fixes #567040.
693
694         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
695
696 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
697
698         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
699         #592711.
700
701 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
702
703         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
704         mono_create_handler_block_trampoline with the proper #ifdef so that it
705         compiles on amd64.
706
707 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
708
709         * mini-exceptions.c: Introduce mono_walk_stack_full, which
710         allows to select if it's new or old context that is passed to 
711         the callback.
712
713         * mini-exceptions.c (mono_handle_exception_internal): Handle the
714         case when executing a guarded handler from the EH machinery.
715
716         * mini-exceptions.c (mono_install_handler_block_guard): New function
717         responsible for checking for handler blocks, installing the guard and
718         clearing abort state.
719
720         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
721         to check for handler blocks and skip interruption logic if one was found.
722
723         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
724         by the handler block guard trampoline. Resumes interruption by raising the
725         pending ThreadAbortException.
726
727         * mini.c (create_jit_info): Calculate the end address of a finally block.
728
729         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
730         of a finally block to a specified address and return the old one.
731
732         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
733         trampoline patches the original return address and calls the trampoline function.
734
735 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
736
737         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
738
739         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
740         does the patching if the callee is in the same domain.
741
742         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
743         of mono_arch_patch_plt_entry ().
744
745 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
746
747         * mini.c (create_jit_info): Fix try block hole length encoding.
748
749 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
750
751         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
752         duplicate information and print offsets instead of absolute addresses.
753
754 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
755
756         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
757         event is sent. Fixes #591733.
758
759 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
760
761         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
762         OpenBSD.
763
764 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
765
766         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
767         thread_to_tls hash table.
768
769         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
770         section. Fixes #591000.
771
772 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
773
774         * Makefile.am (version.h): Check for pure .git directory only,
775         fixes SVN revision when using git without git-svn.
776
777         Contributed under MIT/X11 license.
778
779 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
780
781         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
782
783 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
784
785         * basic-simd.cs: Test for vector x scalar binary operators.
786
787 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
788
789         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
790         intrinsics with expanded scalar arguments.
791
792 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
793
794         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
795         don't have an exception class, so don't decode it. This would crash
796         with filter clauses.
797
798 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
799
800         Make sure that trunk builds with DISABLE_JIT, an update to the
801         PlayStation 3 port.
802         
803         * mini.c (mini_get_shared_method): this code seems to be necessary
804         regardless of whether DISABLE_JIT has been defined.
805
806         (mono_jit_compile_method_inner): it seems that this method is
807         required even in full AOT mode, so ifdef out only the pieces that
808         try to genrate code (the body of code that applies patches to the
809         code).  
810
811         (mini_method_compile): do not compile when using DISABLE_JIT.
812
813         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
814         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
815         compile when DISABLE_JIT is set.
816
817 2010-03-24  Mark Probst  <mark.probst@gmail.com>
818
819         * mini.c (mono_create_tls_get): Only create a TLS operation if the
820         arch really supports it.
821
822 2010-03-24  Mark Probst  <mark.probst@gmail.com>
823
824         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
825
826 2010-03-23  Neale Ferguson <neale@sinenomine.net>
827
828         * exceptions-s390x.c: Add support for
829         mono_arch_get_throw_corlib_exception and fix throw by name.
830
831         * mini-s390x.c: Add IMT support; Fix stack parameter passing
832         logic (especially for varargs); Correct localloc sizing; Add
833         mono_arch_get_this_arg_from_call and
834         mono_arch_get_this_arg_from_call.
835
836         * mini-s390x.h: Add support for facility list extraction;
837         Correct/update MONO_ARCH_xxx settings.
838
839         * mini-s390.c: Minor corrections to instruction output for
840         varargs. No IMT implementation - I think it's time to deprecate
841         s390 and just leave s390x.
842
843         * tramp-s390x.c: Correct creation of trampoline instruction
844
845
846         * cpu-s390x.md: Update some instruction lengths
847
848 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
849
850         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
851         can be hit with partial sharing.
852
853         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
854         in non-shared classes correctly.
855         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
856         Turn on partial sharing.
857
858 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
859
860         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
861         by mistake.
862
863 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
864
865         * method-to-ir.c (mono_method_to_ir): Handle the failure of
866         mono_method_signature ().
867
868         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
869
870         * mini.c (mini_method_compile): Get the signature of cfg->method early with
871         error checking, so later calls do not need error checking.
872
873 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
874
875         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
876
877         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
878
879 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
880
881         * mini-exceptions.c (mono_handle_exception_internal): Don't
882         check try_end for archs different than s390. 
883
884         * mini.c (create_jit_info): Don't crash if the finallt block is the
885         last one.
886
887 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
888
889         * driver.c (mono_main): Don't free global codeman under linux since
890         glic now peeks at code on stack for more archs than just amd64.
891
892 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
893
894         * mini.c, method-to-ir.c: changes to support compressed interface
895         bitmaps.
896
897 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
898
899         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
900         Use sigaction on OpenBSD too.
901
902 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
903
904         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
905
906 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
907
908         * debugger-agent.c: #include sys/select.h for fd_set.
909
910         Code is contributed under MIT/X11 license.
911
912 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
913
914         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
915         (openbsd+amd64 ?).
916
917 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
920         some large methods with lots of exception handlers. Fixes #440924.
921
922 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
923
924         * method-to-ir.c: remove code duplication for interface checks.
925
926 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
927
928         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
929         (assembly_unload): Clear all event requests referencing the to-be unloaded
930         assembly.
931
932
933 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
934
935         * mini.h, mini-exceptions.c: restore the state of the stack
936         guard page permissions.
937
938 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
939
940         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
941         call site patching code, it doesn't appear to be needed.
942
943 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
944
945         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
946         sharing generic methods whose type arguments are a mix of reference and
947         non-reference types. Not yet turned on.
948
949         * mini.c (mini_get_shared_method): New helper function to return
950         the method which will be compiled/registered in the JIT tables when doing
951         generic sharing.
952         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
953         use mini_get_shared_method ().
954
955         * mini.c (mini_method_compile): Register the same method which is compiled when
956         doing generic sharing.
957
958         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
959
960         * generics.cs: Add partial sharing tests.
961
962 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
963
964         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
965                    Add an enum value that or's all possable values together. Add an enum value
966                    that marks the end of the used bit indexes.
967
968         * mini-amd64.c : Make changes to match the changes in mini.h 
969
970         * mini-x86.c : Make changes to match the changes in mini.h
971
972         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
973                    simd_version to support more simd versions. Changed the name of
974                    simd_version to simd_version_flags to make it more intuitive that
975                    it now contains bit flags. Reordered the *_intrinsics arrays to
976                    match the changes above. Changed emit_intrinsics() to use the new
977                    setup mentioned above.
978
979         Code is contributed under MIT/X11 license.
980
981 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
982
983         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
984         remaining archs. Alpha and hppa maintainers, please stand up.
985
986 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
987
988         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
989         is needed even when fail_tramp!=NULL.
990
991 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
992
993         * debugger-agent.c (insert_breakpoint): Write a log message.
994
995 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
996
997         * iltests.il.in: Add a few tests for LEAVE going over multiple
998         finally clauses.
999
1000 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1001
1002          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1003
1004 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1005
1006         * mini.h (MonoBasicBlock): Add native_length field.
1007         * mini.h (MonoCompile): Add try_block_holes field.
1008         * mini.h (MonoInst): Add exception_clause pointer to
1009         the data union.
1010
1011         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1012         * mini.c (mono_cfg_add_try_hole): New function to register possible
1013         holes in try blocks.
1014         * mini.c (create_jit_info): Fill in the holes information.
1015
1016         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1017         by a try block.
1018
1019         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1020
1021 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1022
1023         * jit-icalls.c: adjusted for the array API changes.
1024
1025 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1028
1029 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1032         the 'pending' flag. This fixes support for appdomains too.
1033
1034
1035 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1036
1037         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1038
1039 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1042         when using LLVM, LLVM generates it itself when needed.
1043
1044         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1045
1046         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1047         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1048         OP_ANDNPS/OP_ANDNPD.
1049
1050 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1051
1052         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1053         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1054         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1055
1056 2010-03-11  Martin Baulig  <martin@ximian.com>
1057
1058         * debugger-agent.c (type_commands): Add NULL check to
1059         `CMD_TYPE_GET_SOURCE_FILES'.
1060
1061 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1062
1063         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1064
1065 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1066
1067         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1068         #586664.
1069
1070         * iltests.il.in: Add a test.
1071
1072 2010-03-05  Martin Baulig  <martin@ximian.com>
1073
1074         Add support for aborting invocations.
1075
1076         * debugger-agent.c
1077         (InvokeData): Added `InvokeData *last_invoke'.
1078         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1079         added a new `invoke' field to keep the `InvokeData *' throughout
1080         the invocation.
1081         (ErrorCode): Added `ERR_NO_INVOCATION'.
1082         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1083         (mono_debugger_agent_handle_exception): Don't report any exception
1084         if an abort was requested.
1085         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1086         a thread abort if necessary.
1087         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1088
1089 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1090
1091         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1092         so we can release the whole list and not just the first one. Free
1093         it in more places as well.
1094
1095 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1096
1097         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1098
1099 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1100
1101         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1102
1103 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1104
1105         * driver.c: report also other misc build options.
1106
1107 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1108
1109         * method-to-ir.c: Generate better code for the NewObject
1110         intrinsic.
1111         
1112 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1113
1114         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1115         is disabled. Fixes #582322.
1116
1117         * iltests.il.in: Add a test.
1118
1119 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1120
1121         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1122         the handling of obj->synchronization == null and owner != current thread to
1123         mono_monitor_exit ().
1124
1125         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1126
1127
1128 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1129
1130         * mini.c: change the way emulated opcode info is stored and save about
1131         4 KB of runtime memory.
1132
1133 2010-03-04  David S. Miller  <davem@davemloft.net>
1134
1135        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1136        that don't provide the siginfo in the second signal handler argument
1137        are buggy, and this has been fixed for years.
1138        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1139        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1140
1141 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1142
1143         * aot-runtime.c (find_symbol): Fix a leak.
1144         (decode_patch): Ditto.
1145
1146 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1147
1148         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1149
1150 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1151
1152         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1153
1154 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1155
1156         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1157
1158 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1159
1160         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1161         to check for errors, it's enough to create the metadata open.
1162
1163         Fixes #562150
1164
1165 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1166
1167         * trace.c|h:
1168         * mini-exceptions.c: Add support for printing stack traces when handling
1169         exceptions, and when printing exceptions thrown while tracing also print
1170         the exception message.
1171
1172 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1173
1174         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1175         since the exclude token is a valid string character.
1176
1177 2010-03-02  Levi Bard  <levi@unity3d.com>
1178
1179         * debugger-agent.c: Invalidate thread stacks on domain unload.
1180
1181 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1182
1183         * method-to-ir.c: Emit dummy_use for stored reference after write
1184         barriers to make sure the object is pinned if the GC interrupts
1185         before the write barrier is done.
1186
1187 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1190
1191 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * debugger-agent.c: Add a log message printing the protocol version.
1194
1195 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * debugger-agent.c: Add a new command to communicate the protocol version used
1198         by the client. This could be used to allow newer runtimes to communicate with
1199         older clients.
1200
1201 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1204
1205 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1206
1207         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1208         type.
1209
1210 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1211
1212         * mini-arm.c: make the arm cpu arch configurable with the
1213         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1214         Bug #584198.
1215
1216 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1217
1218         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1219         support for the perf tool on Linux.
1220
1221 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1222
1223         * method-to-ir.c: make string.InsertenalSetChar() specialization
1224         effective.
1225
1226 2010-03-01  Robert Jordan  <robertj@gmx.net>
1227
1228         * Makefile.am: fix the non-static build.
1229
1230 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1233         here.
1234
1235 2010-02-26  Robert Jordan  <robertj@gmx.net>
1236
1237         * tasklets.c (continuation_store): Return from an error condition
1238         immediately.
1239
1240 2010-02-26  Martin Baulig  <martin@ximian.com>
1241
1242         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1243
1244         * debug-mini.c
1245         (MonoDebuggerThreadInfo): Added `internal_flags'.
1246         (MonoDebuggerInternalThreadFlags): New enum.
1247         (_mono_debugger_throw_exception): Don't signal the debugger if a
1248         type abort was requested.
1249         (_mono_debugger_unhandled_exception): Likewise.
1250         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1251         (mono_debugger_runtime_invoke): If the debugger requested a thread
1252         abort during the invocation, reset it here.
1253
1254 2010-02-26  Martin Baulig  <martin@ximian.com>
1255
1256         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1257         instead of `MonoThread *'.
1258
1259 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1262         code offsets table, as it is mostly sorted.
1263
1264 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1267         Fixes #582991.
1268
1269 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1270
1271         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1272
1273 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1274
1275         * Makefile.am: build the new ABI version of the libmono library.
1276         * debugger-agent.c, mini.c: fix warnings with the new API.
1277         * jit.h: don't depend on glib.h being included.
1278
1279 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1280
1281         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1282
1283 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1286         ThreadStatic variables.
1287
1288 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1291         data is not freed yet. Fixes #582460.
1292
1293 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1294
1295         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1296         event requests. Bump protocol minor version.
1297
1298 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1299
1300         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1301
1302 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1305         #581950.
1306
1307         * iltests.il.in: Add a test.
1308
1309 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1310
1311         * mini.c (inline_method): Check for loader errors.
1312
1313 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1314
1315         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1316         instead of mono_method_get_header as it doesn't decode locals
1317         so the called method can have unresolved dependencies that will only
1318         be satisfied after the current method is JIT'd.
1319
1320         Fixes #550968.
1321
1322 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1323
1324         * basic.cs (test_0_div_opt): Speed this up a bit.
1325
1326 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1329
1330         * mini.c (mono_jit_create_remoting_trampoline): Call
1331         mono_create_specific_trampoline () instead of
1332         mono_arch_create_specific_trampoline ().
1333
1334         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1335
1336 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1337
1338         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1339         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1340
1341         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1342
1343         * mini-amd64.c: Fix DISABLE_JIT support.
1344
1345 2010-02-20  Geoff Norton  <gnorton@novell.com>
1346
1347         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1348
1349 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1350
1351         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1352         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1353         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1354         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1355         handle_exception.
1356
1357 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1360         edx/ecx too. This is needed to support OP_SEQ_POINT.
1361
1362 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1363
1364         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1365
1366         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1367
1368 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1369
1370         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1371         LLVM+AOT+exceptions, not enabled yet.
1372
1373 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1374
1375         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1376
1377 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1378
1379         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1380         xdebug info for these.
1381
1382         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1383         in a few places.
1384
1385         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1386         not used yet.
1387
1388 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1389
1390         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1391
1392 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1395         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1396
1397         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1398         for mtouch.
1399
1400 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1401
1402         * debugger-agent.c: handle incomplete reads and EINTR in
1403         recv()/send(). This could have been causing random
1404         disconnections.
1405
1406 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1407
1408         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1409         points.
1410
1411         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1412         so they have small offsets. Fixes #566311.
1413
1414 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1415
1416         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1417
1418 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1419
1420         * mini-amd64.c: Remove the special casing of byref in a few places now that
1421         mini_type_get_underlying_type () handles it.
1422
1423         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1424         by returning native int. Fixes #577984.
1425
1426 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1429         a macro.
1430
1431         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1432         of putting the clause itself.
1433
1434         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1435
1436 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1437
1438         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1439         might be unaligned.
1440
1441 2010-02-10  Geoff Norton  <gnorton@novell.com>
1442
1443         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1444
1445 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1446
1447         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1448         llvm methods too.
1449
1450         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1451         it is not an LLVM generated symbol.
1452
1453         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1454
1455         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1456         implementation in gshared mode because it causes regressions.
1457
1458         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1459
1460         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1461         should be done by the caller.
1462
1463         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1464
1465         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1466
1467         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1468         since mono_jit_info_table_find () doesn't do it anymore.
1469
1470         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1471         instead of mono_jit_info_table_find ().
1472
1473 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1474
1475         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1476
1477         * aot-compiler.c (encode_method_ref): Update after the removal of
1478         mono_gc_get_managed_allocator_type ().
1479
1480         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1481         Fixes #564538.
1482
1483 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1484
1485         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1486         generic params as well.
1487         (handle_isinst): Ditto.
1488
1489         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1490         instead of always calling an icall.
1491
1492         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1493         computing the size of the got.
1494
1495         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1496         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1497         the assembly directive '.set' so it points to the first LLVM emitted method.
1498
1499 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1500
1501         * mini.c (mini_method_verify): Report the method which failed to verify.
1502
1503 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1504
1505         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1506         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1507         runtime MS verifier.
1508
1509 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1510
1511         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1512         #561962.
1513
1514 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1515
1516         * mini-llvm.c: Init the jit module only when first JITting.
1517
1518         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1519
1520         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1521
1522         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1523         replaced with the real got.
1524
1525         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1526
1527         * image-writer.c: Reduce the amount of #ifdefs a bit.
1528
1529         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1530         llvm on darwin/arm.
1531
1532         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1533
1534         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1535         global.
1536
1537 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1540         (mono_llvm_emit_method): Fix unaligned stores too.
1541
1542         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1543         so async stack walks don't crash.
1544
1545 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1546
1547         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1548         was not patched if the callee needed an rgctx trampoline.
1549
1550 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1553         vtable address in AOT code.
1554
1555 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1556
1557         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1558         MonoInst's.
1559
1560 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1561
1562         * genmdesc.pl: remove dependency on external cpp.
1563
1564 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1565
1566         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1567         using LLVM, its not needed, and abcrem can't handle it.
1568
1569 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1570
1571         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1572         it easier to group instructions and reduce duplication.
1573
1574 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1575
1576         * decompose.c: Move the array/soft float decompose routines here from
1577         method-to-ir.c.
1578
1579         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1580
1581 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1584         to tell LLVM that the got is constant, not used yet.
1585
1586         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1587
1588 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1589
1590         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1591         managed wrappers.
1592
1593 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1594
1595         * aot-compiler.c (add_wrappers): Commit the hack which generates
1596         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1597         custom attribute.
1598
1599 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1602         a fault, only used by the LLVM backend.
1603
1604         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1605         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1606
1607         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1608         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1609
1610         * mini-llvm.c: Only generate volatile loads from load instructions which have
1611         the MONO_INST_FAULT flag set.
1612
1613 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1614
1615         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1616         64 bit platforms.
1617
1618 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1619
1620         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1621         sequence points. Fixes #571236.
1622
1623 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1624
1625         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1626         end of the appdomain unload process, after assemblies have been unloaded.
1627         Fixes #574842.
1628
1629 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1632         works.
1633
1634         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1635         Fixes #573988.
1636
1637 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1640
1641 2010-01-26  Geoff Norton  <gnorton@novell.com>
1642
1643         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1644         with struct marshalability.
1645
1646 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1649         it supports class names as well.
1650
1651         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1652         needed by the GC map code.
1653
1654         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1655         flags if needed.
1656
1657         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1658         if cfg->init_ref_vars is set.
1659
1660         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1661         cfg->disable_initlocals_op_refs is set.
1662
1663         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1664         using liveness info if cfg->compute_precise_live_ranges is set.
1665
1666         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1667         volatile variables correctly. Add comments about the live ranges. Not enabled
1668         yet.
1669
1670 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1671
1672         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1673         0x2a into them in method prologs.
1674
1675         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1676
1677 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1678
1679         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1680         classes, since llvm is compiled with -fno-rtti.
1681
1682         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1683
1684         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1685         llvm does not require it.
1686
1687         * aot-runtime.c (load_method): Print the full name of the last aot method.
1688
1689 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1692         thread has not fully started yet.
1693
1694 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1697
1698 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1699
1700         * driver.c: Do not abort if LLVM is not supported, print a
1701         warning and add the information to the Mono JIT information.
1702
1703 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1706         using explicit null checks.
1707
1708 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1709
1710         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1711         related code.
1712
1713         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1714         () in one place.
1715         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1716         its no longer needed.
1717
1718         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1719
1720         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1721         define for platforms still using it (s390). Get rid of the
1722         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1723
1724         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1725         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1726
1727         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1728         the caller pushed the arguments.
1729
1730         * mini-llvm.c: Enable throwing exceptions on x86.
1731
1732         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1733         "Thread (nil) may have been prematurely finalized" messages if this is called
1734         on a thread not registered with the runtime.
1735
1736         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1737
1738 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * jit-icalls.c (mono_array_new_3): New jit icall.
1741
1742         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1743
1744         * arrays.cs: Add a test for 3 dimensional arrays.
1745
1746 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1749         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1750         used.
1751
1752         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1753         thrown on x86.
1754
1755         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1756
1757         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1758
1759         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1760
1761 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1762
1763         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1764           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1765
1766         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1767
1768         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1769
1770         Code is contributed under MIT/X11 license.
1771
1772 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1773
1774         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1775
1776         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1777
1778         * mini.c (mini_method_compile): Set the new flag when running under the
1779         debugger.
1780
1781 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1782
1783         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1784         a ref/noref value + a global pin flag, so parts of stack frames can still be
1785         precisely marked even if they include stuff which needs pinning. Improve logging.
1786         Fix many bugs. Not enabled yet.
1787
1788         * gc-test.cs: Add a few tests.
1789
1790         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1791         the normal -v options. Avoid propagating liveness information through bblocks
1792         which end with a NOT_REACHED opcode.
1793
1794         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1795         after cfg has been freed.
1796
1797 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1800         if a clause is skipped because it uses the exception object, since it could
1801         have caught the exception.
1802
1803         * exceptions.cs: Add a test.
1804
1805 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1806
1807        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1808
1809         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1810         ICollection<T> wrappers.
1811
1812 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1815
1816 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1817
1818         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1819         NOMAP32BIT or optimize_for_xen is set.
1820
1821 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1824         mono_metadata_str_hash () instead.
1825
1826 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1829         sizeof (void*).
1830
1831         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1832
1833 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1836         flag is set.
1837
1838         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1839         throwing code correctly.
1840
1841         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1842
1843 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1846         ftnptrs created by us, handle RGCTX_FETCH correctly.
1847         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1848
1849         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1850         ftnptr added by mono_aot_get_named_code ().
1851
1852 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * mini-arm.c: Fix a few LLVM problems.
1855
1856         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1857
1858 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1859
1860         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1861         AOT compiling.
1862
1863 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1864
1865         * jit.h, method-to-ir.c: added ability to set the policy for
1866         inserting breakpoints from the break IL instruction or the
1867         Debugger.Break () API call.
1868
1869 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1870
1871         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1872         assemblies need to be eagerly loaded.
1873
1874 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1877
1878 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1879
1880         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1881         an argument which matches any exception.
1882
1883 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1886         optimization if the called method is gshared and marshalbyref, since gshared
1887         methods can' have wrappers. Fixes #569390.
1888
1889         * generics.cs: Add a test.
1890
1891 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1894         callable from gdb.
1895
1896 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1897
1898         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1899
1900 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1903         since it is not supported in win2000.
1904
1905 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1908         error if loading an assembly fails.
1909         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1910
1911         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1912         if exists.
1913
1914         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1915         compiled methods.
1916
1917         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1918
1919         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1920         is not supported yet.
1921
1922         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1923
1924 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1925
1926         * method-to-ir.c: All types with variant arguments must fallback to the
1927         slow path. This makes cast of variant delegates work.
1928
1929         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1930         argument that is set to TRUE is the returned vtable slot is for a variant
1931         interface. Changed a g_print + g_assert_not_reached to a g_error.
1932
1933         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1934         a similar fashion of generic virtual methods.
1935
1936 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1937
1938         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1939         when cfg is null.
1940
1941         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1942         method using a variance aware function.
1943
1944         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1945
1946 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1947
1948         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1949         do an icall for now.
1950
1951 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1954         If LLVM decides to set the code model to Large, reset it to Default.
1955
1956 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1957
1958         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1959         stripped binaries as well.
1960
1961 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1964         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1965
1966         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1967         reg.
1968
1969 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1970
1971         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1972         separate function.
1973
1974         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1975         as the type info to llvm.eh.selector.
1976         (exception_cb): Use the type info for filling out some fields of
1977         MonoJitExceptionInfo like the flags and the exception class. This is needed
1978         because the LLVM produced exception handling clauses might not match the original
1979         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1980
1981         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1982         separate function. Add an extra argument which returns the type infos
1983         corresponding to the exception clauses.
1984
1985         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1986         exception handling clauses.
1987
1988 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1991         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1992         to fix an AOT case.
1993
1994 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1995
1996         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1997         internal assembly.
1998
1999 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2000
2001         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2002         llvm code.
2003
2004 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2005
2006         * mini.c (mini_method_compile): Verify the method before calling
2007         mono_compile_create_vars as this might crash since it uses method
2008         information.
2009
2010         Fixes #560196.
2011
2012 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2015         one case if AOTing, since the class might not be a concrete class.
2016
2017 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2018
2019         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2020         functions which are now defined in mempool-internals.h.
2021
2022         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2023
2024         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2025
2026 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2027
2028         * mini.c:
2029         * method-to.ir.c:
2030         * mini-*.c: Properly handle generic enums.
2031
2032         Fixes #566294
2033
2034 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2037         in a few more places.
2038
2039 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2040
2041         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2042         nullable parameters. Fixes #567351.
2043
2044 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2045
2046         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2047
2048 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2049
2050         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2051         mono_get_generic_context_from_code () call.
2052
2053         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2054
2055 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2056
2057         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2058         needed.
2059
2060 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2061
2062         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2063         mono_method_get_signature returns NULL. Fix #567084
2064
2065 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2066
2067         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2068         instead of once for each module.
2069
2070 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * debugger-agent.c (ss_start): Implement step over for the last sequence
2073         point in methods.
2074
2075         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2076         have the STEP_LOC flag set.
2077
2078         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2079         fails. Fixes #566689.
2080
2081 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2082
2083         * mini.c (mono_add_seq_point): New helper function.
2084         (mono_save_seq_point_info): New function to save sequence point info, extracted
2085         from mini_method_compile ().
2086
2087         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2088
2089         * mini.h (MonoSeqPointInfo): New structure containing information about
2090         the sequence points of a JITted method.
2091         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2092         'bucket' field.
2093
2094         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2095         point information is stored, use a MonoSeqPointInfo structure instead of a
2096         GPtrArray. For each seq point, compute a list of successor seq points.
2097
2098         * debugger-agent.c: Use the successor list to implement step-over more
2099         efficiently: instead of single stepping until a different line/IL offset is
2100         reached, place breakpoints into all successor seq points.
2101
2102         * mini.h: Bump AOT file format version.
2103
2104 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2105
2106         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2107
2108         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2109
2110 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2113         build.
2114
2115 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2118         alloca as g_malloc is not signal safe.
2119
2120 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2123         VALGRIND_DISCARD_TRANSLATIONS.
2124
2125         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2126         checks, they are no longer needed.
2127
2128         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2129         a function into a sigctx which can handle function pointers.
2130
2131         * mini-ppc.c: Implement soft debugger support on ppc64.
2132
2133         * mini-ppc.c: Implement soft debugger support.
2134
2135 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2136
2137         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2138
2139 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2140
2141         * mini.c (mono_get_runtime_build_info): include Mono version in
2142         the returned value.
2143
2144         * driver.c (mono_main): VERSION is now included in the string
2145         returned from mono_get_runtime_build_info()
2146
2147 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2150         signatures. Fixes #565143.
2151
2152         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2153
2154 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2155
2156         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2157
2158 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2159
2160         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2161         making max stack 10x smaller.
2162
2163 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2166
2167 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2168
2169         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2170
2171 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2172
2173         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2174         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2175
2176         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2177
2178         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2179
2180         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2181
2182         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2183         the compilation.
2184
2185 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2186
2187         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2188         raise an invalid program exception.   
2189
2190         For other opcodes that we might not handle use a g_warning and
2191         raise the exception.   Beats termination.
2192
2193         Fixes #561724
2194
2195 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2196
2197         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2198
2199         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2200         by merging the LLVM and !MAP_32BIT cases.
2201
2202 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2203
2204         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2205         sigctx being passed in, as we have no CONTEXT available in the APC.
2206
2207         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2208         for now.
2209
2210         Code contributed under MIT/X11 license.
2211
2212 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2213
2214         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2215         in the LLVM backend on AMD64.
2216
2217         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2218         FDE.
2219
2220         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2221
2222         * mini-llvm.c: Export mono_personality for AOT.
2223
2224         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2225
2226         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2227         implicit exception can occur.
2228
2229         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2230         OP_IMPLICIT_EXCEPTION instruction.
2231
2232         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2233
2234         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2235
2236         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2237         inside a protected block.
2238
2239         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2240         trampolines doesn't include the argument.
2241
2242         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2243         trampolines on amd64.
2244
2245         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2246         of RDI.
2247
2248         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2249         disabled for methods with clauses.
2250
2251         * mini-llvm.c: Enable support for catch clauses.
2252
2253         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2254         end of an LLVM compiled finally clause.
2255         (mono_handle_exception_internal): Save the exception handling state in TLS
2256         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2257         resume unwinding from that point.
2258
2259         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2260         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2261         to obtain the addresses of the exception handling regions.
2262
2263         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2264         finally clauses are supported.
2265
2266         * mini.c (mini_method_compile): Add support for LLVM code with exception
2267         handlers.
2268
2269 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2272         proper size.
2273
2274 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2277         as a primitive type.
2278
2279 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2280
2281         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2282         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2283         #564000.
2284
2285 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2286
2287         * method-to-ir.c (mini_redirect_call): do not redirect the
2288         InternalAllocateStr internal call if string profiling is enabled.
2289
2290 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2293         generic methods.
2294
2295         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2296         unwind.h header file.
2297
2298         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2299         newer valgrind versions seems to handle this fine.
2300
2301 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2302
2303         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2304         on the debugger thread.
2305
2306 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2309
2310         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2311
2312         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2313
2314         * cpu-<ARCH>.md: Make call_handler clob:c.
2315
2316         * mini.c: Reenable SSA for methods with clauses.
2317
2318         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2319         as it causes failures on x86.
2320
2321 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2322
2323         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2324         returns NULL (e.g. a bad assembly).
2325
2326 2009-12-08  Geoff Norton  <gnorton@novell.com>
2327
2328         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2329         stepping out into native code.  There were issues with nested invokes
2330         like .cctors.
2331
2332 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * mini.c (mini_method_compile): Do the disable_llvm checks early
2335         and avoid the LLVM compile pass if the checks fail.
2336
2337         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2338
2339         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2340         LLVM optimizations don't try to remove them.
2341
2342         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2343         different file so the original remains.
2344
2345 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2346
2347         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2348
2349         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2350
2351         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2352         support for non-inline unwind descriptors.
2353
2354 2009-12-07  Geoff Norton  <gnorton@novell.com>
2355
2356         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2357         the interrupt_count slightly differently.  Native threads were never
2358         marked as resumed.
2359
2360 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2361
2362         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2363         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2364         yet generate this info.
2365
2366         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2367
2368         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2369         client can distinguish between intptrs and longs.
2370
2371 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2372
2373         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2374         blob.
2375
2376         * aot-runtime.c (load_function): Update after the change above.
2377
2378         * mini.h: Bump AOT file format version.
2379
2380         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2381         if the delegate class is dynamic.
2382
2383         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2384         in gshared code too using the new rgctx info type
2385         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2386
2387 2009-12-04  Geoff Norton  <gnorton@novell.com>
2388
2389         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2390         we need to track the original suspend count so the thread properly
2391         wakes up in resume_thread.
2392
2393 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2396         code.
2397
2398         * generics.cs: Add a test.
2399
2400         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2401         is 0. Simplify a lot of code using this.
2402
2403         * mini-trampolines.c (mono_delegate_trampoline): Call
2404         mono_create_static_rgctx_trampoline () before saving the final address in
2405         delegate->method_code, to avoid calling it each time a delegate is first called.
2406
2407         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2408         which need static rgctx trampolines.
2409
2410         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2411         keyed on the method+addr pair, since addr could be either the method addr or
2412         an unbox trampoline in the AOT case. Fixes #560246.
2413
2414 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2415
2416         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2417         place it was called before too.
2418
2419 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2422         if no security manager is present, to speed up the AOT case. Call
2423         mono_class_vtable () full with raise_on_error == TRUE instead.
2424
2425 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2428         the local optimization passes can take its result into account. Fixes
2429         #559876.
2430
2431         * exceptions.cs: Add a test.
2432
2433 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2434
2435         This patch is contributed under the terms of the MIT/X11 license
2436
2437         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2438
2439 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2442
2443         * debugger-agent.c: Rework the handling of stack traces of running threads to
2444         avoid crashes if compute_frames () tries to walk the stack of running thread.
2445
2446         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2447
2448         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2449
2450         * mini.h (StackFrameInfo): Add an 'lmf' field.
2451
2452 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * debugger-agent.c (suspend_current): Always set really_suspended.
2455
2456         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2457
2458         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2459
2460 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2463         really suspended.
2464
2465 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2466
2467         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2468
2469 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2470
2471         * mini-trampolines.c: Fix MSVC build.
2472
2473 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2474
2475         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2476
2477 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2478
2479         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2480         the instruction following an OP_FCOMPARE is optimized away.
2481
2482 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2483
2484         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2485         emit_autoreg () into this arch-specific function.
2486
2487         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2488         code, it is no longer needed.
2489
2490         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2491
2492         * mini.h: Bump AOT file format version.
2493
2494         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2495         using the sorted_code_offsets array, instead of reading it from the
2496         exception debug info.
2497         (load_method): Call mono_aot_find_jit_info instead of
2498         decode_exception_debug_info ().
2499
2500         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2501         LLVM compiled as a flag.
2502
2503 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * debugger-agent.c (resume_thread): Fix a warning.
2506
2507         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2508         generated.
2509
2510 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2513         contents to MonoAotFileInfo.
2514
2515 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2516
2517         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2518         Put all binary data into a giant blob, similarly to the way .net assemblies
2519         store binary data. Emit offset tables in a compact form to reduce their size.
2520
2521         * mini.h: Bump AOT file format version.
2522
2523         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2524         places.
2525
2526         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2527         avoid linear searches at runtime.
2528
2529         * aot-runtime.c (find_symbol): Update this to use the hash.
2530
2531         * mini.h: Bump AOT file format version.
2532
2533 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2534
2535         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2536         container.
2537
2538         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2539         too.
2540
2541         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2542         the distribution of got slot types.
2543
2544         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2545
2546         * method-to-ir.c: Add support for generating explicit null checks.
2547
2548 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2549
2550         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2551         on a random thread if possible.
2552
2553         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2554         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2555         correctly.
2556
2557         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2558         regs. Pass the real size of the regs array to mono_unwind_frame ().
2559
2560         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2561         ones instead.
2562
2563 2009-11-24  Geoff Norton  <gnorton@novell.com>
2564
2565         * mini-darwin.c: Work around apple bug rdar://7209349  See
2566         http://openradar.appspot.com/7209349 for details.  Synopsis,
2567         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2568         never been initialized before.
2569
2570 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2571
2572         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2573
2574         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2575
2576 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2577
2578         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2579         OP_SHL_IMM is not 32 bit.
2580
2581 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2582
2583         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2584
2585 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2586
2587         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2588         encountered.
2589
2590         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2591         > 0 since some threads can resume if their resume_count is > 0.
2592         (invoke_method): Avoid reading freed memory.
2593
2594         * debugger-agent.c (process_suspend): Extract the suspend code from
2595         process_single_step_inner () to a separate function. Rework the code to prevent
2596         races between this function and thread interrupts.
2597
2598         * debugger-agent.c (suspend_current): Check the resume_count field instead
2599         of resume_one so suspends+resumes during single threaded invokes work
2600         correctly.
2601
2602 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2603
2604         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2605         to make the generated code smaller.
2606
2607         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2608         sequence generated by recent LLVM versions.
2609
2610         * mini-llvm.c: Add support for a few simple cases which weren't supported
2611         before.
2612
2613         * mini-trampolines.c (mono_magic_trampoline): Don't call
2614         mono_arch_get_vcall_slot () when llvm is enabled.
2615
2616         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2617
2618         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2619         into a new function called common_call_trampoline () which is used by the
2620         llvm vcall trampoline as well.
2621
2622         * debugger-agent.c: Implement single threaded invokes.
2623
2624         * debugger-agent.c: Revert change which broke the agent on linux.
2625
2626         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2627         #557606.
2628
2629         * generics.cs: Add a test.
2630
2631 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * debugger-agent.c: Fix the cygwin build.
2634
2635 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2636
2637         * cprop.c: Remove this unused file.
2638
2639 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2642         #557262.
2643
2644         * basic.cs: Add a test.
2645
2646 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2647
2648         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2649         in one more place.
2650
2651 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2654         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2655         it. Use this flag to control llvm related code paths instead of #ifdef
2656         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2657         AOT code.
2658
2659         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2660
2661         * mini.h: Bump AOT file format version.
2662
2663         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2664         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2665
2666         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2667         was used as an assembly filter.
2668
2669 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2670
2671         * unwind.c: Fix support for ppc.
2672
2673         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2674         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2675
2676 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2679         port.
2680         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2681         added by the ps3 changes.
2682
2683 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2684
2685         * mini-gc.c: Resurrect this, so at least it compiles.
2686
2687         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2688
2689 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2690
2691         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2692         create_event_list () so assembly filters can be used.
2693
2694         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2695         from the LMF.
2696
2697 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2698
2699         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2700         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2701         is disabled.
2702
2703         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2704         classes for char/bool too.
2705
2706         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2707
2708         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2709         used.
2710
2711         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2712         Fix warnings.
2713
2714 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2715
2716         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2717         
2718         Code contributed under MIT/X11 license.
2719
2720 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2721
2722         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2723         threads in native code work.
2724
2725         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2726         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2727         version.
2728
2729 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2730
2731         * debugger-agent.c: Implementation for Windows platform.
2732
2733         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2734         primitives. Use SEH to implement breakpoints and single stepping.
2735
2736         * mini-x86.h: Enable soft debugger on Windows.
2737
2738         Code contributed under MIT/X11 license.
2739
2740 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2743         under XEN. Fixes #522894.
2744
2745         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2746
2747         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2748         interface calls in LLVM AOT code.
2749
2750         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2751         is found.
2752
2753         * mini-llvm.c: Add support for OP_VPHI.
2754
2755         * objects.cs: Add a test.
2756
2757 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2758
2759         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2760         this is called on the debugger thread.
2761
2762 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2763
2764         * mini-llvm.c: Add soft-float support.
2765
2766         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2767         FCALL which returns an R4.
2768
2769         * driver.c (mono_main): Add a missing '\n'.
2770
2771         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2772         platforms which doesn't support the LLVM IMT trampoline.
2773
2774 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2775
2776         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2777
2778         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2779
2780         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2781         virtual calls.
2782
2783         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2784
2785 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2786
2787         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2788         Instead of emitting a method_order table, sort the contents of the code_offsets
2789         table and do a binary search in the sorted table. The previous approach doesn't
2790         work with LLVM which emits methods in a arbitrary order.
2791
2792         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2793         in the .eh_frame section in ELF files.
2794
2795         * mini.h: Bump corlib file format version.
2796
2797         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2798
2799         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2800         LDMIA->LDM macro name change.
2801
2802 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2803
2804         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2805         x86.
2806
2807         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2808         SVN.
2809
2810         * aot-compiler.c: Ditto.
2811
2812         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2813         &align to mini_type_stack_size_full ().
2814
2815         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2816
2817         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2818
2819 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2820
2821         * mini-arm.c: Compute the stack space used by arguments using
2822         mini_type_stack_size_full ().
2823
2824 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2825
2826         * optflags-def.h: Remove dead TREEPROP optimization.
2827
2828 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2829
2830         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2831
2832         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2833
2834 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2835
2836         * driver.c (mono_jit_parse_options): New public API function to parse options
2837         as done by the runtime executable.
2838
2839         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2840         when handling named arguments.
2841
2842 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2845         for passing small vtypes in registers, make the CallInfo structures more
2846         similar to the code on the other platforms.
2847
2848         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2849         the code in the prolog requires it.
2850
2851 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2852
2853         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2854         (koush@koushikdutta.com).
2855
2856         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2857         where the thunk memory should be allocated from. Fixes appdomain unloading
2858         on arm.
2859
2860 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2861
2862         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2863         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2864
2865 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2866
2867         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2868         AOT, as it is not implemented yet.
2869
2870         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2871
2872 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2873
2874         * debugger-agent.c: Fix windows build.
2875
2876 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2879         after the client connects/disconnects.
2880
2881         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2882         when an exception of a given type is thrown.
2883
2884         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2885         only on an uncaught exception.
2886
2887         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2888
2889         * debugger-agent.c: Add a 'launch' option.
2890
2891 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2892
2893         * debugger-agent.c: Add a 'timeout' option.
2894
2895 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2896
2897         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2898         the JDWP agent.
2899
2900 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2901
2902         * debugger-agent.c (set_breakpoint): Emit a log message.
2903
2904 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2905
2906         * mini-arm.c: Fix the arm build.
2907
2908 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2909
2910         * aot-compiler.c: don't leak the value returned from
2911         mono_type_full_name().
2912
2913 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2914
2915         * debugger-agent.c: defer including mono-mutex.h until we know the
2916         agent is supported.
2917
2918 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2919
2920         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2921         of pthreads directly.
2922
2923         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2924         exception handlers. Pass info argument.
2925
2926         * mini.h: Adjust signatures of soft debugger functions to pass void*
2927         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2928
2929         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2930         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2931         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2932         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2933
2934         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2935
2936         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2937         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2938         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2939         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2940
2941         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2942
2943         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2944
2945         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2946
2947         * mono-semaphore.h: Skeleton implementation for Windows.
2948
2949         Code contributed under MIT/X11 license.
2950
2951 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2952
2953         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2954
2955         Code contributed under MIT/X11 license.
2956
2957 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2958
2959         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2960
2961         Code contributed under MIT/X11 license.
2962
2963 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2966         debug info to 100 because 10 still slows down gdb too much.
2967
2968         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2969         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2970         them in the wrappers.
2971
2972 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2973
2974         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2975
2976         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2977
2978         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2979         function mono_aot_get_array_helper_from_wrapper ().
2980
2981         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2982         array helper methods.
2983
2984 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2985
2986         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2987         the value was loaded from memory.
2988
2989         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2990         the value was loader from there.
2991
2992         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2993         without constant swizzle.
2994
2995 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2996
2997         * mini-amd64.c: Put soft debugger functions behind a
2998         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2999
3000         * mini-amd64.h: disable the soft debugger in windows.
3001
3002         Code contributed under MIT/X11 license.
3003
3004 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3005
3006         * mini-x86.c: Put soft debugger functions behind a
3007         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3008
3009         Code contributed under MIT/X11 license.
3010
3011 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3012
3013         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3014         to mono_arch_find_jit_info_ext.
3015
3016         Code contributed under MIT/X11 license.
3017
3018 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3021
3022         * debugger-agent.c: Add support for filtering events by assemblies.
3023
3024         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3025         the agent is not enabled.
3026
3027 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3028
3029         * exceptions-x86.c: hopefully last change to fix the windows build.
3030         This one courtesy of Jonathan Chambers.
3031
3032 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3033
3034         * debugger-agent.c: remove unused function.
3035
3036 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3037
3038         * debugger-agent.c: add #ifdefs for a few header files.
3039         * mini-x86.h: disable the soft debugger in windows.
3040         Step 1 of 2 to make this compile on windows with gcc.
3041
3042 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3043
3044         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3045         as it breaks the build.
3046
3047 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3048
3049         Merge the soft debugger branch.
3050
3051         * debugger-agent.h debugger-agent.c: New files containing the soft
3052         mode debugger module.
3053
3054         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3055         at the appropriate locations.
3056
3057         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3058         opcode.
3059
3060         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3061         enable/disable single stepping.
3062
3063         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3064         which returns all information in a StackFrameInfo structure, and can handle the
3065         LMF frames added by the debugger.
3066
3067         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3068         about an LMF frame.
3069
3070         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3071         walker function which works on a specific thread and passes a StackFrameInfo
3072         structure to its callback.
3073
3074         * mini.c (mini_init): Initialize the debugger agent.
3075
3076         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3077
3078         * mini-ops.h: Add OP_SEQ_POINT opcode.
3079
3080         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3081         arguments to the debugger agent.
3082
3083 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3086         speed things up.
3087
3088         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3089
3090         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3091
3092         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3093
3094         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3095         if needed.
3096         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3097         sets the IMT argument and makes a virtual call.
3098
3099         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3100
3101 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3102
3103         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3104         the windows build.
3105
3106 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3107
3108         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3109         runtime. Fixes #551228.
3110
3111 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3112
3113         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3114
3115         * basic.cs: Add a test.
3116
3117         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3118         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3119         CONSTRAINED. Fixes #550964.
3120
3121         * generics.cs: Add a test.
3122
3123 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3124
3125         * mini-posix.c (add_signal_handler): Use
3126         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3127
3128 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3129
3130         Contributed under the terms of the MIT/X11 license by
3131         Jerry Maine <crashfourit@gail.com>.
3132
3133         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3134         sse4a for simd intrinsics.
3135
3136         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3137         sse4a for simd intrinsics.
3138
3139 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3140
3141         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3142         instead of inst_p1 which is not the same on ILP32 platforms.
3143
3144 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3145
3146         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3147         not the mscorlib one before calling mono_get_lmf_addr.
3148
3149         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3150         of the ip to the LMF.
3151
3152         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3153         immediate in the op->op_imm optimization.
3154
3155         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3156         understand. VTypes now work, but are not abi compliant, as they are
3157         split into 4 byte parts instead of 8.
3158         (emit_memcpy): Fix the unrolled case to work on the PS3.
3159
3160         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3161
3162         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3163         the default when static linking.
3164
3165         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3166
3167         * aot-compiler.c: Add an autoreg option to automatically register
3168         statically linked aot modules using ELF .ctors.
3169
3170         * genmdesc.pl: Add __ppc64__ to allowed defines.
3171
3172 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3173
3174         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3175         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3176
3177 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3178
3179         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3180
3181 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3182
3183         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3184         which will contain the domain where the method was found.
3185
3186         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3187         mini_jit_info_table_find ().
3188
3189         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3190
3191         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3192
3193 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3194
3195         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3196         set, its not supported yet.
3197
3198 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3201         iface wrapper is not found.
3202         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3203
3204 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3207         which have a different name.
3208
3209         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3210         wrappers and Array.GetGenericValueImpl ().
3211
3212         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3213         because of the change above.
3214
3215         * generics.cs: Add a test for full aot + generic array ifaces.
3216
3217 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3218
3219         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3220         that hides the previous one.
3221
3222 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3223
3224         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3225         marshalled. Fixes #541623.
3226
3227 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3228
3229         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3230
3231 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3232
3233         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3234
3235 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3236
3237         * mini-posix.c (sigprof_signal_handler):
3238         Implemented support for building stat call chans in different ways.
3239
3240 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3241
3242         * mini-exceptions.c (mono_find_jit_info):
3243         Also check that a jit info has been found (fixes a profiler crash).
3244
3245 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3246
3247         * mini.c (mono_codegen):
3248         Call mono_profiler_code_buffer_new with correct code address.
3249
3250 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * driver.c (mono_main): Change the date in the copyright.
3253
3254 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3255
3256         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3257         allocator in shared generic code for open classes, because we
3258         can't get those classes' vtables.  We need to make managed
3259         allocators not depend on the vtable at compile-time to solve this.
3260
3261 2009-10-13  Martin Baulig  <martin@ximian.com>
3262
3263         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3264         `const guint8 *trampoline' argument; send both the old and the new
3265         notification.
3266
3267 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3268
3269         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3270         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3271         (can_marshal_struct): Skip structures with auto layout.
3272
3273         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3274
3275 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3278         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3279         a variable to hold the stack slot used by the int<->float conversion opcodes.
3280
3281         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3282
3283 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3286         when using full-aot.
3287
3288 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3291         each instance of Comparer<T>.
3292
3293         * generics.cs: Add a new test.
3294
3295 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3296
3297         * driver.c (parse_debug_options): Add a 'gdb' option.
3298
3299         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3300
3301         * image-writer.c: Add support for emitting the image into a memory buffer.
3302
3303         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3304
3305         * aot-compiler.c: Add support for registering debug info with GDB using the
3306         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3307         MONO_XDEBUG to 'gdb'.
3308
3309 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3310
3311         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3312         gdb mode.
3313
3314 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3315
3316         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3317         can be used to set breakpoints in gdb.
3318
3319         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3320         segment to an absolute address.
3321
3322 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3323
3324         * method-to-ir.c: Use the managed array allocator method if
3325         available.
3326
3327 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3328
3329         * aot-compiler.c : Fix the MSVC builds
3330
3331         Code is contributed under MIT/X11 license.
3332
3333 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3334
3335         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3336         avoid registering 1 symbol file per method with gdb.
3337
3338 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3339
3340         * mini-sparc.c: Fix the handling of enums with base type long.
3341
3342         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3343
3344         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3345         instead of using type->data.klass as the later doesn't work with generics.
3346
3347 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3348
3349         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3350         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3351         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3352         works differently now and we don't handle it in the JIT anymore.
3353
3354         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3355         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3356         the Thread class split.
3357
3358 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3359
3360         * driver.c: Don't run tests with the obsolete treeprop optimization.
3361
3362         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3363         variable volatile. Fixes #541577.
3364
3365         * basic-calls.cs: Add a new test.
3366
3367         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3368
3369 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3370
3371         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3372         work/required with recent iphone sdk versions.
3373
3374         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3375         structures.
3376
3377         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3378         in the VCALL decomposition code.
3379
3380 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3383
3384         * basic.cs: Add a test.
3385
3386         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3387         generic invokes.
3388
3389         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3390         searches all the domains of the current thread.
3391
3392         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3393
3394 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3395
3396         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3397         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3398
3399         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3400         for non-jit trampolines.
3401
3402         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3403
3404         * aot-compiler.c (add_wrappers): Ditto.
3405
3406         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3407         the size of the param area used by dyn_call to 6 which covers the majority of
3408         methods.
3409
3410         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3411
3412         * mini-arm.c: Implement support for passing/receiving
3413         longs and receiving floats in the dyn_call code.
3414
3415         * mini-amd64.c: Implement support for receiving vtypes in registers in
3416         the dyn_call code.
3417
3418         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3419         the dyn_call code.
3420
3421 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3422
3423         * mini-arm.c (get_call_info): Return more precise information in
3424         ArgInfo->regtype.
3425         (dyn_call_supported): Use the information in CallInfo.
3426
3427         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3428
3429         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3430         code.
3431
3432         * mini-arm.c: Update after the dyn_call api changes.
3433
3434         * mini.c (mini_create_jit_domain_info): Register a destructor function
3435         for the runtime_invoke_hash.
3436
3437         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3438         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3439         this function.
3440         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3441         (dyn_call_supported): Simplify this by using get_call_info ().
3442         (mono_arch_dyn_call_free): New destructor function.
3443
3444         * generics.cs: Remove a printf.
3445
3446         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3447
3448         * mini-arm.c: Add support for enum return values and passing a few arguments
3449         on the stack.
3450         
3451         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3452         dyn invoke.
3453
3454         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3455
3456         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3457         the dynamic invoke wrappers.
3458
3459         * mini-arm.c: Implement OP_DYN_CALL for arm.
3460
3461         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3462         supported by the dynamic runtime invoke wrapper.
3463
3464         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3465         runtime invoke wrapper.
3466
3467         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3468         if possible when running with full-aot.
3469
3470         * mini-ops.h: Add OP_DYN_CALL opcode.
3471
3472         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3473         with dynamic arguments lists similar to libffi.
3474
3475 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3478         
3479         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3480         to NEWARR.
3481
3482         * iltests.il.in: Add a new test.
3483         
3484 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3485
3486         * aot-compiler.c (add_generic_instances): Add more instances of
3487         GenericEqualityComparer.
3488
3489 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3490
3491         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3492
3493 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3494
3495         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3496         comments on some functions that now can fail.
3497
3498 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3499
3500         * Makefile.am: Add Info.plist to EXTRA_DIST
3501
3502 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3505         static synchronized wrappers. Fixes #539500.
3506
3507 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3508
3509         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3510         properly.
3511
3512 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3515         lmf before calling filter clauses as well. Fixes #539550.
3516
3517         * exceptions.cs: Add a test.
3518         
3519 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * aot-compiler.c (add_generic_class): Add instances of
3522         Array.GetGenericValueImpl as well.
3523
3524         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3525         can be tested too.
3526
3527         * generics.cs: Add a fullaot linq test.
3528
3529 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3530
3531         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3532         reg r1 on arm.
3533
3534 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3535
3536         * mini-trampolines.c (mono_delegate_trampoline) : Call
3537           mono_cominterop_get_invoke if the delegate target object
3538           is a COM object.
3539
3540         Code is contributed under MIT/X11 license.
3541
3542 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3543
3544         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3545         internal call is defined outside platform code. Reduce code 
3546         duplication with existing [Method|Field]AccessException
3547
3548 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3549
3550         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3551         if the return value is a small struct passed on regs.
3552
3553 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3554
3555         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3556
3557         * mini-codegen.c: Enable the cpu description validation for arm.
3558
3559 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3560
3561         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3562         test which depends on structs to objects.cs.
3563         
3564         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3565         require object model related stuff working.
3566
3567         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3568
3569         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3570
3571         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3572         against the instruction metadata in mini-ops.h. amd64 only for now.
3573
3574         * mini-ops.h: Fix some instruction descriptions.
3575
3576         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3577         unused instructions.
3578
3579 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3580
3581         * exceptions.cs: Add a new test.
3582
3583 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3584
3585         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3586
3587 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3588
3589         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3590         skip empty phi opcodes.
3591         
3592         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3593         correctly by zero extending after loads. Skip methods containing calls
3594         to the monitor enter/exit trampolines.
3595
3596         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3597         when calling mono_thread_force_interruption_checkpoint ().
3598
3599         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3600
3601         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3602         64 bit thunks.
3603         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3604
3605         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3606         bootstrap could run.
3607
3608 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3609
3610         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3611
3612 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3613
3614         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3615         of the method to
3616         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3617         LLVM might be very short.
3618
3619         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3620         in OP_THROW/RETHROW.
3621
3622         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3623         alignment on osx.
3624
3625 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3628         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3629         LLVM might be very short.
3630
3631 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3632
3633         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3634         the alignment for the value of sp.
3635
3636 2009-09-01  Geoff Norton  <gnorton@novell.com>
3637
3638         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3639         managed wrappers in full aot.
3640
3641 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3644
3645 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3648
3649 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3650
3651         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3652
3653         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3654         saved info.
3655
3656         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3657
3658         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3659         depend on the info MonoMethodHeader which could be missing in IL stripped
3660         assemblies.
3661
3662 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3663
3664         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3665         they are only 4 byte aligned.
3666
3667 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3670         was done previously, since using SP causes too many problems.
3671
3672         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3673         frames without a frame pointer works.
3674
3675         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3676         global register in methods with calls, since the calls can go through
3677         a static rgctx trampoline which doesn't save it.
3678
3679 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3680
3681         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3682
3683 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3684
3685         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3686
3687 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3688
3689         * method-to-ir.c: Fix warnings for uninitialized variables.
3690
3691 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3692
3693         * mini-exceptions.c:
3694         * aot-compiler.c: Fix printf warnings.
3695
3696 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3697
3698         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3699         Add GetGenericValueImpl<string>.
3700         
3701         * aot-compiler.c (add_generic_instances): Add instances of
3702         GenericEqualityComparer<T> for primitive types. Only emit the array
3703         wrappers into the mscorlib image.
3704
3705 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3706
3707         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3708         the methods_loaded array using amodule->info->nmethods.
3709
3710         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3711         (MONO_AOT_FILE_VERSION): Bump this.
3712
3713         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3714         to work.
3715
3716         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3717         MonoJitInfo doesn't belong to its methods aot image.
3718
3719 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3722
3723         * mini-arm.c: Fix warnings.
3724         
3725         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3726
3727         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3728         supports it.
3729
3730 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3731
3732         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3733         avoid clobbering IP.
3734
3735         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3736         hold the trampoline argument, so its initial value is available during
3737         debugging.
3738
3739 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3740
3741         * exceptions-arm.c:
3742         * exceptions-hppa.c:
3743         * mini.c:
3744         * exceptions-s390x.c:
3745         * exceptions-mips.c:
3746         * exceptions-ppc.c:
3747         * exceptions-sparc.c:
3748         * exceptions-alpha.c:
3749         * aot-runtime.c:
3750         * mini-trampolines.c:
3751         * exceptions-x86.c:
3752         * exceptions-s390.c: add and use #define's instead of sizeof()
3753         for MonoJitInfo and MonoJitInfoTable.
3754
3755 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3756
3757         * tramp-arm.c:
3758         * tramp-amd64.c:
3759         * tramp-ppc.c:
3760         * tramp-x86.c: use a #define instead of sizeof() for a few
3761         structures that use a zero-length array.
3762
3763 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3764
3765         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3766         case when the method is dynamic. Fixes #529238.
3767
3768 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3769
3770         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3771         of asserting when a method is JIT compiled in full-aot mode.
3772
3773 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3774         
3775         Contributed under the terms of the MIT/X11 license by
3776         Jerry Maine <crashfourit@gail.com>.
3777         
3778         * fixed wrong dates in changelog.
3779
3780 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3781         
3782         Contributed under the terms of the MIT/X11 license by
3783         Jerry Maine <crashfourit@gail.com>.
3784
3785         * basic-simd.cs: added test for packed double square root.
3786         * cpu-amd64.md: added opcode info for packed double square root.
3787         * cpu-x86.md: added opcode info for packed double square root.
3788         * mini-ops.h: added IR opcode for packed double square root.
3789         * mini-x86.c: added IR to native translation code for packed double square root.
3790         * mini-amd64.c: removed todo for packed double square root.
3791         * simd-intrinsics.c: added method to IR opcode converstion for
3792         packed double square root.
3793
3794 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3795
3796         Contributed under the terms of the MIT/X11 license by
3797         Jerry Maine <crashfourit@gail.com>.
3798
3799         * mini-amd64.c: Added a change to help tell the difference as 
3800         to what perpose the xmm register is being used--mainly to help
3801         with debuging.
3802         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3803         (one used for special cases) xmm registers for both fp
3804         and simd ops. Added define to turn on new feature in the regalloc
3805         that allows fp and simd ops to share the xmm regs happily.
3806         * codegen.c: Added code to detect for which perpose an xmm reg is
3807         being used (fp or simd) and to translate back and forth to the
3808         correct logical reg bank (fp or simd) for 'spill load's.
3809
3810 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3811
3812         Contributed under the terms of the MIT/X11 license by
3813         Jerry Maine <crashfourit@gail.com>.
3814
3815         * basic-simd.cs: Added tests for stressing the regalloc when running with
3816         16 simd regs and when simd and fp ops share the same reg bank.
3817
3818 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3819
3820         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3821         in shared generic code, we might have to look up the class in the
3822         RGCTX.  If we use the class directly, compute its GC descriptor.
3823
3824 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3825
3826         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3827
3828 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3829
3830         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3831         check for errors. Fixed the case when the class with the Main
3832         method is broken.
3833
3834 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3835
3836         Contributed under the terms of the MIT/X11 license by
3837         Jerry Maine <crashfourit@gail.com>.
3838
3839         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3840
3841 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3842
3843         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3844
3845 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3846
3847         * method-to-ir.c: Fix naming of stelem and ldelem.
3848
3849 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3850
3851         * driver.c (main_thread_handler): Check that the assembly loaded
3852         matches the filename when doing AOT.
3853
3854 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3855
3856         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3857         call it anymore.
3858
3859         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3860         utils/mono-sigcontext.h).
3861
3862         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3863         #ifdef.
3864
3865 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3866
3867         * mini.c (mono_codegen):
3868         Call profiler hook to keep track of method code buffers.
3869
3870 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3871
3872         * method-to-ir.c: Invoke write barriers for the
3873         Interlocked.(Compare)Exchange JIT intrinsics.
3874
3875 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3876
3877         * Makefile.am (version.h): Fix issues when built out of tree.
3878         Remove some redundant 'grep's piped through 'sed's.
3879
3880 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3881
3882         This patch is contributed under the terms of the MIT/X11 license
3883
3884         * mini-ppc.c (mono_arch_output_basic_block):
3885         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3886         for bits 32-47 with signed load/store diplacements for bits
3887         48-63.  Use prefered base/offset order for indexed form.
3888         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3889         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3890         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3891         OP_LOADI2_MEMBASE): Same.
3892         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3893         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3894         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3895         indexed form.
3896         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3897         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3898         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3899         OP_LOADI1_MEMINDEX): Same
3900         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3901         OP_STORER8_MEMINDEX): Same
3902         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3903         computations.
3904         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3905         for bits 32-47 with signed load/store diplacements for bits
3906         48-63.  Use prefered base/offset order for indexed form.
3907
3908 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3909
3910 This patch is contributed under the terms of the MIT/X11 license
3911
3912         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3913         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3914         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3915         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3916         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3917         cfg->stack_usage to avoid size warnings.
3918         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3919         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3920         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3921         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3922         to convert.
3923         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3924         after code varible is initialized.
3925         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3926         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3927         (mono_arch_emit_epilog): 
3928         Move Use ppc_load32 for cfg->stack_usage to avoid size
3929         warnings.
3930
3931 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3932
3933         * method-to-ir.c: The write barrier doesn't do the store anymore,
3934         so we have always to emit it.  Also, emit the wbarrier after the
3935         store.
3936
3937 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3940         for argument count 3 too.
3941
3942 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3943
3944         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3945         the caller handle the exceptions.
3946         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3947         method. Fixes #524498.
3948
3949 2009-07-22  Geoff Norton  <gnorton@novell.com>
3950
3951         * mini-exceptions.c: Fix build on ia64.
3952
3953 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3954
3955         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3956         barriers.
3957
3958 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3959
3960         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3961         code.
3962
3963 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3964
3965         * basic-simd.cs (Main): Pass args to the test driver.
3966
3967 2009-07-20  Geoff Norton  <gnorton@novell.com>
3968
3969         * mini-x86.h: Fix the x86 version guards to use Apple's
3970         properly defined macros.
3971
3972 2009-07-20  Geoff Norton  <gnorton@novell.com>
3973
3974         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3975         aligned access.
3976
3977 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3978
3979         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3980         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3981         the information which is needed for invokes, so only one locking+hash table
3982         lookup is needed.
3983
3984         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3985         
3986         * aot-compiler.c (add_generic_instances): Emit instances of 
3987         GenericComparer<T> for primitive types.
3988
3989 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3990
3991         * mini-posix.c: Fix linux build.
3992
3993 2009-07-19  Geoff Norton  <gnorton@novell.com>
3994
3995         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3996         mono_gdb_render_native_backtraces
3997         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3998         so we implement the sane semantics to the runtime here
3999         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4000         so we need to call it differently (mono_gdb_render_native_backtraces)
4001         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4002         here for default implementations.
4003         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4004         support Apple's weird syscall (SYS_fork) implementation and not busy
4005         loop in abort() on native crashes on OSX anymore.
4006
4007 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4008
4009         * aot-runtime.c (load_method): Change the handling of the
4010         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4011         are used.
4012
4013         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4014
4015 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4016
4017         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4018         seems to break the aot tests.
4019         
4020         * mini.c (mono_patch_info_equal): Fix the handling of 
4021         MONO_PATCH_INFO_RGCTX_FETCH.
4022
4023 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4026
4027         * mini.c (mono_patch_info_hash): Fix the handling of 
4028         MONO_PATCH_INFO_INTERNAL_METHOD.
4029         (mono_patch_info_equal): Ditto.
4030
4031 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4032
4033         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4034         in a few places.
4035         
4036         * mini-llvm.c: Add some infrastructure for AOT support.
4037
4038 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4039
4040         * mini-llvm-cpp.c: Update to the latest llvm api.
4041         
4042         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4043         option to false to prevent llvm from installing signal handlers which
4044         trip up the gc.
4045         
4046 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4047
4048         * cpu-x86.md:
4049         * cpu-amd64.md: Revert previous change as those instructions
4050         take 2 separate arguments. Remember to read the arch docs more
4051         carefully next time.
4052
4053 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4054
4055         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4056
4057 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4058
4059         * mini-ppc.c: exploit multiple load/store units if available (rest of
4060         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4061         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4062
4063 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4064
4065         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4066         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4067
4068 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4069
4070         * cpu-x86.md: Fix missing clobbering from trancendental simd
4071         ops.
4072
4073         * cpu-amd64.md: Same.
4074
4075 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4076
4077         Contributed under the terms of the MIT/X11 license by
4078         Jerry Maine <crashfourit@gail.com>.
4079
4080         * basic-simd.cs: Added tests for single and doulble indexers.
4081
4082         * cpu-amd64.md: Added simd opcode information.
4083
4084         * mini-amd64.c: Added IR to native simd generation code.
4085         Added simd register names and function that returns them.
4086
4087         * mini-amd64.h: Added marcos to turn on simd code compilation in
4088         amd64. Added max simd register count marco. Added caller/callee
4089         register mask marcos. Added marcos to use simd register bank.
4090
4091         * mini.h: Added helper marco for shufling dwords and simple
4092         floats.
4093
4094 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4095
4096         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4097
4098         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4099
4100         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4101         the length of the native code as well.
4102
4103         * basic-simd.cs: Add a test for #521662.
4104
4105 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4106
4107         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4108
4109 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4110
4111         * mini.c: Register function for getting the IP from a signal
4112         context with metadata.
4113
4114 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4115
4116         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4117         call a generic class init trampoline if needed. Fixes #519336.
4118
4119         * generics.cs: Add a test.
4120         
4121 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4122
4123         * method-to-ir.c: When doing a call which might be remote from
4124         shared generic code to other shared code with open type arguments,
4125         get the remoting invoke wrapper from the RGCTX and do an indirect
4126         call to it.
4127
4128 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4129
4130         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4131         after the unbox trampoline in the full-aot case.
4132
4133 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4134         
4135         * mini.c: Move initialization of jit_mutex before debugger initialization
4136         
4137         to avoid crashes.
4138         
4139         
4140         * Info.plist: added Info.plist and link flag to enable the mono executable
4141         to access other processes. Requires codesigning of the executable to work.
4142         
4143         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4144         
4145         compile on OS X.
4146         
4147
4148 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4149
4150         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4151
4152 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4153
4154         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4155         when the generic instance is an instantiation of a subclass of the
4156         methods class. Fixes #517166.
4157
4158 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4161         code.
4162
4163         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4164         AOTed code.
4165
4166         * CMakeLists.txt: Add minimal support for installation.
4167
4168 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4169
4170         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4171         determine whenever a method is directly callable to a separate function.
4172
4173         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4174         needed ones as a result of the previous change.
4175
4176         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4177         type of register arrays.
4178
4179         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4180         type of register arrays.
4181
4182 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4183         
4184         Contributed under the terms of the MIT/X11 license by
4185         Jerry Maine <crashfourit@gail.com>.
4186
4187         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4188
4189 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4190
4191         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4192
4193 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4194
4195         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4196         dump of structure return value. Fix some formatting.
4197         * cpu-s390x.md: Fix lengths of instruction sequences.
4198         * mini-s390.c: Minor formatting changes.
4199
4200 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4201
4202         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4203         Use sigaction on freebsd as well.
4204
4205 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4206
4207         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4208         uses #ifdef on it.
4209         
4210         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4211
4212 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4213
4214         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4215
4216 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4217
4218         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4219
4220 2009-06-20  Martin Baulig  <martin@ximian.com>
4221
4222         * debug-mini.c
4223         (MonoDebuggerThreadFlags): New enum typedef.
4224         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4225         (mono_debugger_thread_created): Added `gpointer func' argument;
4226         initialize the new `thread_flags' field.
4227
4228 2009-06-18  Martin Baulig  <martin@ximian.com>
4229
4230         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4231         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4232
4233         * debug-debugger.c
4234         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4235         flag in `MONO_DEBUGGER__info.runtime_info'.
4236
4237         * driver.c
4238         (mono_main): Call mini_debugger_set_attach_ok() if generics
4239         sharing is disabled.
4240
4241 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4242
4243         * aot-compiler.c (add_wrappers): Fix a warning.
4244
4245         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4246         the ppc load/store macro changes.
4247
4248 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4249
4250         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4251
4252         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4253         not just the got symbol.
4254
4255         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4256         on ppc.
4257
4258         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4259         ppc.
4260         
4261         * aot-compiler.c: Remove some fixmes.
4262
4263         * driver.c (mono_main): Print a helpful message when cross-compiling.
4264
4265         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4266
4267         * method-to-ir.c (initialize_array_data): Do the optimization if the
4268         target byte order is little endian, instead of the host byte order.
4269
4270         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4271         wrappers into the mscorlib image, Emit a unique plt symbol for each
4272         image, emit symbols for plt entries.
4273
4274         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4275         a .size directive.
4276         
4277 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4278
4279         * aot-compiler.c (add_wrappers): Avoid calling 
4280         mono_marshal_get_type_info () since it can assert for some types.
4281
4282         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4283         ldtoken are used inside wrappers.
4284
4285         * helpers.c: Add support for prefixing tools with the arch name.
4286
4287         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4288         quantities when using ilp32.
4289
4290         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4291         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4292
4293         * image-writer.c: Use .long on ilp32.
4294
4295         * aot-compiler.c: Use 32 bit loads on ilp32.
4296         
4297 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4298
4299         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4300
4301         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4302
4303         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4304
4305         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4306         second got slot of every aot image.
4307         
4308         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4309         aot on platforms with function pointers.
4310
4311         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4312         support for aot/full aot on ppc/ppc64.
4313         
4314         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4315         arguments which are needed on ppc.
4316
4317         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4318         argument.
4319
4320         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4321         
4322         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4323
4324         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4325
4326         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4327
4328         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4329
4330 2009-06-17  Geoff Norton  <gnorton@novell.com>
4331
4332         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4333
4334 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4335
4336         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4337         to control whenever the dwarf writer is in xdebug or aot mode.
4338         (emit_class_dwarf_info): Use a separate abbrev for structures without
4339         children.
4340
4341         * aot-compiler.c: Pass the appending parameter to 
4342         mono_dwarf_writer_create ().
4343
4344         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4345         falls through to its next bblock. Fixes #513931.
4346
4347         * iltests.il: Add a test.
4348
4349         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4350         infor even if emit_line is FALSE, as the apple linker seems to require it.
4351
4352         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4353
4354         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4355         gcc does.
4356         (emit_fde): Ditto.
4357
4358 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4359
4360         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4361         mips build.
4362
4363 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4364
4365         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4366         'has_call_handler' fields.
4367
4368         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4369
4370         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4371         first bblock if not needed. Fixes #512790.
4372         
4373 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4376         
4377         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4378         wrappers.
4379
4380         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4381         remoting-invoke-with-check wrappers, which are not needed when running with
4382         full-aot, since it doesn't support remoting.
4383         
4384 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4385
4386         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4387
4388         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4389         method info, it is not used anymore.
4390
4391         * mini.h: Bump AOT file format version.
4392         
4393         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4394         word smaller.
4395
4396         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4397         change above.
4398         
4399         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4400
4401         * mini.h: Bump AOT file format version.
4402         
4403 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4404
4405         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4406         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4407         iphone.
4408
4409         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4410         of CKFINITE and FBGE for VFP.
4411
4412 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4413
4414         * aot-compiler.c: Don't align code to 16 bytes on arm.
4415         
4416         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4417         before the methods they belong to.
4418
4419         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4420         the full-aot case if possible, since the trampoline will be called right 
4421         away.
4422
4423         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4424         trampolines to 1024 after the change above.
4425
4426         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4427         trampoline to save 8 bytes per trampoline.
4428
4429         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4430         change above.
4431
4432 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4435
4436 2009-06-08  Martin Baulig  <martin@ximian.com>
4437
4438         * debug-mini.c
4439         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4440         (_mono_debugger_throw_exception): Don't make this static.
4441         (_mono_debugger_unhandled_exception): Likewise.
4442         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4443
4444         * debug-mini.c
4445         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4446         (_mono_debugger_throw_exception): Add function prototype.
4447         (_mono_debugger_unhandled_exception): Likewise.
4448
4449         * mini-exceptions.c
4450         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4451         arg; return the first exception handler if the exception is caught
4452         and we're running inside the debugger.
4453         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4454         improve exception handle inside runtime-invoke, check whether the
4455         exception is actually caught in the method being invoked and not
4456         by the runtime-invoke-wrapper.
4457
4458 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4459
4460         * image-writer.c: Improve support for the osx assembler.
4461
4462         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4463         support them.
4464
4465 2009-06-08  Martin Baulig  <martin@ximian.com>
4466
4467         * debug-mini.c
4468         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4469         (_mono_debugger_throw_exception): Don't make this static.
4470         (_mono_debugger_unhandled_exception): Likewise.
4471         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4472
4473         * debug-mini.c
4474         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4475         (_mono_debugger_throw_exception): Add function prototype.
4476         (_mono_debugger_unhandled_exception): Likewise.
4477
4478         * mini-exceptions.c
4479         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4480         arg; return the first exception handler if the exception is caught
4481         and we're running inside the debugger.
4482         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4483         improve exception handle inside runtime-invoke, check whether the
4484         exception is actually caught in the method being invoked and not
4485         by the runtime-invoke-wrapper.
4486
4487 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * image-writer.c (append_subsection): Don't align subsections of the
4490         debug_line section as a workaround.
4491
4492         * dwarfwriter.c: Emit line number info in the AOT case as well.
4493
4494 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4495
4496         This patch is contributed under the terms of the MIT/X11 license
4497
4498        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4499        code_len <= code_size
4500
4501 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4502
4503         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4504
4505 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4506
4507         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4508         invoke wrappers, we now use trampolines instead.
4509
4510 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4511
4512         * mini-darwin.c: The exception thread must not be registered with
4513         the GC.
4514
4515 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4516
4517         * mini-gc.c: Disable the code because it makes SGen crash.
4518
4519 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4520
4521         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4522         instead of asserting.
4523
4524 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4527         output file after the code has been compiled.
4528
4529 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4530
4531         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4532
4533 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4534
4535         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4536         entries distinction to simplify the code.
4537
4538         * mini.h: Bump AOT file format version.
4539         
4540 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4541
4542         * objects.cs: Fix the signature of one of the tests.
4543
4544         * mini.c (mini_create_ftnptr): New helper function, moved here from
4545         object.c.
4546         (mini_get_addr_from_ftnptr): Ditto.
4547         (mini_init): Install the new helpers.
4548
4549 2009-05-28  Martin Baulig  <martin@ximian.com>
4550
4551         Correctly initialize the debugger when embedding Mono.
4552
4553         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4554         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4555         see documentation in mini_debug_running_inside_mdb().
4556
4557         * debug-debugger.c
4558         (mini_debug_running_inside_mdb): New function to check whether
4559         we're running inside mdb.
4560
4561         * mini.c (mini_init): Call mini_debugger_init() if we're running
4562         inside the debugger.
4563
4564         * driver.c (mono_main): Moved the call to mini_debugger_init()
4565         into mini_init() to make this work when embedding Mono.
4566
4567         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4568         calls to mini_debugger_init().
4569
4570         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4571         mono_debugger_main() -> mini_debugger_main() and put them inside a
4572         `MONO_DEBUGGER_SUPPORTED' conditional.
4573
4574 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4575
4576         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4577         this is no longer in use.
4578         * mini.h: Same.
4579
4580 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4581
4582         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4583
4584         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4585         methods.
4586
4587 2009-05-27  Martin Baulig  <martin@ximian.com>
4588
4589 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4590
4591         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4592         long_conv_to_r_un to 64 bits.
4593
4594         * cpu-x86.md: Increase the instruction size due to the changes.
4595
4596         * iltests.il.in: Add regression test.
4597
4598         Fixes #467201.
4599
4600 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4601
4602         * objects.cs: Move the previous test from basic.cs to here.
4603
4604 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4605
4606         * basic.cs: Add regression test for #506915.
4607
4608 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4609
4610         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4611         optimization we must check the bb of the first byte of stobj as
4612         it's the only one set in cil_offset_to_bb.
4613
4614         Fixes #506915.  
4615
4616 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4617
4618         * image-writer.c: Fix pointer directive on ppc64.
4619
4620 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4621
4622         * image-writer.c (asm_writer_emit_section_change): Avoid using
4623         .bss subsections on ppc too.
4624
4625 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4626
4627         * image-writer.c: Fix the definition of TARGET_ASM_....
4628         
4629         * image-writer.c: Fix the emission of assembler directives in the last
4630         change.
4631
4632         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4633         exception throwing code to accomodate ppc64.
4634
4635         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4636         size to work on ppc64 too.
4637
4638         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4639         too.
4640
4641         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4642         the assembler dialect instead of using platform specific defines.
4643
4644 2009-05-22  Geoff Norton  <gnorton@novell.com>
4645
4646         * mini-arm.c (get_call_info): If a structure is split between the stack
4647         and argument registers, we should not advance the stack pointer by the entire
4648         native size, but just by the amount that spilled.
4649
4650 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4651
4652         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4653         correctly.
4654
4655 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4656
4657         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4658         wrappers normally.
4659         
4660         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4661         methods so wrapper don't get added twice.
4662         (add_generic_instances): Don't add methods of arrays.
4663
4664         * generics.cs: Mark one test as !FULLAOT.
4665
4666 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4667
4668         * mini-x86.c (emit_move_return_value): Remove unused vars.
4669
4670 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4671
4672         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4673         decomposing 8 bytes structs into a LCALL.
4674
4675         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4676         pointer for where to store the returned regs.
4677
4678         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4679         state the concern.
4680
4681         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4682
4683 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4684
4685         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4686         without getenv.
4687
4688 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4689
4690         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4691
4692         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4693         generics.
4694
4695 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4696
4697         * local-propagation.c (mono_local_cprop): Avoid local propagation
4698         across paired add/sub if the first instruction dest reg is it's
4699         source reg. For example:
4700
4701         int_add_imm R12 <- R12 [1] clobbers: 1
4702         int_sub_imm R42 <- R12 [1] clobbers: 1
4703
4704         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4705         maintain the math identify.
4706
4707         Fixes #505375.
4708
4709 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4710
4711         * Makefile.am: avoid going on the network just to get the revision,
4712         use git log instead
4713
4714 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4715
4716         Fixed estimate for short branches on amd64 (they were off mark, and
4717         enabling call prolog-epilog instrumentations caused assertions).
4718         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4719         estimate for the maximum length of this basic block.
4720         * mini-amd64.c:
4721         - mono_arch_emit_prolog: compute max_length for each basic block
4722           (instead of max_offset), and inflate size estimate also for entry bb
4723           in case of code instrumentation.
4724         - mono_arch_output_basic_block: get rid of "cpos" (the current
4725           estimated "position" in the code), and always use "offset" instead,
4726           which is accurate; at the beginning of the function quickly recompute
4727           max_offset for all the remaining blocks, starting from the current
4728           cfg->code_len (which is correct, and not estimated) and using the
4729           estimated block lengths computed previously.
4730
4731 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4732
4733         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4734         functions, it is already done in the caller.
4735
4736         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4737
4738         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4739         MONO_ARCH_GSHARED_SUPPORTED define.
4740
4741         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4742
4743         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4744         function.
4745
4746 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4749         call to mono_marshal_get_rgctx_invoke ().
4750
4751         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4752         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4753         gshared use the static rgctx trampolines now.
4754         
4755         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4756         platform supports it.
4757
4758 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4759
4760         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4761
4762         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4763
4764 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4765
4766         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4767
4768         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4769         for ppc.
4770
4771 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4772
4773         Made it possible for mono_arch_instrument_epilog to preserve
4774         argument registers, otherwise instrumenting the "epilogue" before
4775         a tail call would clobber them.
4776         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4777         if like mono_arch_instrument_epilog but with an additional parameter
4778         that states if argument registers must be preserved.
4779         * mini.c: implemented mono_arch_instrument_epilog as a call to
4780         mono_arch_instrument_epilog_full without asking to preserve argument
4781         registers (this makes the existing code work as usual).
4782         * mini-amd64.c:
4783         - mono_arch_instrument_epilog: add parameter to transform it into
4784         mono_arch_instrument_epilog_full, and preserve argument registers
4785         when required.
4786         - mono_arch_output_basic_block, OP_TAILCALL case: call
4787         mono_arch_instrument_epilog_full.
4788         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4789         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4790         only transformed mono_arch_instrument_epilog into
4791         mono_arch_instrument_epilog_full.
4792
4793 2009-05-15  Geoff Norton  <gnorton@novell.com>
4794
4795         * mini-darwin.c: This works on arm now.
4796
4797 2009-05-14  Geoff Norton  <gnorton@novell.com>
4798
4799         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4800         embedding api.
4801
4802 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4803
4804         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4805         label names.
4806
4807         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4808         wrappers during full aot mode correctly.
4809
4810         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4811         methods correctly.
4812
4813         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4814         mono_metadata_type_hash ().
4815
4816 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4817
4818         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4819         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4820         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4821         Removed MONO_INST_BRLABEL from the instruction flags, and the
4822         remaining code that used it, because we do not support branches inside
4823         basic blocks (and branch target labels) anymore.
4824         * Makefile.am: As part of the above cleanup, remove reference to
4825         BURG files which don't exist anymore.
4826
4827 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4828
4829         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4830         osx.
4831
4832         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4833         to use mono_arch_throw_corlib_exception.
4834
4835         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4836         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4837
4838         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4839         domain mempool.
4840
4841         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4842
4843         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4844         for the got to make debugging easier and to avoid confusing it with the
4845         system got.
4846         
4847         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4848         method so a breakpoint can be set when using gdb.
4849
4850 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4851
4852         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4853         on mono_method_get_imt_slot ().
4854
4855         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4856         num_decodes variables.
4857
4858         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4859         change as it doesn't seem to work.
4860         
4861         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4862         wrappers.
4863
4864 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4865
4866         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4867         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4868
4869         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4870         builder when using full aot.
4871
4872         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4873         here, it is already handled.
4874         
4875         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4876         correctly for IMT.
4877
4878         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4879
4880         * mini-arm.h: Enable IMT for full aot.
4881         
4882         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4883         arch doesn't support it.
4884
4885         * mini.c (mini_init): Don't disable IMT for full aot if the
4886         architecture supports it.
4887
4888         * mini.h (MonoAotTrampoline): New enum containing the different types
4889         of 'numerous' trampolines.
4890         (MONO_AOT_FILE_VERSION): Bump this.
4891
4892         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4893         static rgctx trampolines. Add support for full-aot IMT thunks.
4894
4895         * mini-amd64.h: Enable IMT for full aot.
4896
4897         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4898         to exclude tests belonging to a category.
4899
4900         * generics.cs: Mark some tests with a !FULLAOT category.
4901
4902         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4903         generics tests.
4904
4905 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4906
4907         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4908         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4909         (emit_plt): Fix a warning.
4910
4911 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4912
4913         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4914         back into aot-compiler.c to a place where the other functions shared by
4915         the runtime and aot compiler are.
4916         
4917         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4918         as done previously, instead of in MonoAotFileInfo, since pointers might have
4919         alignment requirements.
4920
4921         * mini.h: Bump AOT file format version.
4922
4923 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4924
4925         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4926         that is used at runtime from the aot-compiler.c, this makes it
4927         work on setups that remove the AOT compiler from the output
4928         image. 
4929
4930 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4931
4932         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4933         PPC.
4934
4935         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4936
4937         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4938
4939         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4940         stuff to mono_arch_decompose_long_opts ().
4941         (mono_decompose_opcode): Remove some dead code.
4942
4943 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4944
4945         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4946         cmethod can be null for quite a some reasons.
4947
4948 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4949
4950         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4951
4952 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4953
4954         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4955
4956 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4959         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4960         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4961         calls returning structures by addr on amd64.
4962
4963         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4964
4965         * iltests.il.in: Restructure the tail call tests a bit.
4966         
4967 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4968
4969         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4970         for virtual methods too.
4971
4972 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4973
4974         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4975         due to regression in verifying System.dll.
4976
4977 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4980         in dynamic methods.
4981
4982         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4983         instances.
4984
4985         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4986         g_str_hash () which can change.
4987
4988         * driver.c (mini_regression): Disable optimizations not supported by
4989         the cpu. Fixes #500019.
4990
4991         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4992         build.
4993
4994 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4995
4996         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4997         to the latest LLVM code.
4998
4999 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5000
5001         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5002
5003 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5004
5005         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5006         x86/amd64.
5007
5008         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5009         no longer saving offsets, so just save the patch types along with the other
5010         info.
5011         * aot-runtime.c (load_patch_info): Update after the changes to 
5012         encode_patch_list ().
5013         (decode_got_entry): Removed, merged into load_patch_info ().
5014         (is_shared_got_patch): Removed, call the same function from
5015         aot-compiler.c.
5016
5017         * mini.h: Bump aot file format version.
5018         
5019         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5020         half-finished no-dlsym code.
5021
5022         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5023         option.
5024
5025         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5026         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5027
5028 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5031         buffer length to work with AOT code.
5032
5033         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5034         ldfld/stfld opcodes.
5035
5036         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5037         as it is not used.
5038
5039         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5040
5041         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5042
5043         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5044         LLVM API.
5045
5046         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5047         if needed. Don't decompose long operations when using llvm.
5048
5049 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5050
5051         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5052         PAGESIZE constant.
5053
5054         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5055
5056 2009-05-03  Martin Baulig  <martin@ximian.com>
5057
5058         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5059         mono_debugger_insert_method_breakpoint() since the class init
5060         handler we're inserting at the top of the method already gives us
5061         a notification.
5062
5063 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5064
5065         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5066         to mono_arch_decompose_long_opts () for x86 and arm.
5067
5068 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5069
5070         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5071         TARGET_AMD64 here.
5072
5073 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5074
5075         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5076         JIT code.
5077
5078 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5079
5080         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5081         number of trampolines used in full-aot mode.
5082
5083         * aot-compiler.c: Add an ntrampolines option to set the number of 
5084         trampolines emitted in full-aot mode.
5085
5086 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5087
5088         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5089         a volatile load. Get rid of get_tempname (), llvm assigns names
5090         automatically.
5091
5092         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5093         builder function.
5094
5095         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5096         a value.
5097
5098         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5099         level 1.
5100
5101         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5102         to the same register as a fixed sreg2. Fixes #497271.
5103
5104         * iltests.il.in: Add a new test.
5105
5106 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5107
5108         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5109         stack, since pushes complicate exception handling.
5110
5111         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5112         the stack if they are passed using moves.
5113
5114         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5115
5116         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5117         when using llvm.
5118
5119         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5120         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5121         of FMOVE if it is an R4.
5122
5123 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5124
5125         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5126
5127         * mini.h (LLVMCallInfo): New structure to store calling convention 
5128         information for the LLVM back end similar to the CallInfo structures in 
5129         the back-ends.
5130
5131         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5132         call information in a format usable by LLVM.
5133         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5134
5135         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5136         mono_llvm_emit_call () when compiling using LLVM.
5137
5138         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5139         comments to all functions. Fix memory leaks. Add a public init/cleanup
5140         function.
5141
5142         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5143
5144         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5145         mono_array_new_va () jit icall.
5146         
5147 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5148
5149         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5150         multiple machine description files to be specified.
5151         * mini-ops.h: fixes for cross-compilation.
5152
5153 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5154
5155         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5156         some porting work.
5157
5158 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5159
5160         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5161         to prevent asserts in various passes. Fixes #497220.
5162
5163 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5164
5165         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5166         a racy assert.
5167
5168         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5169         table to avoid duplicates.
5170
5171         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5172         
5173         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5174         option is used.
5175
5176 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5177
5178         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5179         is for method or field access.
5180
5181 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5182
5183         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5184         a Value to stdout.
5185
5186         * mini-llvm.c (mono_llvm_emit_method): Use it.
5187         
5188         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5189         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5190         on volatile values.
5191
5192         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5193         synchronized methods.
5194
5195         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5196
5197         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5198
5199         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5200         OP_LOADI8_MEM.
5201
5202         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5203         allowing some options to be set dynamically.
5204
5205 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5208         unconditional branch.
5209
5210         * mini.h (MonoTrampolineType): Add new trampoline type 
5211         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5212         compiled code.
5213
5214         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5215         function.
5216
5217         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5218         creation function.
5219
5220         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5221         is enabled. Instead, use the llvm vcall trampoline.
5222         
5223         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5224
5225         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5226         
5227         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5228         functions.
5229
5230         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5231         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5232
5233         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5234         OP_IA64_CSET opcode.
5235
5236         * mini.c: Fix a warning.
5237
5238         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5239         THROW to the appropriate llvm type.
5240
5241 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5242
5243         * mini.c (mini_method_compile): Add statistics for methods JITted
5244         with/without LLVM.
5245
5246 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5247
5248         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5249         OP_IA64_CMP_<cond>_IMM opcodes.
5250
5251 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5254         corlib exceptions.
5255
5256         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5257         correctly.
5258
5259         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5260         GENERICINST.
5261
5262 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5263
5264         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5265
5266 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5267
5268         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5269         support.
5270
5271         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5272         rgctx invoke trampolines for x86.
5273
5274         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5275         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5276         (mono_arch_get_vcall_slot): Simplify this.
5277
5278 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5279
5280         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5281         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5282
5283 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5284
5285         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5286         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5287
5288         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5289
5290         * liveness.c (visit_bb): Remove a needless assert.
5291
5292 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5295         full aot support to the arch specific code.
5296
5297         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5298
5299         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5300
5301         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5302         
5303         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5304         collect information about the delegate invoke impl trampolines.
5305
5306         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5307         to save trampolines during full-aot mode.
5308
5309         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5310         creation function which returns a trampoline which sets the rgctx
5311         argument.
5312         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5313         wrapper if possible.
5314         (mono_delegate_trampoline): Ditto.
5315
5316         * mini.c (mono_jit_runtime_invoke): Ditto.
5317
5318         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5319         
5320         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5321
5322         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5323         
5324 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5325
5326         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5327         just setting the opcode to OP_NOP.
5328
5329 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5330
5331         * mini.c (mini_method_compile): Put the last change inside an 
5332         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5333         
5334         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5335         and extend live ranges to cover the whole method when using xdb.
5336
5337         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5338         do it in the trampolines.
5339
5340         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5341         needed.
5342
5343         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5344         
5345         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5346         call code in full-aot mode since IMT is disabled there.
5347         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5348         new JIT no longer has that restriction.
5349
5350         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5351
5352         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5353         a more compact format.
5354         (mono_aot_wrapper_name): New function to return a unique name for a
5355         wrapper method, also used by the AOT runtime.
5356
5357         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5358         aot-compiler.c.
5359
5360         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5361         when a ICollection<T> etc is encountered.
5362         (add_generic_instances): Process method arguments/locals too.
5363         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5364         trampoline names.
5365
5366         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5367         
5368 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5369
5370         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5371
5372         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5373
5374         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5375         representing the result of the decomposition. Nullify instructions
5376         instead of setting them to OP_NOP since nops can't have registers
5377         set.
5378
5379 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5380
5381         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5382         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5383         info. Strip 'mapping symbols' on ARM.
5384
5385         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5386         
5387         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5388         this with the native genmdesc.
5389
5390 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5391
5392         * aot-runtime.c:  Fixing the MSVC build.
5393
5394         Code is contributed under MIT/X11 license.
5395
5396 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5399         JITted code depends on it.
5400
5401 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5402
5403         * aot-compiler.c: Use new MonoGenericParam accessors.
5404
5405 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5406
5407         Reduce memory usage and improve correctness wrt MonoGenericParam
5408         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5409         handing.  Avoid allocating MonoGenericParams, but use the ones in
5410         the container itself.
5411
5412 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5413
5414         * tasklets.c: Return exceptions in the out argument.
5415
5416 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5417
5418         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5419         opcode. Use pointer types in more places instead of casting them to 
5420         integers.
5421
5422         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5423         optimizations.
5424         (mono_llvm_optimize_method): New helper function to optimize a method.
5425
5426         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5427         widening code so it could be called from more places.
5428         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5429         code paths in the call opcodes.
5430
5431 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5432
5433         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5434
5435 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5436
5437         * dwarfwriter.c: Use _ to separate class name 
5438         components as gdb can't handle '.'. Represent reference variables
5439         as 'class <NAME>&'.
5440         
5441         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5442
5443         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5444         
5445         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5446
5447         * gc-test.cs: New file with GC stack marking tests.
5448         
5449         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5450         negative numbers for vfp.
5451
5452         * basic-float.cs: Add a test.
5453         
5454 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5455
5456         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5457
5458 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5459
5460         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5461         part of tasklet/continuation support.
5462
5463 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5464
5465         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5466         amd64 opcodes inside an ifdef.
5467
5468         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5469         of complex types.
5470         
5471         * dwarfwriter.c (emit_type): Emit the class info for classes.
5472
5473 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5474
5475         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5476
5477         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5478
5479         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5480
5481         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5482
5483 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5484
5485         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5486
5487         * mini-llvm.c: Update comments.
5488
5489         * mini.h (COMPILE_LLVM): New macro.
5490
5491         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5492
5493         * ssa.c (mono_ssa_compute): Ditto.
5494         
5495         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5496         the unwind ops from a DWARF FDE.
5497
5498         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5499         methods by extracting the dwarf unwind ops from the unwind info generated
5500         by LLVM.
5501         
5502         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5503         calls.
5504
5505         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5506         addressing modes.
5507
5508 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5509
5510         * Makefile.am (llvm_sources): Enable this.
5511
5512         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5513         failing back to the JIT if something cannot be handled.
5514
5515         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5516         compiling with LLVM.
5517
5518         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5519         compiling with LLVM.
5520
5521         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5522         compiling with LLVM.
5523
5524         * mini-ops.h: Add a few opcodes needed by LLVM.
5525
5526         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5527         has no unwind info.
5528
5529         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5530         backend.
5531
5532         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5533
5534         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5535
5536 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5537
5538         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5539         ridiculously large methods.
5540
5541 2009-03-31  Martin Baulig  <martin@ximian.com>
5542
5543         * debug-debugger.c (debugger_remove_breakpoint): Call
5544         mono_debugger_remove_class_init_callback ().
5545
5546 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5547
5548         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5549         right before emitting code, not at the start.
5550
5551         * mini.c (mono_postprocess_patches): Extract this into a separate function
5552         from mono_codegen ().
5553
5554         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5555         byref types correctly.
5556
5557 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5558
5559         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5560         by the last change.
5561
5562 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5565         indirect calls, this avoids problems where get_vcall_slot () would get
5566         confused by the native code for the instruction preceeding the call.
5567         (mono_arch_get_vcall_slot): Simplify this.
5568         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5569
5570         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5571         register allocator now seems to depend on them instead of the data in
5572         cpu-<ARCH>.md.
5573
5574         * mini.c (mini_method_compile): Throw the correct type of exception if
5575         mono_method_get_header () fails because of a loading error.
5576
5577 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5578
5579         * mini.c (mini_method_compile): Clear the loader error if the method
5580         header cannot be decoded.
5581
5582         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5583         interface methods on proxies correctly.
5584
5585         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5586         this argument for vtype methods. Add precise liveness info for arguments.
5587
5588         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5589         LIVERANGE_START/END opcodes.
5590
5591         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5592         for arguments and values in registers.
5593
5594 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5595
5596         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5597         return a valuetype. Fixes #487518.
5598
5599         * iltests.il: Add a test.
5600         
5601         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5602
5603         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5604         closed over a null reference correctly.
5605
5606 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5607
5608         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5609
5610 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5611
5612         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5613         allocated to the same registers as fixed sregs.
5614
5615 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5616
5617         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5618         ATOMIC_CAS_IMM ops.
5619
5620         * method-to-ir.c: Handle more cases for
5621         Interlocked.CompareExchange.
5622
5623         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5624         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5625         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5626
5627 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * aot-runtime.c (decode_method_ref): Fix a warning.
5630
5631         * unwind.c (mono_unwind_frame): Ditto.  
5632
5633 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5634
5635         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5636         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5637
5638         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5639         fix the handling of large values in the ALU_PC_G0_NC relocation.
5640
5641 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5642
5643         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5644
5645 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5646
5647         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5648         ops.
5649
5650 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5651
5652         * method-to-ir.c: MINI_OP3 needs a comma.
5653
5654         * method-to-ir.c, mini.h, mini.c: Remove
5655         mono_init_op_sreg_counts ().
5656
5657 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5658
5659         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5660         OP_JMP.
5661         
5662         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5663         assertion.
5664
5665         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5666
5667         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5668         code somewhat.
5669
5670 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5671
5672         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5673         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5674         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5675         operations.
5676
5677 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5678
5679         * driver.c: Change location of gc_wrapper.h.
5680
5681         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5682         inside finally clauses correctly. Fixes #485721.
5683
5684         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5685         after the change above.
5686
5687         * exceptions.cs: Add a test.
5688         
5689 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5692
5693         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5694         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5695         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5696
5697         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5698         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5699
5700 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5701
5702         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5703         Simplify logic for ensure_method_is_allowed_to_call_method. 
5704         Handle wrappers on callers.
5705
5706 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5707
5708         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5709         them don't run yet.
5710
5711         * basic-simd.cs: Fix the names of some test methods.
5712
5713 2009-03-18  Geoff Norton  <gnorton@novell.com>
5714
5715         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5716
5717 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5718
5719         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5720
5721 2009-03-17  Jb Evain  <jbevain@novell.com>
5722
5723         * driver.c: remove now uneeded call to mono_gc_base_init before
5724         mono_profiler_load.
5725
5726 2009-03-17  Jb Evain  <jbevain@novell.com>
5727
5728         * dwarfwriter.c (token_handler): handle more cases.
5729
5730 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5731
5732         * method-to-ir.c: Remove more dead code (that was required only
5733         because of method_is_safe). Fix compiler warnings.
5734
5735 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5736
5737         * method-to-ir.c: Remove unneeded/useless method_is_safe
5738         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5739
5740 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5741
5742         * mini.c (mini_method_compile): Print the method been compiled with
5743         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5744         for people not familiar with the runtime.
5745
5746 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5747
5748         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5749         a managed object which is later put into a GList. Return its class instead.
5750
5751         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5752         stack slots when using sgen.
5753
5754 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5755
5756         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5757
5758 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5759
5760         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5761         > so it works on the first vreg as well.
5762
5763 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5764
5765         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5766         trigger randomly.
5767
5768         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5769         
5770         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5771         implement GArray.
5772
5773 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5774
5775         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5776         native->IL offset mapping.
5777
5778 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5779
5780         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5781
5782         * basic.cs: Add a test.
5783
5784 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5785
5786         * mini-x86.c (mono_arch_output_basic_block): Use different
5787         registers in case the ones we want to overwrite are used by the
5788         other operand.  Fixes regression in #480807.
5789
5790 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5791
5792         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5793
5794         * dwarfwriter.c (emit_line_number_info): The line number info for
5795         IL code was off by one. Fix that.
5796
5797         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5798         stack.
5799
5800 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5801
5802         Contributed under the terms of the MIT/X11 license by Steven
5803         Munroe <munroesj@us.ibm.com>.
5804
5805         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5806         Fixes #483462.
5807
5808 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5811         as well.
5812
5813 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5814
5815         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5816         the delegate ctor handling code. Fixes #482638.
5817         
5818         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5819         #481458.
5820
5821         * iltests.il.in: Add a test.
5822         
5823         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5824         mini-posix.c.
5825
5826 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5827
5828         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5829         is shared generic code, return the trampoline, even if the method
5830         has already been compiled.  Fixes #479763.
5831
5832         * mini.c, mini.h: New function
5833         mono_jit_find_compiled_method_with_jit_info() which is the same as
5834         mono_jit_find_compiled_method() but also returns the jit info.
5835
5836 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5837
5838         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5839         for methods which actually have one.  For all other methods, make
5840         sure the this argument var is live the whole method.
5841
5842         * mini.c (mini_method_compile): Every shared method has a
5843         this/vtable/mrgctx info.  Fixes #480807.
5844
5845 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5846
5847         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5848         generic/imt thunks where some entries branch through the vtable,
5849         while other entries branch directly.
5850
5851 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5852
5853         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5854
5855         * mini-windows.c: Ditto.
5856         
5857         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5858         ctors.
5859
5860 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5861
5862         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5863         down an assert.
5864
5865 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5866
5867         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5868         #481403.
5869
5870 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5871
5872         * exceptions-x86.c: Include debug-mini.h - fixes build.
5873
5874 2009-03-04  Martin Baulig  <martin@ximian.com>
5875
5876         * debug-mini.c: Clean up the exception API and add documentation.
5877         (mono_debugger_handle_exception): New public method; this is
5878         called when throwing an exception or encountering an unhandled one.
5879         (mono_debugger_call_exception_handler): Formerly known as
5880         mono_debugger_handle_exception(); this is used to tell the
5881         debugger that we're about to invoke an exception handler.
5882
5883 2009-03-04  Martin Baulig  <martin@ximian.com>
5884
5885         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5886         ../metadata/mono-debug-debugger.c; save and reset exception state.
5887
5888 2009-03-02  Martin Baulig  <martin@ximian.com>
5889
5890         * debug-mini.c: Moved the debugger exception handling here from
5891         ../metadata/mono-debug-debugger.c.
5892
5893         * debug-mini.h
5894         (MonoDebuggerExceptionAction): New exception typedef.
5895
5896         * debug-mini.c
5897         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5898
5899         * exceptions-amd64.c
5900         (mono_amd64_throw_exception): Use the new debugger exception
5901         handling code.
5902
5903         * mini-exceptions.c
5904         (mono_handle_exception_internal): Don't call
5905         mono_debugger_unhandled_exception() here.
5906
5907 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5908
5909         * mini.c aot-compiler.c: Update after the changes to 
5910         mono_marshal_get_runtime_invoke ().
5911
5912         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5913         Virtual generic methods might not have method->slot set, work around
5914         that.
5915
5916         * generics.cs: Add a test.
5917
5918 2009-03-02  Geoff Norton  <gnorton@novell.com>
5919
5920         * mini.c:
5921         * driver.c: Allow signal chaining of SIGFPE as well.
5922
5923 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5924
5925         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5926         this since it now receives the method not its generic context in the
5927         IMT reg.
5928
5929         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5930         generic/imt thunks where some entries branch through the vtable, while
5931         other entries branch directly.
5932
5933         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5934
5935         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5936         support for interface methods as well.
5937
5938         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5939         using the normal IMT thunks.
5940
5941         generics.cs: Add new tests.
5942         
5943         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5944         the generic inst to the generic imt thunks. This fixes AOT support, 
5945         improves consistency with the normal IMT thunks, and makes it easier to
5946         add support for interface generic virtual methods later.
5947
5948         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5949         
5950 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5951
5952         * driver.c (mono_set_signal_chaining): New public API function to enable
5953         signal chaining on POSIX platforms.
5954
5955         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5956         (si@lindenlab.com) to implement signal chaining. The original patch was
5957         contributed under the MIT X/11 license:
5958         https://bugzilla.novell.com/show_bug.cgi?id=318894
5959
5960 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5961
5962         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5963         too until it can be made to run on amd64.
5964
5965 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5966
5967         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5968         to  get_generic_context_from_code () + get_call_info () if possible.
5969
5970 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5971
5972         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5973         suspend-on-sigsegv functionality.
5974
5975         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5976         to suspend when a native SIGSEGV is received. This is useful for debugging
5977         crashes which don't happen under gdb, since a live process contains more
5978         information than a core file.
5979
5980         * mini-exceptions.c (mono_print_thread_dump): Use 
5981         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5982
5983         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5984
5985         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5986         
5987         * basic-float.cs: Disable the tests which currently fail on amd64.
5988
5989         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5990         value to mono_arch_patch_callsite () to fix crashes.
5991         
5992         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5993
5994 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5995
5996         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5997         nop code by patching the call address to point to the nullified class init
5998         trampoline, as the former does not seem to be safe on SMP machines.
5999
6000 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6001
6002         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6003         they were wrong.
6004
6005 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6006
6007         * basic-float.cs basic-calls.cs: Fix warnings.
6008
6009 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6010
6011         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6012         correct frame pointer in the LMF.  Should fix #478394.
6013
6014 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6015
6016         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6017
6018         * image-writer.c: Make the binary writer less verbose.
6019
6020 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6021
6022         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6023         are called from runtime invoke wrappers.
6024
6025 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6026
6027         * cpu-ppc.md (store_memindex): Increase the size of this.
6028
6029 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6030
6031         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6032
6033         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6034
6035         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6036         OP_LCONV_TO_R_UN.
6037
6038         Last fix for of #467201.
6039
6040
6041 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6042
6043         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6044
6045         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6046         and long_conv_to_r8_2:
6047
6048         Fixed part of #467201.
6049
6050 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6051
6052         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6053
6054         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6055         conversion to 32 bits.
6056
6057         * cpu-x86.md: Increase the size of int_conv_to_r4.
6058
6059         * basic-float.cs: Add a test for this.
6060
6061         Fixed part of #467201.
6062
6063 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6064
6065         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6066
6067         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6068         conversion to 64 bits.
6069
6070         * basic-float.cs: Add a test for this.
6071
6072         Fixed part of #467201.
6073
6074 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6075
6076         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6077
6078         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6079         This behavior is compatible with MS.
6080
6081         * iltest.il.in: Add a test for this.
6082
6083         Fixed part of #467201.
6084
6085 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6086
6087         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6088
6089         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6090         change the precision of the value.
6091
6092         * cpu-x86.md: Define len for float_conv_to_r4.
6093
6094         * basic-float.cs: Add a test for this.
6095
6096         Fixed part of #467201.
6097
6098 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6099
6100         * mini.c: Adjust locking order to the new semantics where the loader lock
6101         comes first.
6102
6103 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6104
6105         * aot-runtime.c:
6106         * mini-amd64.c:
6107         * mini-arm.c:
6108         * mini-ia64.c:
6109         * mini-mips.c:
6110         * mini-ppc.c:
6111         * mini-sparc.c:
6112         * mini-trampolines.c:
6113         * mini-x86.c:
6114         * mini.c:
6115         * tramp-alpha.c:
6116         * tramp-amd64.c:
6117         * tramp-arm.c:
6118         * tramp-hppa.c:
6119         * tramp-ia64.c:
6120         * tramp-mips.c:
6121         * tramp-ppc.c:
6122         * tramp-s390.c:
6123         * tramp-s390x.c:
6124         * tramp-sparc.c:
6125         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6126
6127 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6128
6129         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6130         as it is incorrect.
6131
6132 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6133
6134         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6135         for cctors if needed.
6136
6137 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6138
6139         * mini-ppc.c: Fix build on Darwin.
6140
6141 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6142
6143         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6144         version instead of 3 as valgrind doesn't like version 3.
6145
6146         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6147
6148         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6149         usable for hashing methods.
6150         (emit_extra_methods): Use the new hash to avoid putting every method in the
6151         same hash bucket.
6152
6153         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6154
6155         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6156         whenever a method ref could match a method.
6157         
6158         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6159         test to fail.
6160         
6161         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6162         methods refs.
6163
6164         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6165
6166         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6167         the encoding buffer.
6168
6169         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6170         mono_method_get_header () on inflated methods as an optimization.
6171
6172 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6173
6174         * ssa.c (fold_ins): Fix another crash if the instruction following the
6175         switch was optimized away.
6176
6177 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6178
6179         Contributed under the terms of the MIT/X11 license by Steven
6180         Munroe <munroesj@us.ibm.com>.
6181
6182         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6183
6184 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6185
6186         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6187         around the mono_domain_alloc calls, it is now done by the functions
6188         themselves.
6189
6190         * aot-compiler.c (compile_method): Only add wrappers referenced by
6191         the method if compiling with full AOT.
6192         (mono_compile_assembly): Error out if --aot=full is specified on
6193         a platform where it is not supported.
6194
6195         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6196         on ARM too.
6197
6198         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6199         AOT support.
6200
6201         * aot-runtime.c (load_named_code): Handle 
6202         mono_arm_throw_exception_by_token.
6203
6204         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6205
6206         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6207         unaligned.
6208
6209         * Makefile.am (fullaotcheck): Exit if a test fails.
6210
6211         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6212         on ARM.
6213         (mono_compile_assembly): Handle the assembler failing.
6214
6215         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6216         accepting subsections of .bss.
6217
6218         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6219         was optimized away.
6220
6221         * aot-compiler.c: Remove some unused includes.
6222         
6223         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6224         now in MonoImageWriter.
6225
6226         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6227         code sequence which matches a non-virtual call. Fixes #472654.
6228
6229 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6230
6231         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6232         xdebug code.
6233         
6234         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6235         use the image/dwarf writers directly.
6236
6237         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6238         field.
6239
6240         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6241         MonoDwarfWriter.
6242
6243         * image-writer.h: Fix some typos.
6244
6245         * dwarfwriter.h dwarfwriter.c: New files.
6246         
6247         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6248         separate module.
6249
6250         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6251         argument to return unwind info.
6252
6253         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6254
6255         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6256         
6257         * aot-runtime.c (decode_method_ref): Add a case for 
6258         MONO_AOT_METHODREF_WRAPPER_NAME.
6259
6260         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6261         for AOT.
6262
6263         * aot-compiler.c (encode_method_ref): Use the new constants.
6264
6265         * aot-runtime.c (decode_method_ref): Ditto.
6266
6267         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6268         be compiled, not the icall itself.
6269
6270 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6271
6272         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6273         using decode_method_ref ().
6274
6275         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6276         convert it to an in32. Fixes #475859.
6277
6278         * arrays.cs: Add a test.
6279
6280 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6281
6282         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6283         OP_LCONV_TO_U2.
6284
6285         * basic-long.cs: Add a test.
6286
6287 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6288
6289         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6290         remove the frame pointer in leaf methods which don't receive any
6291         arguments, don't throw exceptions and don't do dynamic stack
6292         allocations.
6293
6294 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6295
6296         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6297         the fail_tramp changes. Hopefully fixes #475132.
6298
6299 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6300
6301         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6302         instead of mono_metadata_signature_dup_full.
6303
6304 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6305
6306         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6307         for processing jump tables. Fixes #473787.
6308
6309 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6310
6311         * mini-generic-sharing.c: mini_method_get_context() just calls
6312         mono_method_get_context_general() now.
6313
6314         * mini.c, mini.h: Moved get_object_generic_inst(),
6315         construct_object_context_for_method() and
6316         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6317
6318 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6319
6320         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6321         basic block fell through to its successor bblock without a branch. Fixes
6322         #474718.
6323
6324         * iltests.il.in: Add a test.
6325         
6326         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6327         (can_encode_patch): We can now handle arrays of generic parameters and
6328         array methods.
6329
6330         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6331
6332         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6333         the AOT file to avoid some #ifdefs in aot-runtime.c
6334
6335         * mini.h: Bump AOT file format version.
6336
6337 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6338
6339         * Makefile.am (fullaotcheck): Make this run the tests.
6340
6341         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6342
6343 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6344
6345         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6346         individually.  Fixes #473482.
6347
6348 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6349
6350         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6351
6352 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6353
6354         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6355         (mono_compile_assembly): Hush compile warnings about
6356         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6357         code path.
6358
6359 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6360
6361         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6362
6363         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6364
6365         * aot-compiler.c: Fix arm support.
6366
6367         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6368         img_writer_emit_unset_mode () function.
6369
6370         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6371         (mono_unwind_get_dwarf_pc_reg): Ditto.
6372
6373         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6374         Move almost all platform specific code to a set of arch_ functions, 
6375         and document them to ease porting.
6376         
6377         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6378
6379         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6380
6381         * aot-compiler.c: Extract the image writing functionality into a separate
6382         module to reduce the size of this file.
6383
6384 2009-02-09  Geoff Norton  <gnorton@novell.com>
6385
6386         * mini-s390.c: Fix the signature of emit_sig_cookie.
6387
6388 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6389
6390         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6391
6392         * aot-runtime.c (is_shared_got_patch): Ditto.
6393
6394         * aot-runtime.c (load_named_code): Cope with the fact that 
6395         decode_got_entry () won't decode the patch fully if its corresponding got
6396         entry is already filled.
6397         
6398         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6399         Initialize *ji.
6400         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6401
6402         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6403         as the moving pointer instead of 'buf' for consistency with the rest of the
6404         codebase.
6405         (mono_arch_create_monitor_exit_trampoline): Ditto.
6406
6407         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6408         generic_class_init trampolines.
6409         (add_generic_class): Extract some code from add_generic_instances () into a
6410         separate function so it can be called from other places too.
6411         (compile_method): Call add_generic_class () for the classes of inflated methods
6412         referenced by the method.
6413         (can_encode_patch): Allow references to generic parameters.
6414
6415         * aot-runtime.c: Add support the patches required by the new trampolines.
6416         
6417         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6418         support.
6419
6420         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6421         full-aot support.
6422
6423         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6424         this from get_throw_pending_exception, make the signature full aot compatible.
6425
6426         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6427
6428         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6429
6430         * exceptions.cs: Add a test.
6431
6432 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6433
6434         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6435         use the DWARF_DATA_ALIGN constant instead.
6436
6437         * exception-<ARCH>.c: Update after the above change.
6438
6439         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6440         dwarf unwinder.
6441
6442         * mini-arm.c: Enable the dwarf unwinder.
6443
6444         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6445         instead of mono_class_setup_vtable ().
6446
6447 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6448
6449         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6450         dwarf unwinder.
6451
6452         * mini-x86.h: Enable the dwarf unwinder.
6453
6454 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6455
6456         Fix mcs/tests/test-7.cs
6457         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6458         2009-02-03.
6459
6460 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6461
6462         * mini.c (print_jit_stats): Remove some unused statistics.
6463
6464 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6465
6466         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6467
6468 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6469
6470         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6471         the method we get from mono_object_get_virtual_method() because
6472         that function does it properly, now.
6473
6474 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6475
6476         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6477         opcodes. Fixes #472775.
6478
6479 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6480
6481         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6482         fact that mono_find_jit_info() sometimes returns the context
6483         corresponding to the jit info in new_ctx.  Fixes #472600.
6484
6485 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6486
6487         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6488         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6489         klass->enum_basetype directly.
6490
6491         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6492         enum subtypes.
6493
6494         * unwind.c: Avoid 0 sized arrays.
6495
6496 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6497
6498         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6499         size on systems with 64k pages. Fixes #471389.
6500
6501 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6502
6503         Contributed under the terms of the MIT/X11 license by Steven
6504         Munroe <munroesj@us.ibm.com>.
6505
6506         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6507         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6508         necessary.
6509
6510 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6511
6512         Contributed under the terms of the MIT/X11 license by Steven
6513         Munroe <munroesj@us.ibm.com>.
6514
6515         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6516         comparison fix.
6517
6518         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6519         The trampoline can be longer on PPC64.
6520
6521 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6522
6523         Contributed under the terms of the MIT/X11 license by Steven
6524         Munroe <munroesj@us.ibm.com>.
6525
6526         * mini-ppc.c: Compiler warning fixes and trivial code
6527         simplifications.
6528
6529 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6532         ins->dreg which could be a hardware register, not a vreg.
6533
6534         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6535         
6536         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6537         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6538
6539         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6540         
6541         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6542         ->dreg, that is not the vreg we are looking for.
6543
6544         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6545
6546         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6547         LIVERANGE_END.
6548
6549         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6550         strange crashes.
6551
6552 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6553
6554         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6555
6556         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6557         the line diff is 0.
6558
6559         * aot-compiler.c: Add xdebug support on x86.
6560
6561         * unwind.c: Add x86 support.
6562         
6563         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6564         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6565
6566         * mini.c (mini_method_compile): Ditto.
6567         
6568         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6569         the variable index.
6570
6571         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6572         which mimic .push_section/.pop_section in GAS.
6573         
6574         * aot-compiler.c: Emit precise live range information for variables.
6575
6576         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6577
6578         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6579         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6580         them.
6581
6582         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6583         the live ranges of variables.
6584
6585         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6586         of the variable in terms of native offsets.
6587
6588 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6589
6590         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6591         
6592 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6593
6594         Contributed under the terms of the MIT/X11 license by Steven
6595         Munroe <munroesj@us.ibm.com>.
6596
6597         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6598         order (offset then base reg) for ppc_load_multiple_regs.
6599         (emit_save_saved_regs) Correct operand order for
6600         ppc_store_multiple_regs.
6601         (mono_arch_get_call_filter): Correct operand order for
6602         ppc_load_multiple_regs.
6603
6604         * mini-ppc.c (emit_memcpy): Fix operand order for
6605         ppc_load_reg_update and ppc_store_reg_update.
6606         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6607         (mono_arch_emit_epilog): Correct operand order for
6608         ppc_load_multiple_regs.
6609
6610         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6611         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6612
6613 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6614
6615         * cpu-ppc64.md: Fixed storer4_memindex length.
6616
6617 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6618
6619         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6620         line number info.
6621         
6622         * aot-compiler.c (emit_line_number_info): Optimize this.
6623
6624 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6625
6626         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6627         
6628         * aot-compiler.c: Add debug info for methods without debug info by
6629         emitting an IL file and having the line number info referencing that file.
6630
6631         * aot-compiler.c: Optimize the size of the generated line number info.
6632
6633         * aot-compiler.c: Emit line number info in xdebug mode.
6634
6635         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6636         million arguments.
6637
6638 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6639
6640         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6641
6642         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6643         is used.
6644
6645 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6646
6647         * basic-calls.cs: Test for the weird crash found on arm.
6648         
6649 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6650
6651         * cpu-arm.md: Increase the size of storer8_membase_reg and
6652         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6653
6654         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6655         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6656         reg to LR otherwise we'll be loading/storing from just the offset.
6657
6658 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6659
6660         Question: if we are storing gint32's inside the "*native_offset",
6661         should we change the signature to "gint32 *native_offset" to
6662         ensure that we do not have type definition problems?
6663         
6664         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6665         an int * as this is what the other function expects, causes
6666         problems with Freescale's compiler that defined int32_t to be a
6667         long and makes int incompatible 
6668
6669 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6670
6671         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6672         filename conflict with bjam.
6673
6674 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6675
6676         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6677         as it might use decomposed ops.
6678
6679 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6680
6681         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6682
6683         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6684         is defined.
6685
6686         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6687
6688         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6689         offsets.
6690
6691         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6692         way registers are stored in MonoContext on arm.
6693
6694         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6695         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6696
6697         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6698
6699         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6700
6701         * mini.c (mini_init): Register mono_isfinite.
6702
6703         * jit-icalls.c (mono_isfinite): New jit icall.
6704
6705         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6706         
6707         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6708         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6709         the parent frame.
6710
6711 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6712
6713         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6714         separate frame and stack pointers, so we must use FP to find the register
6715         spill area.
6716         The FP reg is retrieved from the MonoContext::regs array.
6717
6718 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6719
6720         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6721         as FPA requires it.
6722
6723 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6724
6725         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6726         return R4 and R8 when not running under softfloat.
6727
6728         Fixes basic-calls.exe
6729
6730 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6731
6732         * mini-arm.c: Implement some overflow opcodes.
6733
6734 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6735
6736         * ssa.c: handle another alloca.h
6737
6738         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6739         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6740         MONO_ARCH_USE_SIGACTION. 
6741
6742         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6743         capability defines.
6744
6745         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6746
6747         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6748         PPC targets as sigaction does not exist on all platforms, define
6749         this on a per-platform basis.
6750
6751         Instead of erroring out if the platform is not defined, include
6752         mini-ppc-os.h, and expect that the OS specific setting provides
6753         the required information.   
6754
6755 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6756
6757         * aot-compiler.c: Fix --enable-minimal=aot.
6758
6759 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6760
6761         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6762         previous change.
6763
6764 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6765
6766         * exceptions-arm.c: Fix warnings.
6767
6768         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6769         ARM.
6770
6771         * mini-x86.c: Fix --enable-minimal=jit build.
6772
6773         * mini.c: Really fix --enable-minimal=jit build.
6774         
6775         * mini.c (construct_object_context_for_method): Move this outside
6776         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6777
6778         "Backported" of r124984 from 2.0 branch.
6779         
6780         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6781
6782         "Backport" of r124977 + r124978 from 2.0 branch.
6783         
6784         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6785         to avoid calling mono_exception_from_token () from the throw trampoline.
6786         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6787         for throwing corlib exceptions, this fixes full-aot support for corlib
6788         exceptions.
6789
6790         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6791
6792 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6793
6794         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6795         part of the changes to split the code in mini into operating
6796         system specific files.
6797
6798         This patch was done by copying mini.c to the respective files to
6799         preserve SVN history.
6800
6801 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6802
6803         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6804
6805 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6806
6807         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6808         remoting-invoke-with-check wrappers of shared methods.
6809
6810         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6811
6812 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6813
6814         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6815         optimization if the top of stack is the last instruction in the
6816         bblock.  Otherwise it might have been used after its definition.
6817         Fixes #469742.
6818
6819 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6820
6821         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6822         method as well when get_vcall_slot () fails to match a code sequence.
6823
6824         * mini-arm.c: Fix the android build, which doesn't have
6825         __aeabi_read_tp.
6826
6827 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6828
6829         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6830         the s390x build.
6831
6832 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6833
6834         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6835
6836 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6837
6838         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6839         and put its id into jinfo->used_regs. This is only used on amd64,
6840         which is currently the only platform generating unwind info.
6841
6842         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6843         the dwarf unwinder. This is required to correctly handle async exceptions
6844         like thread abort and stack overflows, which can happen while a method
6845         is in the middle of its prolog or epilog.
6846         
6847         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6848         the unwind info belonging to an AOTed method.
6849
6850         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6851         into cfg->unwind_ops.
6852         
6853         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6854
6855         * mini.c (mini_init): Call mono_unwind_init ().
6856         (mini_cleanup): Call mono_unwind_cleanup ().
6857
6858         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6859         unwind info to be shared between methods.
6860
6861         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6862         saved in the LMF.
6863
6864         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6865         get_throw_pending_exception () to avoid initialization races.
6866
6867         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6868         mono_arch_exceptions_init () function.
6869
6870         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6871
6872 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6873
6874         * mini.c (mono_get_domain_intrinsic): New helper function.
6875         (mono_get_thread_intrinsic): Ditto.
6876
6877         * mini-arm.c mini-ia64.c: Use the new helper functions.
6878         
6879         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6880         the last constrained_call change, since it is needed in the non-AOT
6881         case as well.
6882
6883         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6884         
6885         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6886         mono_get_lmf_addr () on arm eabi linux.
6887
6888 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6889
6890         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6891         code sequence which matches a non-virtual call.
6892
6893 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6894
6895         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6896         stack pointer (r1).
6897
6898 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6899
6900         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6901         runtime-invoke wrappers, since they are also shared based on signature.
6902
6903 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6904
6905         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6906         info from the (correct) context.
6907
6908 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6909
6910         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6911         
6912         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6913         using dwarf unwinding info. Not yet used.
6914
6915         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6916
6917 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6918
6919         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6920         descriptors.
6921
6922         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6923         special case and handle mono_arch_delegate_invoke_impl() returning
6924         function descriptors.
6925
6926         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6927         trampolines return function descriptors, too.
6928
6929 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6930
6931         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6932         out_of_line optimization.
6933
6934 2009-01-21  Martin Baulig  <martin@ximian.com>
6935
6936         * mini.h
6937         (MonoCompile): Added `disable_deadce_vars' to disable removing
6938         unused variables.
6939
6940         * mini.c
6941         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6942         inside the debugger.
6943
6944         * liveness.c (mono_analyze_liveness): Don't remove any unused
6945         variables if `cfg->disable_deadce_vars' is set.
6946
6947 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6948
6949         * method-to-ir.c: Only apply exception constructor optimization if
6950         the the method actually belongs to an exception class.  Fixes
6951         #467456.
6952
6953 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6954
6955         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6956         change inside a #ifdef __mono_ppc64__.
6957
6958         * aot-compiler.c (compile_method): Remove the previous limitation.
6959
6960         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6961         on type variables in AOTed code.
6962         
6963         * aot-compiler.c (compile_method): Skip generic methods having type 
6964         constraints on their generic parameters.
6965
6966         * aot-compiler.c (compile_method): Check for methods which cannot be
6967         encoded inside RGCTX_FETCH patches as well.
6968
6969         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6970         build.
6971
6972 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6973
6974         * method-to-ir.c: Force the vtable variable in shared generic code
6975         for the case that they might show up on a stack trace where they
6976         are needed.
6977
6978         * mini-exceptions.c: Save and use generic sharing info as well as
6979         IP in stack traces to resolve shared generic instantiations.
6980
6981 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6982
6983         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6984         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6985
6986 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6987
6988         * method-to-ir.c: Do generic sharing for array constructors.
6989
6990 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6991
6992         * mini-exceptions.c (mono_print_thread_dump): Add information
6993         about the thread state using wapi_current_thread_desc.
6994
6995 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6996
6997         * basic-simd.cs: Tests for the new constructors. 
6998
6999 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7000
7001         * mini-ops.h: Added OP_EXPAND_*
7002
7003         * cpu-x86.md: Same.
7004
7005         * mini-x86.c (mono_arch_output_basic_block): Same.
7006         
7007         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7008
7009 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7010
7011         * iltests.il.in: Add a test for #467385.
7012
7013 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7014
7015         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7016         thread been cleaned up is not the same currently in execution.
7017
7018         Fixes appdomain-unload crashes on windows, osx and linux variants
7019         without the __thread keyword.
7020
7021 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7024         (koush@koushikdutta.com). Implement this for android.
7025
7026         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7027         begins with a digit.
7028
7029         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7030         mono_marshal_get_write_barrier ().
7031
7032 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7033
7034         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7035         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7036         that pass them on a register pair.
7037
7038         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7039         test was crashing due to that.
7040
7041 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7042
7043         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7044         trampoline code. Include ucontext.h only if available.
7045
7046 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7047
7048         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7049         and doesn't check whether it's sharable, like it was before
7050         removing the shared generics hash.  This brings IronPython
7051         performance back to what it was before that change.
7052
7053 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7054
7055         * method-to-ir.c: Handle delegate invocation optimization earlier,
7056         otherwise it would be handled (much more slowly) by the
7057         final/sealed optimization.
7058
7059 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7060
7061         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7062         domain is not set. Fixes #465864.
7063
7064 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7065
7066         * method-to-ir.c: Don't stop sharing of generic methods with catch
7067         clauses - we already handle those.
7068
7069 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7070
7071         * mini.c, mini.h: lookup_generic_method() is now
7072         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7073         making the shared_generics_hash obsolete.
7074
7075 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7076
7077         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7078         use the red zone.  Make room on the stack first and then use it,
7079         not the other way around.
7080
7081 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * mini.c (mini_init): Call mono_xdebug_init ().
7084
7085         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7086
7087 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7088
7089         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7090
7091         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7092         trampolines.
7093
7094         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7095         debug+unwind info for trampolines.
7096
7097         * mini.c (mono_create_unwind_op): New helper function.
7098
7099         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7100
7101 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7102
7103         * aot-compiler.c: Fix the build.
7104
7105 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7106
7107         * Makefile.am: Update dtrace-prelink.sh location.
7108
7109 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7110
7111         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7112         optimization. Fixes #464520.
7113
7114 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7115
7116         * mini-amd64.c : Adding code to save/restore non-volatile registers
7117            on Winx64.
7118
7119         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7120           registers on Winx64.
7121
7122         Contributed under MIT/X11 license.
7123
7124 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7125
7126         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7127         __GNUC_MINOR__ which can break when the major version changes.
7128
7129 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7130
7131         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7132
7133 2009-01-07  Geoff Norton  <gnorton@novell.com>
7134
7135         * helpers.c:  Allow mono -v -v -v to work on darwin.
7136
7137 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7138
7139         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7140           pattern. 
7141
7142         Contributed under MIT/X11 license.
7143
7144 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7145
7146         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7147         instead of directly accessing type->data.klass. Fixes #462016.
7148         (mono_allocate_stack_slots_full): Ditto.
7149
7150         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7151         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7152
7153         * aot-compiler.c (emit_plt): Fix ARM build.
7154
7155 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7156
7157         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7158         
7159         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7160         change.
7161
7162         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7163         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7164         #463357.
7165
7166         * iltests.il.in: Add a regression test.
7167
7168 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7169
7170         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7171
7172 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7173
7174         * basic-simd.cs: Add a regression test for #462457.
7175
7176 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7177
7178         * mini-ops.h: Add a definition of XPHI.
7179
7180         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7181
7182         * ssa.c (op_phi_to_move): Handle XPHI.
7183
7184         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7185
7186         Fixes #462457
7187
7188 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7189
7190         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7191
7192 2008-12-31  Geoff Norton  <gnorton@novell.com>
7193
7194         * mini-ppc.c: The prolog size allocated can be too small for darwin
7195         ppc32 under certain circumstances.  Also fix a small logic bug.
7196
7197 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7198
7199         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7200         while loading AOT methods.
7201
7202         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7203         since only the former is nulled out after a successful cast. This prevents
7204         crashes with rethrown exceptions when using --debug=casts.
7205
7206 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7207
7208         * mini.h: New macro for checking whether a method is final,
7209         i.e. whether the method or its class is marked final.
7210
7211         * method-to-ir.c: Use the new macro for all final-checks
7212         consistently.  Fixes the crash in the System.ServiceModel tests.
7213
7214 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7215
7216         * mini-exceptions.c (get_exception_catch_class): Corrected another
7217         overly strict assertion.
7218
7219 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7220
7221         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7222         Clobbering it is not allowed because the caller might use it as
7223         the vtable register in the interface call.
7224
7225 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7226
7227         * mini-exceptions.c (get_exception_catch_class): Corrected an
7228         overly strict assertion.
7229
7230 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7231         
7232         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7233
7234         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7235
7236         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7237
7238         * cpu-mips.md: correct lengths for certain long_ opcodes.
7239
7240         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7241
7242         * 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().
7243         
7244 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7245
7246         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7247         
7248 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7249         
7250         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7251         
7252 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7253
7254         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7255         next basic block.
7256         
7257 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7258
7259         * 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
7260
7261         * 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)
7262         
7263 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7264         
7265         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7266         
7267 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7268
7269         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7270         gshared code. Fixes #458947.
7271
7272         * generics.cs: Add a test.
7273
7274 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7275         
7276         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7277         
7278         * mini-mips.c: first pass n32 code generation.
7279
7280         * mini-mips.h: datatypes and defines for n32 support.
7281
7282         * exceptions-mips.c: first pass n32 code generation.
7283         
7284         * tramp-mips.c: first pass n32 code generation.
7285         
7286         * cpu-mips.md: add long_ opcodes.
7287         
7288 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7289
7290         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7291
7292         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7293         
7294         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7295         
7296         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7297
7298         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7299
7300         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7301
7302         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7303
7304         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7305
7306         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7307
7308 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7309
7310         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7311
7312 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7313
7314         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7315
7316 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7317
7318         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7319         descriptors for helper functions directly in front of the code.
7320
7321 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7322
7323         * method-to-ir.c: Removed an unnecessary assertion.
7324
7325 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * method-to-ir.c: Merge SGEN changes from the old JIT.
7328
7329 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7330
7331         * driver.c (compile_all_methods_thread_main): Handle failure of
7332         mono_get_method ().
7333
7334 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7335
7336         * mini-ppc.c: Merged with mini-ppc64.c.
7337
7338         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7339
7340         * Makefile.am: Use the same sources for PPC and PPC64.
7341
7342         * mini-ppc64.c: Removed.
7343
7344 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7345
7346         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7347         code to mono_bb_is_fall_through.
7348         
7349         * branch-opts.c (mono_remove_critical_edges): Same.
7350
7351 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7352
7353         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7354         expect that an OP_BR_REG will be there.
7355
7356 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7357
7358         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7359         for the many branch ops. The original check miss OP_BR_REG.
7360
7361         Fixes #457574.
7362         
7363 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7364
7365         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7366
7367 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7370         while holding the aot lock.
7371
7372 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7373
7374         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7375         
7376 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7377
7378         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7379           to release all runtime callable wrappers held by the runtime.
7380
7381         Contributed under MIT/X11 license.
7382
7383 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7384
7385         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7386           for Winx64.
7387
7388         Contributed under MIT/X11 license.
7389
7390 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7391
7392         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7393         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7394
7395 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7396
7397         * cpu-mips.md: fix ckfinite length
7398
7399         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7400         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7401         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7402         
7403 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7404
7405         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7406         
7407 2008-12-08  Geoff Norton  <gnorton@novell.com>
7408
7409         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7410         size by 8 bytes as well.
7411
7412 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7413
7414         * basic-simd.cs: Fix method names for Vector16b.
7415         
7416 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7417
7418         * basic-simd.cs: Fix method names for Vector16sb.
7419
7420 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7421
7422         * basic-simd.cs: Fix method names for Vector8us.
7423         
7424 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7425
7426         * basic-simd.cs: Fix method names for Vector8s.
7427         
7428 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7429
7430         * basic-simd.cs: Fix method names for Vector4ui.
7431
7432 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7433
7434         * basic-simd.cs: Fix method names for Vector2l.
7435
7436 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7437
7438         * basic-simd.cs: Fix method names for Vector2d.
7439
7440 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7441
7442         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7443         that are extension methods.
7444
7445 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7446
7447         * basic-simd.cs: Fix method names for Vector4f.
7448
7449 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7450
7451         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7452         as such. Fixes #456669.
7453
7454 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7455
7456         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7457         
7458 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7459
7460         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7461         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7462         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7463         (mips_adjust_stackframe): handle FP spills
7464                 
7465         * mini-ops.h: add mips_mtc1_s2
7466         
7467         * cpu-mips.md: add mips_mtc1_s2
7468         
7469 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7470
7471         * unwind.c: New file, move the unwind info encoding functions here from
7472         aot-compiler.c, so they could be used at runtime too.
7473
7474 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7475
7476         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7477         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7478         
7479 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7480
7481         * mini-mips.c: cleanup warnings
7482         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7483         (mips_adjust_stackframe): handle case of taking the address of stack locals
7484         
7485 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7486
7487         * aot-compiler.c: Implement a few functions missing from the asm writer.
7488         (emit_method_code): Only write symbols for methods when using the bin
7489         writer, since the assembler can't deal with the characters in our method
7490         names.
7491
7492         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7493
7494         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7495         call.
7496
7497         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7498         a bit to also restore %rax.
7499
7500 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7501
7502         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7503
7504 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7505
7506         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7507         arguments.
7508
7509 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7510
7511         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7512
7513         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7514         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7515
7516         * exceptions-ppc64.c: Removed.
7517
7518         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7519
7520 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7521
7522         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7523         tramp-ppc64.c.
7524
7525         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7526
7527         * tramp-ppc64.c: Removed.
7528
7529 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7530
7531         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7532         the TYPESPEC table.
7533
7534 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7535
7536         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7537
7538         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7539         mini-ppc.h instead of mini-ppc64.h.
7540
7541         * mini-ppc64.h: Removed.
7542
7543 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7544
7545         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7546         
7547         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7548         
7549 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7550
7551         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7552         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7553         code easier.
7554
7555 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7556
7557         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7558
7559 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7560
7561         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7562
7563 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7564
7565         * basic-simd.cs: Tests for operator == and != on Vector4f.
7566
7567 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7568
7569         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7570
7571         * simd-intrinsics.c: Kill useless enum.
7572
7573 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7574
7575         * cpu-mips.md: add long_conv_to_ovf_i4_2
7576         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7577
7578 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7579
7580         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7581         
7582         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7583
7584 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7585
7586         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7587         
7588 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7589
7590         * basic-simd.cs: Add tests for new methods.
7591
7592 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7593
7594         * simd-intrinsics.c: Add support for operator == and !=
7595         on Vector4(u)i.
7596
7597         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7598
7599 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7600
7601         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7602
7603 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7604
7605         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7606
7607         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7608         MONO_PATCH_INFO_ICALL_ADDR.
7609
7610         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7611
7612         * aot-compiler.c: Resurrect full-aot support.
7613
7614 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7615
7616         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7617         
7618 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7619
7620         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7621         
7622 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7623
7624         * basic-simd.cs: Fix tests to work under ppc.
7625         Remove tests for methods that will be removed.
7626
7627 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7628
7629         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7630         generic type (via a typedef or typeref) correctly.
7631
7632 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7633
7634         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7635         diagnose an assertion failure.
7636
7637 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7638
7639         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7640         Fix trampoline size.
7641
7642         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7643         conversion opcodes are implemented natively instead via emulation.
7644
7645 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7646
7647         * cpu-mips.md: remove mips_xori
7648
7649         * mini-ops.h:  remove mips_xori
7650
7651         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7652
7653         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7654         
7655         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7656         
7657 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7658
7659         * cpu-mips.md: fix instruction lengths.
7660
7661         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7662
7663         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7664
7665         * mini-ops.h: fix slti / sltiu op profiles.
7666         
7667 2008-12-02  Martin Baulig  <martin@ximian.com>
7668
7669         * method-to-ir.c (mono_method_to_ir): Disable debugging
7670         information for the init locals block to make the debugger stop
7671         after all locals have been initalized.
7672
7673 2008-12-02  Martin Baulig  <martin@ximian.com>
7674
7675         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7676         running inside the debugger.
7677
7678 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7679
7680         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7681         is enabled.
7682
7683         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7684         alu->alu imm optimization which only shows if deadce is disabled.
7685
7686         * aot-compiler.c: Rename the function names for the binary and asm writers
7687         so they can coexist in the same process. Rework the xdebug code to use the
7688         asm writer. This avoids the need to call into the runtime to dump the
7689         debugging info. Add more debugging info for types.
7690
7691         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7692
7693         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7694         cpu description tables, they can't occur in cpu-<ARCH>.md.
7695
7696         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7697         the stack in CEE_LDFLDA. Fixes #450542.
7698
7699         * generics.cs: Add a new test.
7700
7701 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7702
7703         * mini-ops.h: updated MIPS opcodes
7704         * mini-mips.c: decompose long opts
7705         * mini-mips.h: decompose long opts
7706         
7707 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7708
7709         * cpu-mips.md: fix length on int_rem_un
7710         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7711         
7712 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7713
7714         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7715
7716         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7717
7718 2008-11-29  Martin Baulig  <martin@ximian.com>
7719
7720         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7721         mono_debug_using_mono_debugger() in addition to the
7722         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7723
7724 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7725
7726         * mini-ops.h: updated more MIPS opcodes
7727         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7728         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7729         
7730 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7731
7732         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7733
7734 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7735
7736         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7737         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7738         * mini-ops.h: correct selected mips opcode entries
7739         
7740 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7741
7742         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7743         make them work.
7744
7745 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7746
7747         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7748
7749 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7750
7751         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7752         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7753         * mini-mips.h: disable IMT
7754         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7755         
7756 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7757
7758         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7759
7760 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7761
7762         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7763
7764 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7765
7766         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7767         consistency.
7768
7769 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7770
7771         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7772         for Set/GetVector aligned versions.
7773
7774 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7775
7776         * basic-simd.cs: Add tests for Get/SetVector.
7777
7778 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7779
7780         * mini.c: Removed g_slist_append_mempool().  Now in
7781         metadata/mempool.c.
7782
7783 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7784
7785         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7786         size properly and make the bounds check optional.
7787
7788         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7789         for SetVector and IsAligned.
7790
7791 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7792
7793         * mini.c: Remove unused mono_normalize_opcodes () function.
7794
7795 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7796
7797         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7798         using the new atomic add ops now.
7799
7800         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7801         add.
7802
7803 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7804
7805         * mini-ppc64.c: Several fixes.
7806
7807 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7808
7809         * cpu-mips.md: added jump_table
7810         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7811
7812 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7813
7814         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7815
7816 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7817
7818         * mini-ops.h: corrected a handful of MIPS opcodes.
7819
7820 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7821
7822         * aot-compiler.c: MIPS to use ELF writer
7823
7824 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7825
7826         * mini-codegen.c: remove MIPS specific assert.
7827
7828 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7829
7830         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7831         fixes.  PPC64 now passes most of the runtime regressions.
7832
7833 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7836         volatile intervals a bit.
7837
7838 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7839
7840         * basic-long.cs: New test case.
7841
7842 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7843
7844         * mini.c (mini_method_compile): Disable globalra for large methods for 
7845         now.
7846
7847         * regalloc2.c (order_moves): Add fp support.
7848
7849         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7850         source bblock ends with an OP_BR_REG.
7851
7852         * ratests.cs: Add a new test.
7853
7854 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7855
7856         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7857         sharing.  PPC64 now passes generics.exe.
7858
7859 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7860
7861         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7862
7863 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7864
7865         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7866         memory when mono_jit_info_table_find () can't find the method in the
7867         LMF case.
7868
7869         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7870         AOTed code too.
7871         
7872         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7873         writer too.
7874
7875 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7876
7877         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7878         Several fixes.  PPC64 now runs exceptions.exe and
7879         devirtualization.exe.
7880
7881 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7882
7883         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7884         arrays.exe and basic-math.exe.
7885
7886 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7887
7888         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7889         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7890
7891 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7892
7893         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7894
7895 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7896
7897         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7898
7899         * ir-emit.h: Move macros from method-to-ir.c to here.
7900
7901 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7902
7903         * mini-ops.h: Correct the long simd ops to use LREG.
7904
7905 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7906
7907         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7908         
7909         * mini-ops.h: Correct the dreg type of a few long opcodes.
7910
7911         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7912         Add netbsd support.
7913
7914 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7915
7916         * mini-ppc.c: remove negative stack references in epilog
7917         for platforms that don't support the red zone.
7918
7919 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7920
7921         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7922         point regs.  Now PPC64 passes basic-calls.exe.
7923
7924 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7925
7926         * basic-simd.cs: Add tests for accessors of Vector2l.
7927
7928 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7929
7930         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7931
7932         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7933         
7934         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7935
7936 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7937
7938         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7939         PPC64 passes basic-long.exe.
7940
7941 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7942
7943         * decompose.c: Decompose carry and overflow add on PPC64 like on
7944         other 64 bit archs.  Don't decompose sub at all on PPC64.
7945
7946         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7947         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7948         basic-long.exe.
7949
7950 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7951
7952         * basic-simd.cs: Add tests for accessors of Vector2d.
7953
7954 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7955
7956         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
7957
7958         * cpu-x86.md: Same.
7959
7960         * mini-x86.c (mono_arch_output_basic_block): Same.
7961         
7962         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
7963
7964 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7965
7966         * basic-simd.cs: Add tests for accessors of Vector4f.
7967
7968 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7969
7970         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
7971
7972         * cpu-x86.md: Same.
7973
7974         * mini-x86.c (mono_arch_output_basic_block): Same.
7975         
7976         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
7977
7978 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7979
7980         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7981
7982 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7983
7984         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7985
7986         * cpu-x86.md: Same.
7987
7988         * mini-x86.c (mono_arch_output_basic_block): Same.
7989         
7990         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7991
7992 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7993
7994         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7995
7996 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7997
7998         * simd-intrinsics.c: Enable setters for Vector16sb.
7999
8000 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8001
8002         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8003
8004         * cpu-x86.md: Same.
8005
8006         * mini-x86.c (mono_arch_output_basic_block): Same.
8007         
8008         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8009
8010 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8011
8012         * simd-intrinsics.c: Implement setter for Vector8us.
8013
8014 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8015
8016         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8017         for dead variables.
8018
8019 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8020
8021         * mini-ppc.c: remove references to the red zone in the prolog
8022         (for systems that don't support it).
8023
8024 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8025
8026         * cpu-ppc64.md: Fixed a few instruction lengths.
8027
8028         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8029         now.
8030
8031 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8032
8033         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8034         basic.exe now.
8035
8036 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8037
8038         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8039
8040 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8041
8042         * mini-ops.h: Added OP_INSERT_I2.
8043
8044         * cpu-x86.md: Same.
8045
8046         * mini-x86.c (mono_arch_output_basic_block): Same.
8047         
8048         * simd-intrinsics.c: Implement setter for Vector8s.
8049
8050         * simd-methods.h: Add the names of get setters of Vector8s.
8051
8052 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8053
8054         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8055         
8056         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8057         parameters.
8058
8059         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8060
8061 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8062
8063         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8064         for PPC64.  An empty program runs now.
8065
8066 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8067
8068         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8069
8070         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8071         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8072         info for JITted code is emitted into a shared library, loadable into gdb.
8073
8074 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8075
8076         * Makefile.am: Changes to build PPC64.
8077
8078         * mini-arch.h: Include mini-ppc64.h on PPC64.
8079
8080 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8081
8082         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8083         in PPC code up to r119147.
8084
8085 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8086
8087         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8088         cpu-ppc64.md: Changes for PPC64.
8089
8090         Based on code submitted by andreas.faerber@web.de at
8091         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8092         X11/MIT license.
8093
8094 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8095
8096         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8097         cpu-ppc64.md: Copied from the corresponding PPC files from
8098         r118846.
8099
8100 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8101
8102         * mini-ops.h: Added OP_ROUND.
8103
8104         * cpu-x86.md: Added round.
8105
8106         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8107
8108         * basic-math.cs: Added test_0_round to test rounding.
8109
8110         Contributed under MIT/X11 license.
8111
8112 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8113
8114         * aot-compiler.c : Fix the Winx64 build.
8115
8116         Contributed under MIT/X11 license.
8117
8118 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8119
8120         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8121         in OP_EXTRACT_R8 to avoid possible stack corruption.
8122
8123 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8124
8125         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8126
8127         * cpu-x86.md: Added extract_r8.
8128
8129         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8130         
8131         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8132         a couple of OP_EXTRACT_I4.
8133
8134         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8135
8136         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8137
8138 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8139
8140         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8141         and not 4.1. 
8142
8143 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8144
8145         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8146         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8147
8148         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8149         are not needed any more.
8150
8151         * mini.h: Remove the unused INS_LIST macros.
8152
8153         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8154         longer needed.
8155
8156         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8157         ir-emit.h.
8158
8159         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8160         mono_alloc_ireg () instead.
8161
8162         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8163         macros.
8164
8165         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8166         on amd64.
8167
8168         * aot-runtime.c (load_aot_module): Disable AOT when running under
8169         CAS.
8170
8171         * mini-amd64.h: Change the monitor fastpath defines to check for
8172         !PLATFORM_WIN32 so they work on *bsd too.
8173
8174         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8175
8176         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8177
8178         * mini.h (MonoCompile): Remove new_ir flag.
8179
8180         * regalloc.h regalloc.c: Remove unused code.
8181
8182         * cpu-*.md: Remove more unused opcodes.
8183
8184         * simple-cee-ops.h simple-mini-ops.h: Removed.
8185
8186         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8187         
8188 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8189
8190         * aliasing.h: Removed.
8191
8192         * *.c: Remove references to aliasing.h and inssel.h.
8193
8194         * mini.c: Remove additional unused functions.
8195
8196         * mini-ops.h cpu-*.md: Remove unused opcodes.
8197
8198 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8199
8200         Remove the old JIT code.
8201
8202         * inssel*.brg: Removed.
8203
8204         * ssa.c abcremoval.c aliasing.c: Removed.
8205
8206         * ssa2.c: Renamed to ssa.c.
8207
8208         * abcremoval2.c: Renamed to abcremoval.c.
8209
8210         * *.c: Removed all !cfg->new_ir code.
8211
8212         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8213         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8214
8215         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8216         
8217 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8220         to simplify the code and cut back on the number of global symbols in the AOT
8221         file.
8222         
8223         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8224
8225 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8226
8227         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8228         with the got/got_info tables.
8229
8230         * mini.h: Bump AOT file format version.
8231         
8232         * unwind.h: New file, contains definitions for stack unwinding.
8233
8234         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8235         to cfg->unwind_ops.
8236         
8237         * aot-compiler.c: Generalize the emitting of unwind information to use the
8238         information in cfg->unwind_ops.
8239
8240         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8241
8242         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8243         AOT method frames. Enable writing symbols for methods by default.
8244
8245 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8246
8247         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8248         and make it work with vectors of element sizes 1, 2 and 4.
8249
8250         * simd-intrinsics.c: Enable getter for all vectors with element size
8251         1, 2 or 4.
8252
8253         * simd-methods.h: Add the names of other getters.
8254
8255         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8256
8257         * cpu-x86.md: Same.
8258
8259         * mini-x86.c: Same.
8260
8261 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8262
8263         * mini-ppc.h: portability fix.
8264
8265 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8266
8267         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8268         buggy and will overwrite it.
8269
8270 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8273         Use it to emit local symbols for all methods so AOTed methods show up with
8274         their full name in gdb/valgrind output.
8275
8276 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8277
8278         * mini-ppc.c: portability fixes.
8279
8280 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8281
8282         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8283         entries out of the if (!generic_shared...) code so it is always done.
8284         (mono_class_init_trampoline): Do the patching when running under valgrind
8285         too, newer versions of valgrind have no problems with it.
8286
8287 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8288
8289         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8290         further sections.
8291
8292 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8293
8294         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8295         filters.
8296
8297 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8298
8299         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8300
8301 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8302
8303         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8304
8305         * cpu-x86.md: Same.
8306
8307         * mini-x86.c: Same.
8308
8309         * simd-intrinsics.c: Same.
8310
8311 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8312
8313         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8314
8315 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8316
8317         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8318         to work with more Vector types.
8319
8320 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8321
8322         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8323         store the elemens directly instead of using and intermediate.
8324
8325 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8326
8327         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8328
8329         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8330         to preserve %eax for aot plt trampolines.
8331
8332         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8333         (encode_method_ref): Flag synchronized methods so they won't go through
8334         the AOT trampoline.
8335
8336         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8337         wrappers.
8338
8339         * cpu-ia64.md (jmp): Increase max length.
8340
8341 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8342
8343         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8344         open generic classes.
8345
8346         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8347
8348         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8349         box+brtrue optimization since it causes test failures on x86.
8350
8351 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8352
8353         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8354
8355         * cpu-x86.md: Same.
8356
8357         * mini-x86.c: Same.
8358
8359         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8360         for simd ctor values. 
8361
8362         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8363         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8364
8365 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8366
8367         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8368         LogicalRightShift.
8369
8370         * simd-instrincs.c: Same.
8371
8372         * basic-simd.cs: Same.
8373
8374 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8375
8376         * ratests.cs: Add more tests.
8377
8378         * regalloc2.c (add_spill_code): Handle more corner cases.
8379
8380 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8381
8382         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8383         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8384         both the source an destination of an instruction.
8385
8386 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8387
8388         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8389         wapihandles.c: more portability changes.
8390
8391 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8392
8393         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8394         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8395         safe to execute in a signal handler and the kernel provides better
8396         the info in /proc/self/smaps. Avoid the assert on sigaction during
8397         cleanup.
8398
8399 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8400
8401         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8402         do the bblock linking hack if it is actually needed.
8403
8404         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8405         up linking.
8406
8407         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8408         crash problem is fixed.
8409
8410         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8411         bblocks.
8412
8413         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8414         for catch clauses.
8415         (mini_method_compile): Set the starting value of next_vreg to 
8416         MAX_IREGS + MAX_FREGS when using globalra.
8417
8418         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8419         filter clauses with BB_EXCEPTION_HANDLER.
8420
8421         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8422
8423 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8424
8425         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8426         space for stdcall.  Fixes regressions on Win32.
8427
8428 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8429
8430         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8431         bblocks.
8432         (linear_scan): Remove an assert which doesn't seem to be needed.
8433
8434         * local-propagation.c (mono_local_deadce): Avoid a call to
8435         MONO_DELETE_INS which would screw up the instruction linking.
8436
8437         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8438
8439         * regalloc2.c: Upgrade to work the current JIT code.
8440
8441 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8444         case.
8445
8446         * aot-runtime.c: Remove some dead code.
8447
8448         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8449         consistency.
8450         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8451
8452         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8453         trampolines using sscanf since atoi doesn't work on large unsigned values.
8454
8455         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8456         Initialize code_size.
8457
8458 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8459
8460         * method-to-ir.c (mini_emit_inst_for_method): Make
8461         Interlocked.CompareExchange work for Int arguments on 32 bit
8462         archs, as well.
8463
8464 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8465
8466         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8467
8468 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8469
8470         * main.c Fix MSVC build.
8471
8472         Contributed under MIT/X11 license.
8473
8474 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8475
8476         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8477         alignment larger than 8 bytes are aligned correctly, too.
8478
8479         * mini.c: Honor the min_align field of MonoClass when laying out
8480         the stack.
8481
8482 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8483
8484         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8485
8486         * aot-compiler.c (emit_plt): Fix a warning.
8487         
8488         * aot-compiler.c: Implement ARM support in the binary writer.
8489
8490 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8491
8492         * basic-simd.cs: Add test for getter with byref arg.
8493         Fix the naming of a few tests.
8494         Add missing checks to a test.
8495
8496 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8497
8498         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8499
8500         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8501         most of the full-aot support for monitor enter/exit trampolines.
8502
8503         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8504         enter/exit trampoline creation functions.
8505
8506         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8507         make dist.
8508
8509 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8510
8511         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8512         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8513         implement the needed functionality without adding crap to the runtime.
8514
8515 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8516
8517         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8518         non-x86 builds.
8519
8520         * mini.c (mono_build_date): New global version holding the build date in
8521         string format.
8522         
8523         * Makefile.am (buildver.c): Generate a file containing the build date.
8524
8525         * main.c: Set the build date from the generated file.
8526
8527         * mini.c (mono_get_runtime_build_info): New helper function returning build
8528         information in a string format.
8529         
8530         * driver.c (mono_main): Print the build date in --version.
8531
8532         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8533         file when the bind-to-runtime-version option is used.
8534
8535 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8536
8537         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8538
8539 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8540
8541         * simd-methods.h: Rename prefetch methods.
8542
8543         * simd-intrinsics.c: Same.      
8544
8545 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8546
8547         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8548         sizes.
8549
8550 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8551
8552         * aot-compiler.c: Use the bundled elf header files instead of depending on
8553         the system one.
8554         
8555         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8556         mempool.
8557
8558         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8559         on every call.
8560
8561 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8562
8563         * cpu-x86.md: Add store nta ops.
8564
8565         * mini-ops.h: Same.
8566
8567         * mini-x86.c: Same.
8568
8569         * mini.h: Add an enum for simd prefetch modes.
8570
8571         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8572         of store. Use the changed code to support store nta.
8573
8574         * simd-intrinsics.c: Add prefetch ops for all vector types.
8575
8576 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8577
8578         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8579         threads.
8580         
8581         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8582         names.
8583
8584         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8585         trampolines.
8586
8587 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8588
8589         * mini-x86.c: Fixed commit.
8590
8591 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8594
8595 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8596
8597         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8598         and MONITOR_EXIT, for the ASM fastpaths.
8599
8600         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8601         available.
8602
8603         * mini.c, patch-info.h: Signature and patch infos for
8604         Monitor.Enter/Exit trampolines.
8605
8606         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8607
8608         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8609         Monitor.Enter/Exit ASM fastpath for Linux.
8610
8611 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8612
8613         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8614
8615         * objects.cs: Add a new test.
8616         
8617         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8618
8619         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8620         if MONO_LOG_LEVEL is set.
8621
8622         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8623
8624         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8625
8626         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8627         
8628         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8629         of file offsets. Align the sections belonging to the data segment to 
8630         PAGESIZE.
8631
8632 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8633
8634         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8635         elf.h. Port it to amd64.
8636
8637 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8638
8639         * driver.c: Enable SIMD by default.
8640
8641 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8642
8643         * cpu-x86.md: Add prefetch op.
8644
8645         * mini-ops.h: Same.
8646
8647         * mini-x86.c: Same.
8648
8649         * mini.h: Add an enum for simd prefetch modes.
8650
8651         * simd-methods.h: Add prefetch function names.
8652
8653         * simd-intrinsics.c: Add prefetch ops for all vector types.
8654
8655 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8656
8657         * aot-compiler.c (emit_bytes): Speed this up a little.
8658
8659 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8660
8661         * aot-compiler.c: Add JIT time etc. statistics.
8662         
8663         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8664
8665         * mini.h (MonoCompile): Add 'got_offset' field.
8666
8667         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8668         method_got_offsets array.
8669
8670         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8671         wrappers.
8672
8673         * aot-compiler.c (compile_method): Add generic method instances referenced
8674         by the method to the list of methods to be compiled, this is required so if
8675         A<T> references B<T>, and another assembly references A<int>, then it will
8676         also get a copy of B<int>.
8677
8678         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8679         when checking for monitor enter/exit.
8680
8681 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8682
8683         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8684         for Monitor.Enter and Monitor.Exit if enabled.
8685
8686         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8687         Solaris.
8688
8689 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8690
8691         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8692         of an OP_MOVE. Fixes #440046.
8693
8694         * basic-long.cs: Add a new test.
8695
8696 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8697
8698         * mini.h: Add synchronization note for the managed counter-part.
8699
8700         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8701         returns the simd caps of the current cpu.
8702
8703 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8704
8705         * basic-simd.cs: Remove Console.WriteLine.
8706
8707 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8708
8709         * basic-simd.cs: New tests for Vector2ul.
8710
8711 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8712
8713         * simd-intrinsics.c: Add new vector type Vector2ul.
8714
8715 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8716
8717         * basic-simd.cs: New tests for Vector2l.
8718
8719 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8720
8721         * cpu-x86.md: Add long version of most packed int ops.
8722
8723         * mini-ops.h: Same.
8724
8725         * mini-x86.h: Same.
8726
8727         * simd-intrinsics.c: Add new vector type Vector2l.
8728
8729 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8730
8731         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8732
8733         * simd-methods.h: Remove SN_op_BitwiseXor.
8734
8735 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8738         alignment.
8739
8740 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8741
8742         * basic-simd.cs: Test for Vector2d.
8743
8744         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8745         value.
8746
8747 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8748
8749         * cpu-x86.md: Add double version of all packed float ops.
8750
8751         * mini-ops.h: Same.
8752
8753         * mini-x86.h: Same.
8754
8755         * simd-intrinsics.c: Add new vector type Vector2d.
8756
8757         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8758
8759         * simd-methods.h: Add Duplicate.
8760
8761 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8762
8763         * basic-simd.cs: Test for packing with signed saturation.
8764
8765 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8766
8767         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8768         found in the TYPESPEC table.
8769
8770 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8771
8772         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8773         too.
8774
8775         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8776
8777         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8778         instead of the RVA, since the RVA can be changed by tools like the cil 
8779         stripper.
8780
8781         * method-to-ir.c (mono_method_to_ir2): Ditto.
8782
8783         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8784         (deserialize_variable): Ditto.
8785
8786 2008-10-25  Martin Baulig  <martin@ximian.com>
8787
8788         * debug-mini.c (write_variable): Use
8789         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8790
8791 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8792
8793         * cpu-x86.md: Add unsigned variants of packd and packw.
8794
8795         * mini-ops.h: Same.
8796
8797         * mini-x86.h: Emit the right instruction for packd and packw.
8798         Add unsigned variants of packd and packw.
8799
8800         * simd-intrinsics.c: Packd and packw were used in place of their
8801         unsigned variants. Change that.
8802         Add intrinsics for (Signed)PackWithSignedSaturation.
8803
8804         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8805
8806 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8807
8808         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8809
8810 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8811
8812         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8813
8814         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8815
8816         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8817         sse instructions.
8818
8819         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8820
8821 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8822
8823         * method-to-ir.c, mini.c: Special casing for the synchronized
8824         wrapper for the ldtoken+GetTypeFromHandle case.
8825
8826 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8827
8828         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8829
8830         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8831         created/split bblocks.
8832
8833 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8834
8835         * mini-ops.h: Add packed signed mul high.
8836         
8837         * cpu-x86.md: Same.
8838
8839         * mini-x86.c (mono_arch_output_basic_block): Same.
8840
8841         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8842
8843         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8844
8845 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8846
8847         * basic-simd.cs: Tests for Vector16sb.
8848
8849 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8850
8851         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8852
8853 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8854
8855         * mini-ops.h: Add packed signed min, max and compare greater.
8856         
8857         * cpu-x86.md: Same.
8858
8859         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8860         saturation.
8861
8862         * simd-methods.h: Add CompareGreaterThan.
8863
8864         * simd-methods.h: Remove CompareEquals.
8865
8866         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8867
8868         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8869
8870         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8871         CompareEqual.
8872
8873 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8874
8875         * basic-simd.cs: Fix tests due to change in the API.
8876
8877 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8878
8879         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8880
8881 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8882
8883         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8884
8885         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8886         inst_offset as this has invalid values for LDADDR.
8887
8888 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8889
8890         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8891
8892         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8893
8894 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8895
8896         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8897         for accessing field->data.
8898
8899 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8900
8901         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8902
8903 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8904
8905         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8906
8907         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8908
8909 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8910
8911         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8912         from the cfg mempool.
8913
8914 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8915
8916         * basic-simd.cs: Tests for new methods in Vector8us.
8917
8918 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8919
8920         * mini-ops.h: Add multiply and store high.
8921         
8922         * cpu-x86.md: Same.
8923
8924         * mini-x86.c (mono_arch_output_basic_block): Same.
8925
8926         * simd-methods.h: Same.
8927
8928         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8929         and CompareEqual.
8930
8931 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8934         mono_class_setup_vtable ().
8935
8936         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8937         mono_class_get_vtable_entry () for accessing klass->vtable.
8938
8939         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8940
8941         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8942         found.
8943
8944         * method-to-ir.c (mono_save_token_info): Don't save references made from
8945         wrappers.
8946
8947         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8948         of generic instances.
8949
8950         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8951
8952 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8953
8954         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8955         OP_JMP depends on the method signature.  Calculate it properly.
8956
8957 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8958         
8959         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8960         called directly.
8961
8962         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8963         instances.
8964         (emit_extra_methods): Add another table mapping method indexes to 
8965         offsets in the extra_method_info table.
8966
8967         * mini.h: Bump AOT file format version.
8968         
8969         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8970         and mono_aot_get_method_from_token () into one function.
8971
8972 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8973
8974         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8975         separate counter.
8976
8977 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8978
8979         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8980         methods.
8981
8982         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8983         disable_aot.
8984
8985         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8986
8987         * mini.h: Bump aot file format version.
8988
8989         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8990         AOT file can contain native code for methods which are not in the METHOD
8991         table. Generate code for non-sharable generic instances of generic methods
8992         found in the METHODSPEC table.
8993         
8994         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8995         encoding generic type handles.
8996
8997         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8998         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8999
9000         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9001         macros + MONO_ADD_INS.
9002
9003         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9004         context as well.
9005
9006         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9007
9008         * mini.h: Bump aot file format version.
9009
9010         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9011
9012 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9013
9014         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9015         platforms, with definable stack alignment value.  Set to 16 now
9016         for all platforms.
9017
9018         * mini.c, mini.h, driver.c: Command line option for disabling
9019         stack alignment.
9020
9021 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9022
9023         * basic-simd.cs: Tests for new methods in Vector4ui.
9024
9025 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9026
9027         * mini-ops.h: Add packed int shuffle.
9028         
9029         * cpu-x86.md: Same.
9030
9031         * mini-x86.c (mono_arch_output_basic_block): Same.
9032
9033         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9034         extract mask, max, min, shuffle.
9035
9036         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9037
9038 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9039
9040         * basic-simd.cs: Tests for new methods in Vector8us.
9041
9042 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9043
9044         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9045         RuntimeTypeHandle, not a TypedReference.
9046
9047 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9048
9049         * simd-intrinsics.c: remove relocations.
9050
9051 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9052
9053         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9054         optimizations from the x86 backend.
9055
9056 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9057
9058         * simd-methods.h, simd-intrinsics.c: debloat method names and
9059         prepare for no relocations.
9060
9061 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9062
9063         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9064         
9065         * cpu-x86.md: Same.
9066
9067         * mini-x86.c (mono_arch_output_basic_block): Same.
9068
9069         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9070         extract mask, max, min and sum of absolute differences.
9071
9072         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9073         method name.
9074
9075 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9076
9077         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9078         Renamed one test for consistency.
9079
9080 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9081
9082         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9083         fix to the code that deal with other blocks.
9084
9085 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9086
9087         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9088
9089 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9090
9091         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9092         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9093         able to process the source reg.
9094
9095 2008-10-16  Martin Baulig  <martin@ximian.com>
9096
9097         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9098
9099         * inssel.brg: Add `OP_HARD_NOP'.
9100
9101         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9102
9103         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9104         `OP_HARD_NOP' instruction when running inside the debugger.
9105
9106         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9107         `OP_HARD_NOP' instruction when running inside the debugger.
9108
9109 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9110
9111         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9112         now works. The issue with the regalloc tripping up no longer
9113         happens.
9114
9115         * simd-intrinsics.c (load_simd_vreg): Same.
9116
9117 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9118         
9119         * basic-simd.cs: Tests for new Vector8ui methods.
9120
9121 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9122
9123         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9124         only for type. This fixes crashes where MonoInst::klass is checked
9125         for ops of type != VTYPE or OBJ.
9126
9127         * simd-intrinsics.c (load_simd_vreg): Same.
9128
9129 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9130
9131         * mini-ops.h: Add ops for packed shuffle/max/avg and
9132         extract mask.
9133         
9134         * cpu-x86.md: Same.
9135
9136         * mini-x86.c (mono_arch_output_basic_block): Same.
9137
9138         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9139         extract mask.
9140
9141         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9142         to emit extract mask op.
9143
9144         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9145         to emit word shuffles.
9146
9147 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9148
9149         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9150         the largest alignment needed by a variable, but at least
9151         sizeof(gpointer).
9152
9153 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9154
9155         * basic-simd.cs: Tests for the fixes in the last commit.
9156
9157 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9158
9159         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9160         no longer handles STACK_PTR input.
9161
9162         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9163
9164         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9165         get_simd_vreg   but handles STACK_PTR input.
9166
9167         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9168         as the input can be an arbitrary pointer.
9169
9170         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9171         LDADDR local optimization directly otherwise use a store op.
9172
9173 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9174
9175         * basic-simd.cs: Tests for dup low and dup high.
9176
9177 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9178
9179         * mini-ops.h: Add dup low and dup high ops.
9180         
9181         * cpu-x86.md: Same.
9182
9183         * mini-x86.c (mono_arch_output_basic_block): Same.
9184
9185         * simd-intrinsics.c (vector4f_intrinsics): Same.
9186
9187 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9188
9189         * basic-simd.cs: Tests for recently added functionality.
9190
9191 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9192
9193         * mini-ops.h: Add remaining sse1 fp ops.
9194         
9195         * cpu-x86.md: Add remaining sse1 fp ops.
9196
9197         * mini-x86.c (mono_arch_output_basic_block): Same.
9198
9199         * mini.h: Add enum for simd FP compare conditions.
9200
9201         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9202
9203         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9204         so the backed can generate the appropriate op.
9205
9206 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9207         This patch squeese one more byte from the SimdIntrinsc struct.
9208
9209         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9210         a a shift amount intead of simply or'ing it.
9211
9212         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9213
9214         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9215         byte so we can have an aditional flags field without increasing struct size.
9216
9217         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9218         against the simd_supported_versions bitmask.
9219
9220         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9221
9222 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9223
9224         * mini.c: remove rawbuffer code (the only use here is unsafe because
9225         it takes locks during signal handling and the kernel now provides much
9226         better info in proc/pid/smaps these days).
9227
9228 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9229
9230         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9231         OP_X86_PUSH_OBJ. Fixes #434620.
9232
9233         * objects.cs: Add a test.
9234         
9235 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9236
9237         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9238         that the packuswb/packusdw don't work with unsigned numbers for what
9239         would be negative numbers in signed format.
9240
9241         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9242         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9243
9244         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9245
9246         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9247
9248         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9249
9250         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9251
9252         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9253         add more ops.
9254
9255         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9256         version as the enum in mini.h.
9257
9258         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9259         for sse3 ops, check the simd_version field if present. This way the code
9260         works with all versions of sse.
9261
9262 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9263
9264         * simd-intrinsics.c: Fixed intrinsic name typo.
9265
9266         * mini.h: Added missing simd exported function.
9267
9268         * basic-simd.cs: Added tests for Vector4ui.
9269         Fixed broken test for Vector16b.
9270
9271 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9272
9273         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9274         the max length to 64.
9275
9276 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9277
9278         * method-to-ir.c: Only do the fast virtual generic method call for
9279         non-wrapper methods.
9280
9281         * mini.h, mini-trampolines.c: The new generic virtual remoting
9282         trampoline handles virtual method calls via the vtable (as done by
9283         the fast virtual generic method calls) to remoting proxies.
9284
9285         * mini.c (mono_jit_create_remoting_trampoline): For generic
9286         methods reate a generic virtual remoting trampoline.
9287
9288         * mini-amd64.h: Enable fast virtual generic method calls again.
9289
9290 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9291
9292         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9293         restore registers when doing tail calls.
9294
9295 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9296
9297         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9298         Vector4ui.
9299
9300 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9301
9302         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9303
9304 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9305
9306         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9307
9308 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9309
9310         * basic-simd.cs: Retrofit for API changes.
9311
9312 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9313
9314         * mini-ppc.c: Handle integer stack arguments for tail calls.
9315
9316 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9317
9318         * optflags-def.h: Removed sse3 optimization.
9319
9320         * driver.c: Same.
9321
9322         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9323         sse3.
9324
9325         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9326
9327         * mini.h: Added enumeration with simd versions.
9328
9329         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9330         for detecting SSE3.
9331
9332         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9333
9334         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9335
9336 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9337
9338         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9339
9340         * basic-simd.cs: Fixed test naming.
9341
9342 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9343
9344         * mini-ops.h: Added ops for packed and saturated math, shifts
9345         and packing/unpacking.
9346
9347         * cpu-x86.md: Added descriptors for the above ops.
9348
9349         * mini-x86.c: Added code to emmit the above ops.
9350
9351         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9352
9353 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9354
9355         * aot-compiler.c (compile_method): Enable AOT for generic code.
9356
9357         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9358
9359 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9360
9361         * mini.c: add a workaround for a common screwup that ends up blamed
9362         to mono (other processes blocking signal delivery).
9363
9364 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9365
9366         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9367         in the LDFLD/STFLD opcodes. Fixes #432673.
9368
9369         * iltests.il.in: Add a new test.
9370
9371 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9372
9373         * mini-arm.c: attach the thread in unmanaged->managed transitions
9374         using delegates (bug #433148).
9375
9376 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9377
9378        * basic-simd.cs: Use new ShuffleSel constants.
9379
9380 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9381
9382         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9383
9384         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9385         only disable simd intrinsics if no sse2 is detected.
9386
9387         * optflags-def.h: Added sse3.
9388
9389         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9390         is disabled.
9391
9392 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9393
9394         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9395         when adding delegate-invoke wrappers.
9396
9397 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9398
9399         * Makefile.am: Reenable the simd tests.
9400
9401 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9402
9403         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9404           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9405           other vreg is allocated to that hreg.
9406
9407         Contributed under MIT/X11 license.
9408
9409 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9410
9411         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9412         yet checked in.
9413
9414 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9415
9416         * basic-simd.cs: New test suite for SIMD intrinsics.
9417
9418         * Makefile.am: Added new tests.
9419
9420 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9421
9422         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9423
9424         * mini-ops.h: Same.
9425
9426         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9427
9428         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9429         using SSE2 aware opcodes.
9430
9431         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9432         is enabled, this code path is only reachable if conversion ops are emmited after
9433         mono_method_to_ir.
9434
9435         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9436
9437         This optimization saves 6 bytes per conversion against the old version.
9438
9439 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9440
9441         * aot-compiler.c (compile_method): Don't skip methods referencing 
9442         generic methods without a corresponding entry in token_info_hash, since
9443         encode_method_ref () can handle all generic methods now.
9444
9445         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9446         generic context is set.
9447         
9448         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9449         generic sharing of LDTOKEN.
9450
9451 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9452
9453         * mini-amd64.h: Temporarily disabled fast virtual generic method
9454         calls because it breaks the System.Runtime.Remoting tests.
9455
9456 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9457
9458         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9459
9460         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9461         so inlining actually works.
9462         (check_inline_caller_method_name_limit): Ditto.
9463
9464 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9465
9466         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9467         64 bit safety (from Olaf Hering and Andreas Farber).
9468
9469 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9470         
9471         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9472         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9473         unused virtual call support code.
9474
9475         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9476         
9477         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9478         which can't use aot trampolines.
9479         (decode_patch): Don't create aot trampolines for methods which can't use
9480         them.
9481
9482         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9483         use aot trampolines.
9484
9485         * mini.h: Bump AOT image format version.
9486         
9487 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9488
9489         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9490         to save_token_info () since cmethod is inflated for constrained calls.
9491
9492         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9493
9494 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9495
9496         * Makefile.am: Add build rules for ppc64.
9497         This avoids the build failing at pedump with unresolved symbols
9498         due to lack of arch_sources. Instead it will now fail earlier
9499         due to lack of cpu-ppc64.md.
9500
9501         Contributed under MIT/X11 license.
9502
9503 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9504
9505         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9506         tail calls.
9507
9508         * iltests.il.in: Add test case for tail call with many arguments.
9509
9510 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9511
9512         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9513         to the fast virtual generic method code until the aot case is fixed.
9514
9515 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9516
9517         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9518
9519 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9520
9521         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9522         thunks.
9523
9524 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9525         
9526         * simd-intrinsics.c: Forgot to add this one.
9527
9528         * mini-codegen.c: Fix macro in case SIMD is not supported.
9529
9530 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9531         
9532         This patch land initial JIT support for simd intrinsics.
9533
9534         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9535
9536         * Makefile.am: Added simd-intrinsics.c
9537
9538         * simd-intrinsics.c: New file with simd instrinsic related
9539         code.
9540
9541         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9542
9543         * cpu-x86.md: Add simd related instructions.
9544
9545         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9546
9547         * driver.c: Added two new --regression variants.
9548
9549         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9550
9551         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9552
9553         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9554         extract some complicated logic to helper functions.
9555
9556         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9557
9558         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9559
9560         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9561         the specialized simplification pass.
9562
9563         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9564
9565         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9566
9567         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9568         table.
9569
9570         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9571         if MONO_ARCH_NEED_SIMD_BANK is defined.
9572
9573         * mini-ops.h: Added the new simd ops.
9574
9575         * mini-x86.c: Added mono_arch_xregname.
9576
9577         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9578
9579         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9580
9581         * mini-x86.h: Define simd related MONO_ARCH macros.
9582
9583         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9584
9585         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9586
9587         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9588         MONO_CLASS_IS_SIMD to deal with simd related IR.
9589
9590         * mini.h (MonoInst): Added spill_var to the backend union.
9591
9592         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9593
9594         * mini.h: Added forward declarations of the new simd fuctions.
9595
9596         * optflags-def.h: Added new optimization names SIMD.
9597
9598         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9599
9600         * regalloc.h: Added support for working with 3 register banks.
9601
9602         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9603
9604         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9605
9606 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9607
9608         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9609
9610 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9611
9612         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9613         instead of one on 64 bit systems.
9614
9615         * method-to-ir.c: Remove unused includes.
9616
9617 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9618
9619         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9620         cfg->used_int_regs, since the two are different on arm.
9621
9622 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9623
9624         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9625         mono_method_get_vtable_index() to get the vtable index.
9626
9627 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9628
9629         * method-to-ir.c (mono_method_to_ir2): Don't create native
9630         wrappers for array methods, because they're never called (and if
9631         they were called they wouldn't work).
9632
9633 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9634
9635         * method-to-ir.c (mono_method_to_ir2): Array methods are
9636         special-cased and must not be invoked indirectly via the (M)RGCTX
9637         when generic sharing is turned on.  Fixes #431413.
9638
9639 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9640
9641         * method-to-ir.c: When generic sharing is active, call
9642         non-interface virtual generic methods via the standard trampoline.
9643
9644         * mini-trampolines.c: Handle virtual generic shared methods.
9645
9646         * mini.h, mini-x86.c, mini-x86.h: New argument for
9647         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9648         method thunks and which is the trampoline to call if the lookup
9649         fails.  Enable the virtual generic method thunk for x86.
9650
9651         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9652         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9653         argument but assert that it's NULL, because these archs don't yet
9654         implement the virtual generic method thunk.  Changes in the IMT
9655         thunk data structures.
9656
9657 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9658
9659         * aot-compiler.c (emit_globals): Avoid invalid characters in
9660         the static linking symbol.
9661
9662         * objects.cs: Add a test for the range check optimization. Fix warnings.
9663
9664         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9665         optimization from the current JIT.
9666
9667         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9668         later in decompose_array_access_opts () to allow more optimizations.
9669
9670         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9671         mono_decompose_soft_float () for consistency.
9672
9673         * mini-ops.h: Fix arguments of OP_STRLEN.
9674
9675         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9676         into a separate function.
9677         (reset_cast_details): Ditto.
9678         (handle_unbox): Save cast details. Fixes #431254.
9679
9680         * method-to-ir.c: Remove some obsolete FIXMEs.
9681
9682 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9683
9684         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9685
9686 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9687
9688         * mini-codegen.c: More work on macros to make them
9689         ready for multiple regbanks.
9690
9691 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9692
9693         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9694
9695         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9696
9697 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9698
9699         * mini-codegen.c (mono_spillvar_offset): Proper support for
9700         multiple regbanks.
9701
9702 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9703
9704         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9705         the stack overflow changes.
9706
9707 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9708
9709         * mini-codegen.c: Make all bank macros depend on reg_bank.
9710
9711         * mini-codegen.c (mono_local_regalloc): Make free mask
9712         initialization regbank aware.
9713
9714 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9715
9716         * mini-codegen.c (mono_local_regalloc): Extract callee
9717         mask selection to a function and make it regbank aware.
9718
9719 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9720
9721         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9722         code to deal with many regbanks.
9723
9724 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9725
9726         * mini-codegen.c: More fp->regbank changes.
9727
9728 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9729
9730         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9731         of a hardcoded constant.
9732
9733 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9734
9735         * method-to-ir.c (type_from_stack_type): Fix typo.
9736
9737 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9738
9739         * mini-ia64.c (emit_move_return_value): Convert float return values to
9740         double.
9741
9742         * objects.cs: Add a new test.
9743         
9744         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9745         VARARG methods to fix an assert later.
9746
9747         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9748         end so it at least compiles.
9749
9750 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9751
9752         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9753
9754 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9755
9756         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9757         optimization to a new function (emit_optimized_ldloca_ir) and enable
9758         it for both ldloca and ldloca_s.
9759
9760 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9761
9762         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9763         gshared CASTCLASS code.
9764
9765         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9766         amd64, where the libc stack unwinder encounters stack frames referring to
9767         native code in unmapped memory.
9768
9769         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9770         sharing.
9771
9772         * generics.cs: Add new test.
9773
9774 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9775
9776         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9777         add a check that one of the ARM_FPU_ constants is defined.
9778
9779         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9780         
9781         * mini-exceptions.c: Fix build on non-altstack platforms.
9782
9783         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9784         sharing of vtypes.
9785
9786         * ir-emit.h: Add a comment to NEW_PCONST.
9787
9788         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9789
9790         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9791
9792         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9793         after the changes to MonoJitDomainInfo.
9794
9795 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9796
9797         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9798
9799 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9800
9801         * mini-ppc.c: Compiler warning fixes.
9802
9803 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9804
9805         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9806         for pinvokes.
9807
9808 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9809
9810         * exceptions-ppc.c, mini-ppc.h: Compile
9811         mono_arch_handle_altstack_exception() on Darwin, too.
9812
9813 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9814
9815         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9816         work on archs which don't have generic sharing implemented, only
9817         without the vtable_arg.
9818
9819 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9820
9821         * mini.c: Added comment explaining why delegate ctor icall
9822         wrappers are compiled.
9823
9824 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9825
9826         * mini.c: Don't produce trampolines to delegate ctor icall
9827         wrappers but compile them upfront.
9828
9829 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9830
9831         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9832         runtime-set function when going back to managed code. Currently this
9833         is used to set back the protection on the soft ovf pages and/or to
9834         throw the stack overflow exception that happened in unmanaged code.
9835
9836 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9837
9838         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9839         runtime-set function when going back to managed code. Currently this
9840         is used to set back the protection on the soft ovf pages and/or to
9841         throw the stack overflow exception that happened in unmanaged code.
9842
9843 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9844
9845         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9846         the support code for restoring stack protection after stack overflows
9847         that happen in unmanaged code. Don't set the exec permission on the
9848         soft overflow area.
9849
9850 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9851
9852         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9853         delegate->method_ptr is set. Fixes #428054.
9854
9855 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9856
9857         * tests.cs: Rename to ratests.cs.
9858
9859         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9860         emit_get_rgctx_... functions.
9861
9862 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9863
9864         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9865
9866 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9867
9868         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9869         before asserting that method is sharable.
9870
9871 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9872
9873         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9874         whether method needs a static RGCTX wrapper used instead of
9875         complex conditions.
9876
9877         * generic-sharing.c, mini.h: A few functions moved to
9878         metadata/generic-sharing.c.
9879
9880 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9881
9882         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9883         Generic code sharing for value types, which essentially means
9884         treating value type methods like static methods.  The RGCTX is
9885         passed in the same way.
9886
9887 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9888
9889         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9890         opcode when creating multi-dimensional arrays of open types.
9891
9892         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9893         open generic types.
9894
9895         * generics.cs: Add a test.
9896
9897         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9898
9899 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9900
9901         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9902
9903         * mini.c (mini_method_compile): Set it when running under the debugger. 
9904
9905         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9906         vreg optimization if the flag is set.
9907
9908         * driver.c (mono_main): Add --attach= option to pass options to
9909         the attach agent.
9910
9911         * mini.c (sigquit_signal_handler): Start the attach agent.
9912
9913         * ssapre.c: Disable this to save space since it is not yet ported to
9914         linear IR.
9915
9916         * regalloc2.c: Disable this to save space.
9917
9918         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9919
9920 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9921
9922         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9923         the -v option useful again.
9924
9925 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9926
9927         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9928         --break-at-bb.
9929
9930         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9931         arrays of arrays. Fixes #428406.
9932
9933         * method-to-ir.c (mini_emit_castclass): Ditto.
9934
9935         * objects.cs: Add new test.
9936         
9937 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9938
9939         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9940         was wrong at it choked against target_type_is_incompatible for byref types.
9941
9942 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9943
9944         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9945         places.
9946
9947 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9948
9949         * mini-exceptions.c: update a few more exceptions-related counters.
9950
9951 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9952
9953         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9954         new functions to allocate from persistent mempools.
9955
9956 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9957
9958         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9959         multiple register banks in the future.
9960
9961         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9962
9963 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9964
9965         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9966
9967         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9968
9969         * mini.h: Export type_to_eval_stack_type.
9970
9971         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9972         is only ins->klass of byref types.
9973
9974 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9975
9976         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9977         (mini_emit_memcpy2): Ditto.
9978
9979         * mini-amd64.c: Fix a warning.
9980
9981 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9982
9983         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9984         linking.
9985
9986 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9987
9988         * method-to-ir.c: Extract stloc micro-optimization to a
9989         function and apply it to all cases.
9990
9991 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9992
9993         * method-to-ir.c: Don't fail generic code sharing in cases we
9994         already support.
9995
9996 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9997
9998         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9999
10000 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10001
10002         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10003         implementation.
10004
10005 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10006
10007         * trace.c: make tracing more useful and correct, with per-thread
10008         id and indent info.
10009
10010 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10011
10012         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10013         doing a method call and the argument is an R4.
10014
10015 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10016
10017         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10018         generic methods.
10019
10020 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10021
10022         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10023
10024 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10025
10026         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10027         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10028
10029 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10030
10031         * driver.c: Add a --agent argument (not supported yet) to load managed
10032         agent assemblies before loading the main assembly, similarly to how the
10033         Java VM handles agents.
10034
10035 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10036
10037         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10038         function to do stack layout of local variables.
10039
10040 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10041
10042         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10043         calculation.
10044
10045 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10046
10047         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10048         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10049         JIT if DISABLE_JIT is defined.
10050
10051         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10052         defined.
10053
10054 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10055
10056         * iltests.il.in: Disable the fconv test on PPC (the result is
10057         undefined according to ECMA).
10058
10059 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10060
10061         * iltests.il.in: Enable tail call tests for PPC.
10062
10063         * mini.h: Add variable for storing incoming valuetype argument
10064         addresses for tail calls.
10065
10066         * mini-ppc.c: Implement valuetype arguments and return values for
10067         tailcalls on Linux.
10068
10069 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10070
10071         * mini-ppc.c: Partially implement tail calls (struct arguments and
10072         return values not supported).
10073
10074         * method-to-ir.c: Enable tail calls on PPC.
10075
10076 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10077
10078         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10079         runtime-invoke wrappers to work around the problem of them getting
10080         assigned to a random class.
10081
10082         * aot-runtime.c (mono_aot_get_method): Ditto.
10083         
10084 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10085
10086         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10087         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10088
10089 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10090
10091         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10092         until they're implemented properly.
10093
10094         * exceptions-ppc.c: Use arch-independent exception-handling code
10095         instead of custom one.
10096
10097         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10098         for Linear IR.
10099
10100         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10101
10102         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10103         applies when __powerpc__ is defined.
10104
10105 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10106
10107         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10108         methods to their code to avoid computing the full name of wrappers and
10109         doing a lookup in a string hash table.
10110
10111 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10112
10113         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10114         we identify bblocks before method_to_ir () is ran.
10115
10116         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10117         Also avoid optimizing branches pointing to themselves.
10118
10119         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10120
10121 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10122
10123         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10124
10125 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10128         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10129         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10130         'buf'.
10131
10132         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10133         jumped to the same entry in plt_jump_table.
10134
10135 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10136
10137         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10138         dynamic images.
10139
10140 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10141
10142         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10143         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10144         #421807.
10145
10146 2008-08-29  Geoff Norton  <gnorton@novell.com>
10147
10148         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10149         segment, and doesn't properly handle .space as .text.  Fixes
10150         AOT Mach/ARM
10151
10152 2008-08-29  Geoff Norton  <gnorton@novell.com>
10153
10154         * mini.c: Disable the mach exception handler when running on 
10155         ARM
10156
10157 2008-08-29  Geoff Norton  <gnorton@novell.com>
10158
10159         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10160         globals on Darwin/ARM
10161
10162 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10163
10164         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10165         since too many things depend on it. Instead, call 
10166         mono_runtime_set_no_exec ().
10167         
10168         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10169         the new JIT.
10170
10171         * aot-compiler.c: Add an 'asm-only' AOT option.
10172
10173         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10174                 
10175         * aot-compiler.c (compile_method): Disable gshared support for now as it
10176         doesn't yet work.
10177
10178 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10179
10180         * mini-amd64.h : Fix a compiler warning.
10181
10182         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10183           Changed to use a callback function to retrieve the unwind info.
10184           This avoids problems observed when code blocks were removed by
10185           unloading an app domain.
10186
10187         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10188           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10189           to work properly.
10190
10191         Contributed under MIT/X11 license.
10192
10193 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10194
10195         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10196           case to keep the stack aligned to 8.
10197
10198         Contributed under MIT/X11 license.
10199
10200 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10201
10202         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10203         avoid repeated linear searches.
10204
10205 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10206
10207         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10208         methods it can't handle.
10209         
10210         * aot-compiler.c (add_method): Avoid adding a method twice.
10211         (add_wrappers): Add runtime invoke wrappers for all methods.
10212
10213         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10214         function to create an aot-compatible version of this trampoline.
10215
10216         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10217
10218 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10219
10220         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10221
10222         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10223         with a generic sharing failure.
10224
10225         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10226
10227         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10228         CEE_RETHROW. Fixes #419634.
10229
10230         * mini.c (mono_method_to_ir): Ditto.
10231
10232         * exceptions.cs: Add a new test.
10233         
10234         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10235         to mono_type_stack_size_internal () since some callers might not pass in
10236         an rgctx.
10237
10238         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10239         instrument_prolog. Fixes #419878.
10240
10241         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10242         doubles in soft float mode volatile.
10243
10244 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10247
10248         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10249         to handle soft float correctly.
10250
10251         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10252         the fast path.
10253
10254         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10255
10256         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10257         to sp, since the generics catch code requires it.
10258
10259         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10260         copying.
10261
10262         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10263         mono_arch_emit_imt_argument ().
10264
10265         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10266
10267         * mini-arm.c tramp-arm.c: Generic sharing updates.
10268
10269 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * mini-arm.c: Fix the arm build.
10272
10273         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10274         handling enums, generic instances and generic sharing.
10275         (mini_type_stack_size_full): Ditto.
10276
10277         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10278         
10279         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10280
10281         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10282
10283         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10284         trampolines.
10285
10286         * mini-arm.c: Various small generic sharing changes.
10287
10288         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10289         this for x86.
10290         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10291         custom code.
10292
10293         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10294         helper function to return a generic class init trampoline.
10295
10296         * method-to-ir.c mini.c: Use it.
10297         
10298         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10299         arch-specfic function to return a generic class init trampoline.
10300
10301         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10302         the GENERIC_CLASS_INIT custom code.
10303
10304         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10305         a fatal error, not a sharing failure.
10306
10307         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10308         needed.
10309
10310         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10311         trampoline argument from MONO_ARCH_VTABLE_REG.
10312
10313         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10314         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10315         argument, and pass the vtable in VTABLE_REG.
10316
10317         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10318         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10319         argument, and pass the vtable in VTABLE_REG.
10320         (mono_arch_create_trampoline_code_full): Remove some special casing for
10321         the rgctx fetch trampoline.
10322
10323         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10324         Fixes #419273.
10325
10326         * iltests.il: Add a test for it.
10327
10328 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10329
10330         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10331
10332         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10333         no longer needed.
10334
10335         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10336         use mono_jit_info_table_find () to avoid recursion.
10337         (mono_delegate_trampoline): Add a sync wrapper here.
10338
10339         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10340         here.
10341
10342         * mini.c (mono_method_to_ir): Ditto.
10343         
10344         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10345         add_sync_wrapper argument. Don't add a sync wrapper here.
10346         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10347
10348         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10349         
10350 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10351
10352         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10353           of nonvolatile registers back from MonoContext to CONTEXT.
10354
10355         Contributed under MIT/X11 license.
10356
10357 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10358
10359         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10360           arguments on Winx64 there are only 4 argument registers.  For this
10361           logic to work the last argument must be pulled from the stack.  
10362
10363         Contributed under MIT/X11 license.
10364
10365 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10366
10367         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10368
10369         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10370         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10371         encode/decode_method_ref ().
10372
10373         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10374
10375         * aot-runtime.c (decode_patch): Ditto.  
10376
10377         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10378         MONO_PATCH_INFO_METHOD.
10379
10380         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10381         MonoGenericJitInfo.
10382
10383         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10384         MonoGenericJitInfo.
10385
10386         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10387
10388         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10389         one from the caller.
10390
10391         * aot-runtime.c (decode_generic_inst): New function to decode and
10392         return a interned generic inst.
10393         (decode_klass_ref): Use it.
10394         (decode_method_ref): Ditto.
10395
10396         * aot-compiler.c (emit_exception_debug_info): Save 
10397         jinfo->has_generic_jit_info too.
10398
10399 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10400
10401         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10402
10403         * iltests.il.in: Add a test for fconv_to_i.
10404
10405         * liveness.c: Disable the liveness2 pass for now to save space.
10406
10407         * regalloc2.c: Include mempool-internals.h to fix warnings.
10408
10409         * aot-compiler.c (encode_method_ref): Encode the context of generic
10410         instance methods.
10411
10412         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10413         the context saved in the aot file.
10414
10415         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10416
10417         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10418
10419         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10420         volatile so they won't be optimized away.
10421
10422 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10423
10424         * ssa.c:
10425         * ssa2.c:
10426         * mini.c:
10427         * regalloc2.c:
10428         * dominators.c: Remove duplicated functions that now are in
10429         mempool-internals.h.
10430
10431 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10432
10433         * aot-compiler.c: Fix warnings.
10434
10435         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10436
10437         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10438
10439         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10440         as the patch type.
10441
10442         * mini.c (mono_resolve_patch_target): Ditto.
10443         
10444         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10445         (encode_klass_ref): Add support for encoding VARs/MVARs.
10446
10447         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10448
10449         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10450         the handling of the got entries into a separate 'decode_got_entry' function.
10451         Add support for RGCTX_FETCH.
10452
10453         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10454         clobbered by the trampoline code.
10455
10456         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10457         not clobbered by the indirect calling code.
10458
10459 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10460
10461         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10462         to fix the build.
10463
10464 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10465
10466         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10467         signature using the compilation mempool otherwise we would leak it.
10468
10469 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10470
10471         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10472         mono_emit_abs_call ().
10473
10474         * patch-info.h: Add GENERIC_CLASS_INIT.
10475
10476         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10477
10478         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10479         as their target as a near call.
10480
10481         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10482         ABS handling code.
10483         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10484
10485         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10486         call to a runtime function described by a patch.
10487
10488         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10489         mono_emit_abs_call, this has the advantage that the ABS handling code in
10490         mono_codegen () can handle them both, and can handle other stuff in the
10491         future without additional code.
10492
10493         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10494         entry.
10495         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10496         abs addresses.
10497
10498         * mini.h: Add missing bblock related prototypes.
10499
10500         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10501         reverse_inst_list_len fields.
10502
10503         * mini.c: Refactor this file a bit by moving branch optimizations to 
10504         branch-opts.c.
10505
10506         * method-to-ir.c: Merge generic sharing changes missed earlier.
10507
10508         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10509
10510         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10511         shared patches. Process METHODCONST as a shared patch.
10512
10513         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10514         as it crashes on the 2.0 mscorlib.
10515
10516         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10517         to cause crashes.
10518         
10519         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10520         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10521         by IMT.
10522
10523         * aot-compiler.c: Reorganize the got handling code to be a bit more
10524         understandable.
10525
10526 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10527
10528         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10529         mono_patch_info_equals/hash, and use it to massively simplify
10530         get_plt_index ().
10531
10532         * mini.c (mono_patch_info_hash): Simplify this and add support for
10533         more patch types.
10534
10535         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10536
10537         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10538         handling code, since an offset is not enough to identify a trampoline.
10539
10540         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10541
10542 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10543
10544         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10545
10546         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10547
10548         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10549
10550         * decompose.c: PPC decompositions for various ops.
10551
10552         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10553
10554 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10555
10556         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10557         call the generic trampoline code using a call, instead of a jump, to
10558         remove some special casing from the generic trampoline code.
10559
10560         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10561         (mono_codegen): Ditto.
10562
10563         * aot-compiler.c aot-runtime.c: Ditto.
10564
10565         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10566
10567         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10568         helper function to find the offset corresponding to a lazy fetch trampoline.
10569
10570         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10571         when doing generic sharing.
10572
10573         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10574         places.
10575         
10576         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10577         mini-trampolines.c to be with the other trampoline creation functions.
10578
10579         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10580         as it is equal to method->signature in most cases, add a 
10581         mono_emit_method_call_full variant which takes a signature and an imt
10582         argument as well.
10583
10584 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10585
10586         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10587         to this function, since it could be computed easily from the method 
10588         argument.
10589         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10590         more.
10591
10592         * method-to-ir.c mini.c: Remove references to 
10593         compile_generic_method_wo_context.
10594
10595         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10596         generic method calls.
10597         
10598         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10599         dimensional non-szarrays.
10600
10601         * mini.c (mini_init): Register mono_array_new_1.
10602
10603         * jit-icalls.c (mono_array_new_1): New jit icall.
10604
10605         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10606         pointing to the method.
10607
10608         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10609         method addresses belonging to METHOD_JUMP patches in the 
10610         jump_target_got_slot_hash.
10611         (mono_aot_load_method): Ditto.
10612
10613         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10614         METHOD_JUMP patches.
10615
10616         * mini.c (mini_create_jit_domain_info): New helper function which 
10617         initializes/frees domain->runtime_info.
10618         (mini_free_jit_domain_info): Ditto.
10619         (mini_init): Install the domain hook functions with the runtime.
10620
10621         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10622         information maintained by the JIT.
10623
10624         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10625         insertion into jump_table_hash into mono_codegen (), also implement proper
10626         locking.
10627
10628         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10629         tail calls, it is already done by the aot code.
10630         
10631         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10632         mechanism on amd64.
10633
10634         * iltests.il.in: Make the jmp test a bit more complex.
10635
10636         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10637         generic instances which doesn't have a token.
10638
10639         * aot-runtime.c (decode_method_ref): Ditto.
10640         
10641         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10642         can handle this case now.
10643         (handle_box): Ditto.
10644
10645 2008-08-15  Geoff Norton  <gnorton@novell.com>
10646
10647         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10648         debugging check.
10649
10650 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10651
10652         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10653         calling generic methods.
10654
10655         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10656
10657         * aot-runtime.c (decode_patch_info): Ditto.
10658
10659         * mini.c (mono_resolve_patch_target): Ditto.
10660         
10661         * patch-info.h: Add METHOD_RGCTX.
10662
10663         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10664
10665 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10666
10667         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10668         arguments in registers.
10669
10670         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10671         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10672
10673         * mini.c (mini_method_compile): Abort aot compilation for generic
10674         methods if generic sharing is disabled.
10675         
10676         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10677         an mrgctx.
10678
10679         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10680         requiring an mrgctx.
10681
10682         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10683         store instructions when converting a vcall to a normal call.
10684
10685         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10686         mono_arch_find_jit_info.
10687
10688 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10689
10690         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10691         avoid calling mono_method_full_name () for every method even if the
10692         env var is not set.
10693         (check_inline_caller_method_name_limit): Ditto.
10694
10695 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10698         assemblies in one run.
10699
10700         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10701         skipped methods if it is not 0.
10702
10703         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10704
10705 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10706
10707         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10708           MONO_ARCH_HAVE_UNWIND_TABLE.
10709
10710         Contributed under MIT/X11 license.
10711
10712 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10713
10714         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10715           from default optimizaton list on Winx64.
10716
10717         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10718
10719         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10720           the LMF from the MonoJitTlsData structure.
10721
10722         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10723
10724         Contributed under MIT/X11 license.
10725
10726 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10727
10728         * mini.c (sigsegv_signal_handler): Fix the build.
10729
10730         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10731         assembly->aot_module.
10732
10733         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10734         hash table. This simplifies and speeds up a lot of code, and fixes support
10735         for .netmodules.
10736
10737         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10738         with the runtime.
10739
10740         * mini-exceptions.c: Ditto.
10741         
10742         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10743         'native_offset' argument, since these are computed in the 
10744         mono_find_jit_info () function.
10745
10746         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10747         is used by exceptions-ppc.c.
10748
10749         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10750         mono_arch_find_jit_info ().
10751         
10752         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10753         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10754         generic code in mini-exceptions.c.
10755
10756 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10757
10758         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10759
10760         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10761         
10762         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10763         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10764         called while holding the loader lock. Fixes #415608.
10765         (mono_aot_get_method_from_token_inner): Ditto.
10766
10767 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10768
10769         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10770         to reduce differences between this and the generic implementation in
10771         mini-exceptions.c.
10772         (ves_icall_get_frame_info): Ditto.
10773
10774         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10775
10776         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10777         longer neccesarry.
10778
10779         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10780         mono_arch_get_call_filter () and make it non-static, for consistency with the
10781         other architectures.
10782
10783 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10784
10785         * mini.c:
10786         * local-propagation.c:
10787         * mini-x86.c: Correct the name of arch defines.
10788
10789 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10790
10791         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10792         NO_EMULATE_LONG_SHIFT_OPS define.
10793
10794 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10795
10796         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10797         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10798
10799         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10800         MACH fixes. Merged from the 2.0 branch.
10801
10802         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10803
10804         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10805         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10806
10807         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10808
10809         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10810         mono_marshal_get_native_wrapper () signature changes.
10811
10812 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10813
10814         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10815         conversion bug under arm.
10816
10817 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10818
10819         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10820
10821         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10822         with overflow checking.
10823
10824 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10825
10826         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10827         to the genmdesc.pl file
10828
10829 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10830
10831         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10832         arg_array in the soft-float versions of the LOAD/STORE macros.
10833
10834         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10835         implementation.
10836
10837         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10838
10839 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10840
10841         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10842         a float HFA. Fixes #413621.
10843
10844 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10845
10846         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10847         frame_size to args_size. Fixes build.
10848
10849 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10850
10851         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10852         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10853
10854         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10855         the stack are not unaligned. Fixes #413247.
10856         
10857 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10858
10859         * mini.c: update jitted methods performance counters.
10860
10861 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10862
10863         * mini-exceptions.c: increase the exceptions thrown performance
10864         counter in mono_handle_exception ().
10865
10866 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10867
10868         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10869         can work with netmodules.
10870
10871 2008-07-28  Geoff Norton  <gnorton@novell.com>
10872
10873         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10874         regression tests.
10875
10876 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10877
10878         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10879         correct place.
10880
10881 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10882
10883         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10884           The float param registers and other param registers must be the 
10885           same index on Windows x64.
10886
10887         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10888           ArgValuetypeAddrInIReg argument case.  Setting the argument
10889           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10890
10891         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10892           variable computed above as the copy length for arguments of storage
10893           type ArgValuetypeAddrInIReg.
10894
10895         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10896           ArgValuetypeAddrInIReg argument case.  This case will rely on
10897           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10898
10899         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10900           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10901           jump and tail call instructoins as they do not follow the typical call behavior.
10902
10903         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10904           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10905           local variable and pass the local variable by reference to the called method.
10906
10907         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10908           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10909           of a struct is passed in a register it must be saved with the other
10910           volatile argument on the stack.
10911
10912         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10913           frame pointer the stack adjustment value must be saved to the unwind 
10914           info structure.
10915
10916         Contributed under MIT/X11 license.
10917
10918 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10919
10920         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10921         which got lost in the merge.
10922
10923 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10924
10925         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10926         build.
10927
10928         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10929         
10930         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10931         icalls, since they won't be patched.
10932
10933         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10934         different code sequence when running under valgrind to prevent some valgrind
10935         errors.
10936
10937         * iltests.il.in: Add new regression test.
10938
10939         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10940         end with a throw.
10941
10942         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10943         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10944
10945         * iltests.il.in: Add new test.
10946
10947         * aot-compiler.c: Fix some warnings.
10948
10949         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10950         Fixes #412494.
10951
10952 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10953
10954         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10955         (mini_usage_jitdeveloper): Add a missing --wapi option.
10956
10957 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10958
10959         * mini-codegen.c: Simplify the is_fp macros.
10960         (free_up_ireg): Remove, use free_up_reg instead.
10961         (free_up_reg): Fix the fp case.
10962
10963 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10966         lowered earlier.
10967
10968         * exceptions-x86.c: Merge some changes which seemed to have got lost
10969         in the linear-ir merge.
10970
10971         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10972
10973         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10974         long vreg volatile even if the variable was already created.
10975
10976         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10977         volatile variables.
10978
10979 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10980
10981         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10982
10983         * mini.c (mono_jit_compile_method_inner): Add support for 
10984         MONO_EXCEPTION_BAD_IMAGE.
10985
10986         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10987         mini_method_get_context () returns NULL. Fixes #356531.
10988
10989         * mini.c (mono_method_to_ir): Ditto.
10990         
10991         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10992         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10993
10994 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10995
10996         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10997         in the LDFTN implementation.
10998
10999 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11000
11001         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11002         code, patch calls to icalls, too, even if they're not in the
11003         shared generic code hash.  Fixes #411962.
11004
11005 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11006
11007         * cpu-x86.md: Increase the length of the fcall opcodes.
11008
11009         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11010         calls returning floats.
11011
11012         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11013         on NEWARR.
11014         
11015         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11016         missed earlier.
11017
11018         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11019         into the domain->method_code_hash.
11020
11021         * aot-compiler.c: Fix win32 build.
11022
11023         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11024         
11025         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11026         gshared NEWARR implementation.
11027
11028         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11029
11030         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11031         can be used outside of method_to_ir.
11032
11033         * mini.h (MonoCompile): Add arg_types field.
11034
11035         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11036         
11037         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11038         the values of the local arg_array and param_types array.
11039
11040 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11041
11042         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11043         got accesses might only get generated later when NEWOBJ is decomposed.
11044         
11045         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11046         looking up the native code of the target method when a delegate is called
11047         for the first time.
11048
11049         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11050         optimization.
11051
11052         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11053
11054         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11055         AOT work on platforms without a working dlsym implementation.
11056
11057         * mini.h: Bump AOT image format version.
11058         
11059 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11060
11061         * mini-exceptions.c: Free a MonoType with
11062         mono_metadata_free_type() instead of g_free().
11063
11064         * aot-runtime.c: Free a MonoType.
11065
11066 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11067
11068         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11069         optimization.
11070
11071         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11072         fp stack on x86.
11073
11074 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11075         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11076         profiler hook.
11077
11078 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11081         NEWOBJ calls on valuetypes.
11082
11083         * iltests.il.in: Add new test.
11084
11085         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11086
11087 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11090         is no longer needed.
11091
11092         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11093         non register sized integer arguments.
11094         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11095         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11096         emit_memcpy2 ().
11097
11098         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11099         CEE_MONO_RETOBJ.
11100         
11101         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11102         two a binop with different sized arguments is emitted.
11103
11104         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11105         instruction in the ins==NULL case.
11106
11107 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11108
11109         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11110
11111         * mini-x86.c: Fix osx build.
11112
11113         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11114         opcodes as well.
11115
11116         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11117         instruction for non int sized variables.
11118
11119         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11120         implementation.
11121
11122 2008-07-23  Robert Jordan  <robertj@gmx.net>
11123
11124         * method-to-ir.c: Fix MSVC build.
11125
11126 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11127
11128         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11129         a non int sized type, widen it to an int since newer versions of gcc seem to
11130         generate code which needs this.
11131
11132         * ssa2.c abcremoval2.c: Fix warnings.
11133
11134         * *: Merge the Linear IR branch.
11135
11136         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11137         the ChangeLog file there describes all the changes done over the years. 
11138         Further documentation can be found at www.mono-project.com/Linear_IL.
11139
11140 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11141
11142         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11143           The float param registers and other param registers must be the 
11144           same index on Windows x64.
11145
11146         Contributed under MIT/X11 license.
11147
11148 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11149
11150         * mini.c: Make the previous fix GC safe.
11151
11152 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11153
11154         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11155
11156 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11157
11158         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11159           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11160           ArgValuetypeAddrInIReg instead.
11161
11162         Contributed under MIT/X11 license.
11163
11164 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11165
11166         * mini-codegen.c (get_register_spilling): Fix a warning.
11167
11168 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11169
11170         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11171         for types which the initialization fails. Raises the provided exception
11172         at the right stop after cleanup.
11173
11174 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11175
11176         * aot-compiler.c: Free most of the memory allocated during compilation.
11177
11178         * mini.c (mini_parse_debug_options): Fix a leak.
11179         
11180         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11181         during aot compilation.
11182
11183 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11186         it has too much register pressure.
11187
11188 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11189
11190         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11191
11192 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11193
11194         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11195         on x86.
11196
11197         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11198         on amd64 similar to the way it is done on arm.
11199
11200         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11201
11202         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11203         consistency, normalize error messages, avoid loading aot-only modules in
11204         normal mode.
11205
11206         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11207         for consistency.
11208
11209         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11210
11211 2008-07-11  Martin Baulig  <martin@ximian.com>
11212
11213         * debug-debugger.h
11214         (MonoDebuggerInfo): Add `interruption_request'.
11215
11216 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * aot-compiler.c (emit_plt): Remove some dead code.
11219
11220         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11221
11222         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11223         return the plt info offset belonging to a given plt entry.
11224
11225         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11226         mono_aot_get_plt_info_offset.
11227         
11228         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11229         similar to the amd64 code by makeing jumps through a separate jump table 
11230         instead of embedding the jump addresses into the code.
11231
11232 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11233
11234         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11235         method.
11236
11237 2008-07-10  Martin Baulig  <martin@ximian.com>
11238
11239         * mini.c (mini_method_compile): Disable generics sharing when
11240         running in the debugger.
11241
11242 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11243
11244         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11245
11246         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11247         the local register allocator from running out of registers on x86 when 
11248         using aot.
11249
11250 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11251
11252         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11253         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11254         C4146.
11255
11256         Contributed under MIT/X11 license.
11257
11258 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11259
11260         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11261         speed up the assembler.
11262
11263 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11266         support.
11267
11268         * mini.c: Move the soft float handling macros a bit earlier, add 
11269         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11270         place.
11271
11272         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11273
11274         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11275         read-only to help catch code allocation requests.
11276         
11277         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11278         and turn it off when using --aot-only or when compiling with --aot=full.
11279
11280         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11281         jump table for switches from the normal domain mempool, not the code
11282         manager.
11283
11284         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11285         unbox trampoline which handles aot-only mode too.
11286
11287         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11288         an AOTed unbox trampoline.
11289
11290         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11291
11292 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11293
11294         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11295         ""
11296
11297         Contributed under MIT/X11 license.
11298
11299 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11300
11301         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11302           the unwind information for the method at the end of the allocated block.
11303           
11304         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11305           MonoCompileArch to hold the unwind info for SEH on Winx64
11306         
11307         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11308           frame pointer info for the method being compiled.
11309           
11310         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11311           the call to mono_exception_from_token.
11312           
11313         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11314           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11315           information is stored a the end of the method block because it is all 32-bit offset based.
11316
11317         Contributed under MIT/X11 license.
11318
11319 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11320
11321         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11322
11323         * wapihandles.c: Fix warnings.
11324
11325         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11326         mode.
11327
11328         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11329         mono_jit_compile_method in aot-only mode since that calls the type 
11330         initializer.
11331         
11332         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11333         get_delegate_invoke_impl in aot-only mode.
11334
11335         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11336
11337 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11338
11339         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11340
11341         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11342         is on by default.
11343
11344         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11345
11346         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11347         init trampoline from the AOT file as well.
11348
11349         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11350         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11351         code.
11352
11353         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11354         mono_init.
11355
11356         * exceptions-amd64.c: Add _full variants for the remaining exception code
11357         creation functions as well, allow emission of relocatable code, remove
11358         caching since that is now done by the caller.
11359
11360         * mini-exceptions.c: Add _full variants for the remaining exception code
11361         creation functions as well, add aot-only support.
11362
11363         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11364         if we can determine a proper token for them.
11365         (add_wrappers): Add a few more wrappers.
11366         (emit_method_code): Remove some dead code.
11367         (emit_trampolines): Emit exception code too.
11368
11369         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11370
11371         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11372         mono_array_new_va which avoids varargs.
11373
11374         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11375
11376         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11377         mono_arch_create_specific_trampoline () in all places.
11378
11379         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11380         a bit so it can be used for other things as well.
11381         
11382         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11383         on demand as well.
11384
11385         * exceptions-amd64.c: Rename the caching from the exception code creation
11386         functions, it is done by the caller instead.
11387         
11388         * exceptions-amd64.c: Change the signature of the exception code creation 
11389         functions to allow the creation of relocatable code later.
11390
11391         * mini-exceptions.c: Add a set of functions to query the various 
11392         runtime-generated exception functions.
11393
11394         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11395         mono_arch_.. () functions.
11396         
11397 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11398
11399         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11400
11401         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11402
11403         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11404         (mini_get_vtable_trampoline): Ditto.
11405
11406         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11407         code in the AOT case by returning the code size and a list of relocations to
11408         the caller.
11409
11410         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11411
11412 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11413
11414         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11415           clean the stack.
11416
11417         Contributed under MIT/X11 license.
11418
11419 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11420
11421         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11422         so the buffer size can be computed correctly. Fixes #404735.
11423
11424         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11425         normally as cfg->debug_info is already freed.
11426
11427 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11428
11429         * mini-amd64.c: For calls returning vtypes in registers, don't store
11430         the return address on the stack, instead allocate a separate local for
11431         it. Fixes #404729.
11432
11433 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11434
11435         * mini-trampolines.c, mini.h: Add an argument to
11436         mono_create_jit_trampoline_in_domain() for turning off the adding
11437         of the sync wrapper.
11438
11439         * mini.c: Use the JIT trampoline without sync instead of
11440         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11441         be patched.
11442
11443 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11444
11445         * driver.c: Turn on GSHARED optimization by default.
11446
11447 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11448
11449         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11450         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11451
11452         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11453         create a variant of the generic trampoline code callable from AOTed trampolines.
11454
11455         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11456         trampoline code callable from AOTed trampolines.
11457
11458         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11459
11460 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11461
11462         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11463         pass-through manner.
11464
11465         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11466         and don't fail sharing for them anymore.
11467
11468         * mini-exceptions.c: Handle exceptions in shared generic methods.
11469
11470         * generic-sharing.c: When checking the context of a generic
11471         method, also check its class's context.  Don't treat wrappers as
11472         sharable.
11473
11474         * mini-trampolines.c: Some code factored out to
11475         metadata/generic-sharing.c.  Handle the MRGCTX case.
11476
11477         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11478         we must deal with the method being of another instantiation of the
11479         class.  Add static rgctx invoke wrappers to generic methods.
11480
11481 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11482
11483         * mini.c: Provide all jit infos of generic shared methods with a
11484         generic jit info.
11485
11486         * mini-exceptions.c: Handle the new situation that a generic info
11487         might be available, but not info about the this/vtable/mrgctx
11488         variable.
11489
11490 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11491
11492         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11493         generic methods.
11494
11495 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11496
11497         * dominators.c (check_dominance_frontier): Fix a warning.
11498
11499         * mini.h: Add some missing prototypes.
11500
11501         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11502
11503         * driver.c (mono_jit_init_version): Correct the comments since the first
11504         argument should be the name of the root domain, not a filename.
11505
11506         * aot-runtime.c (make_writable): Error out if this is called while running
11507         with --aot-only.
11508         (load_aot_module): Ditto.
11509
11510         * aot-compiler.c: Really fix the computation of method indexes.
11511
11512         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11513         optimizations as this is no longer called frequently.
11514
11515         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11516         method and the invoke impl code and pass it to the delegate trampoline instead of
11517         just the delegate class.
11518
11519 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11520
11521         * aot-compiler.c: Fixup the computation of method indexes.
11522         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11523         the method builder infrastructure.
11524
11525         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11526         has no header.
11527
11528         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11529         mode, load the method right away instead of creating a trampoline.
11530
11531         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11532
11533         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11534         some checks a bit.
11535
11536 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11539         (mono_aot_load_method): Use method_index instead of method->token.
11540
11541         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11542         can handle icalls etc. properly.
11543
11544         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11545
11546         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11547
11548         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11549         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11550         JIT_ICALL_ADDR patch type.
11551
11552         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11553
11554         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11555         request flag.
11556         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11557
11558         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11559
11560 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11561
11562         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11563         domain->jit_code_hash.
11564
11565 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11566
11567         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11568
11569 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11570
11571         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11572         get_this_arg_from_call, let it compute it when needed.
11573
11574         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11575         gsctx from code only when needed.
11576
11577         * mini-trampolines.c (get_generic_context): Rename this to 
11578         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11579         it can be called by the arch backends.
11580
11581         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11582
11583 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11584
11585         * driver.c (mono_main): Add experimental --aot-only command line option.
11586
11587         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11588         set.
11589
11590 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11591
11592         * driver.c (DllMain): Remove mono_module_handle.
11593
11594         Contributed under MIT/X11 license.
11595
11596 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11599         for emitting methods which are not in the source assembly. Detect and report
11600         failure of assembling+linking.
11601         
11602         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11603
11604         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11605
11606 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11607
11608         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11609
11610 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11611
11612         * mini.h: Remove some obsolete prototypes.
11613
11614         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11615
11616 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11617
11618         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11619         supported by Visual Studio, so use alloca().
11620
11621 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11622
11623         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11624         Fixes #402585.
11625
11626 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11627
11628         * mini.c: Fail sharing of a generic method if it contains an open
11629         catch clause (because we don't pass MRGCTXs yet).
11630
11631 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11632
11633         * mini.c: When compiling a method with generic sharing, insert the
11634         method instantiated with an all-Object generic context into the
11635         jit info table, instead of the context of the first instantiation
11636         of the method we happen to compile.
11637
11638 2008-06-18  Martin Baulig  <martin@ximian.com>
11639
11640         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11641         `major_version' and `minor_version'.
11642
11643 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11644
11645         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11646         mono_method_is_generic_sharable_impl() takes an additional
11647         argument specifying whether to treat type variables as reference
11648         types.
11649
11650 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11651
11652         * mini.h: Removed obsolete prototypes.
11653
11654 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11655
11656         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11657         already handle them.
11658
11659 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11660
11661         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11662         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11663         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11664         tramp-x86.c: Added a MonoGenericContext* argument to
11665         mono_arch_get_unbox_trampoline() so that it can call other
11666         functions which require it.
11667
11668 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11669
11670         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11671         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11672         mono_arch_get_this_arg_from_call() takes a
11673         MonoGenericSharingContext* as well.
11674
11675 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11676
11677         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11678         implement generic sharing of unbox.
11679
11680 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11681
11682         * mini.c: Don't compute the vtable to determine whether a field is
11683         special static, because it might not work for open types.
11684
11685 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11686
11687         * mini.c: Removed the unused token_type and token_source arguments
11688         from get_runtime_generic_context_ptr().
11689
11690 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11691
11692         * mini.c (ADD_BINOP): fix the build
11693
11694 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11695
11696         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11697         a widening op.
11698
11699 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11700
11701         * mini.h: Removed class relations enum that's not used anymore.
11702
11703 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11704
11705         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11706
11707         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11708         the lazy fetch trampoline access code.
11709
11710 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11711
11712         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11713
11714 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11715
11716         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11717
11718         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11719
11720         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11721
11722 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11723
11724         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11725         intrinsics.
11726
11727         * mini-ops.h: Add MIN/MAX_UN opcodes.
11728
11729         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11730         intrinsics.
11731
11732         * basic-math.cs: Add more min/max tests.
11733
11734         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11735
11736 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11737
11738         * mini.c: Small fix in the prologue of emit_castclass.
11739
11740 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11741
11742         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11743
11744         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11745         do not work even for unsigned types. Fixes #400014.
11746
11747         * basic-math.cs: Add regression tests for unsigned Min/Max.
11748
11749 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11750
11751         * mini.c: Added additional context_used argument to several
11752         functions, which will be needed for sharing generic methods.  Use
11753         GET_RGCTX macro wherever appropriate.  Declare only one
11754         context_used in mono_method_to_ir().
11755
11756 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11757
11758         * mini.c, generic-sharing.c: Removed generic class relations.
11759
11760         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11761         functions due to MRGCTX changes.
11762
11763 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11764
11765         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11766         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11767         with calculated IMT.
11768
11769         * mini.c: Generic sharing of calls via generic interfaces.
11770
11771         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11772         generic method with non-constant MonoGenericContext*.  Instead,
11773         the context is taken out of the method itself.
11774
11775 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11776
11777         * mini.c: Generic sharing of ldvirtftn.
11778
11779 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11780
11781         * mini.c: Generic sharing of ldftn.
11782
11783 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11784
11785         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11786
11787 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11788
11789         * mini.c: Generic sharing of the special case of ldtoken followed
11790         by a call to GetTypeFromHandle.
11791
11792 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11793
11794         * mini.c: Generic sharing of box for nullable types.
11795
11796 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11797
11798         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11799         are passed on the stack. Fixes #324807.
11800
11801 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11802
11803         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11804         for the ArgValuetypeAddrInIReg case.
11805
11806         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11807         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11808
11809         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11810         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11811         local variable and pass the local variable by reference to the called method.
11812           
11813         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11814         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11815
11816         Contributed under MIT/X11 license.
11817
11818 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11819
11820         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11821
11822         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11823         everything.
11824
11825 2008-06-10  Martin Baulig  <martin@ximian.com>
11826
11827         * debug-mini.c
11828         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11829
11830 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11831
11832         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11833         possible error when no arguments are passed.
11834
11835         Contributed under MIT/X11 license.
11836
11837 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11838
11839         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11840         where the file name is NULL.
11841
11842 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11843
11844         * mini.c: Fix s390 build.
11845
11846 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11847
11848         * trace.c (mono_trace_parse_options): Fix warnings.
11849
11850         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11851
11852 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11853
11854         * mini.c (remove_block_if_useless): Avoid printing the method name.
11855         
11856         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11857         MONO_INST_NEW.
11858
11859         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11860         LMF. Not yet used.
11861
11862         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11863         translated code after it has been patched.
11864
11865 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11866
11867         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11868         avoid problems during code patching on SMP systems.
11869         (emit_call): Avoid adding a patch info which is already added by 
11870         emit_call_body.
11871         (mono_arch_emit_exceptions): Ditto.
11872
11873 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11874
11875         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11876         MONO_TYPE_ISSTRUCT already checks for it.
11877
11878 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11879
11880         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11881           structs with floats on Winx64 the float registers are not used.  
11882           The integer registers are always used..
11883         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11884           only one register will be used and only if the size of the struct 
11885           is 1,2,4, or 8 bytes.
11886
11887         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11888           to work for Winx64.
11889
11890         Contributed under MIT/X11 license.
11891
11892 2008-06-05  Martin Baulig  <martin@ximian.com>
11893
11894         * debug-debugger.c (debugger_lookup_class): Also call
11895         mono_class_setup_methods() here; we're only called from RTI.
11896
11897 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11898
11899         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11900         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11901         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11902         Post-process object files and add dtrace-generated object, if necessary.
11903
11904         Contributed under MIT/X11 license.
11905
11906 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11907
11908         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11909         element class.
11910
11911         * mini.c: Generic sharing for unbox.any and castclass.
11912
11913 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11914
11915         * mini.c: Ignore tailcall prefix in shared generic code and when
11916         doing calls which require a vtable/rgctx argument.
11917
11918 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11919
11920         * mini.c: Don't free the JIT info.
11921
11922         * driver.c: Changes in the JIT info table testing code.
11923
11924 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11925
11926         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11927         interruption. Fix some warnings.
11928
11929         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11930         interruption_checkpoint.
11931
11932 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11933
11934         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11935         from embedding applications.
11936
11937 2008-06-02  William Holmes  <billholmes54@gmail.com>
11938
11939         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11940           reserving 32 bytes on the stack when making calls. 
11941
11942         Contributed under MIT/X11 license.
11943
11944 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11945
11946         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11947         the linear IL branch.
11948
11949         * driver.c: Print out more information for --version on arm.
11950
11951 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11952
11953         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11954         bb_exit instead, since out of line bblocks might not actually be emitted
11955         out-of-line.
11956         
11957         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11958         maximum epilog size for out of line bblocks if tracing is enabled.
11959
11960         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11961
11962 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11963
11964         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11965
11966 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11967
11968         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11969         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11970         opcodes.
11971
11972 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11973
11974         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11975         the 'value' to store is a constant.
11976
11977         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11978
11979         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11980         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11981
11982 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11983
11984         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11985         for accessing method->generic_container.
11986
11987 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11988
11989         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11990         
11991         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11992
11993         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11994
11995         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11996         fails.
11997
11998 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11999
12000         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12001
12002         * mini.c: Handle the case when mono_class_vtable () fails.
12003
12004 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12005         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12006         the stat profiler.
12007
12008 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12009
12010         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12011         together with domain sharing.
12012
12013 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12014
12015         * mini.c: Treat callvirts to final methods like non-virtual calls
12016         when doing generic sharing, i.e. look them up in the runtime
12017         generic context.
12018
12019 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12020
12021         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12022         with computed types (for generic sharing).
12023
12024         * mini.c: Generic sharing for mkrefany and refanyval.
12025
12026 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12027
12028         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12029         possible.
12030
12031         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12032         the generic sharing code.
12033         
12034         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12035         when needed.
12036
12037 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12040
12041 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12042
12043         * driver.c: updated copyright date
12044
12045 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12046
12047         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12048         needed.
12049
12050 2008-05-19  Martin Baulig  <martin@ximian.com>
12051
12052         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12053         pointing to the new `_mono_debug_using_mono_debugger' variable.
12054
12055         * driver.c
12056         (mono_main): Check mono_debug_using_mono_debugger() rather than
12057         the `MONO_INSIDE_MDB' environment variable to check whether we're
12058         inside the debugger.
12059
12060 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12061
12062         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12063         argument.
12064
12065 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12066
12067         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12068
12069         * mini.c: Added mini_assembly_can_skip_verification. This
12070         function checks if the assembly requested to skip verification. 
12071         Fixes part of #387274.
12072
12073 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12074
12075         * mini.c (mini_get_method): Disable the check for open generic classes when
12076         using generic sharing.
12077
12078         * generics.cs: Add a test for #387034.
12079
12080         * mini.c (mini_get_method): Check whenever the method class is an open generic
12081         type, and return NULL in that case, causing a verification error. Fixes
12082         #384123.
12083
12084 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12085
12086         * driver.c (mono_main): Revert r102623. The right
12087         thing to do is to enable the verifier under verifiable
12088         unless a --security flag was passed.
12089
12090         We need this non-trivial behavior for --verify-all otherwise
12091         mcs-compileall won't be able to use it. As it needs everything to
12092         be verified under validil.
12093
12094 2008-05-06  Martin Baulig  <martin@ximian.com>
12095
12096         Fix #383749.
12097
12098         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12099         (mono_debugger_thread_cleanup): Likewise.
12100         (mono_debugger_extended_notification): Likewise.
12101
12102 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12103
12104         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12105         against both inflated and non-inflated methods. We need to check against the
12106         generic definition for cases where the instantiated method is not visible.
12107         We need to check against the inflated types for cases where the instantiation
12108         changes any super type. This fixes #382986.
12109
12110         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12111         that check for visibiliy as generic params only appears as the type subject
12112         of tokens on call opcodes. Field manipulation and ldftn must always
12113         target an exact type.
12114
12115 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12116
12117         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12118         if no related --security flag is passed.
12119
12120 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12121
12122         * mini-arch.h: Prepare support for ppc64.
12123
12124         Contributed under MIT/X11 license.
12125
12126 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12127
12128         * aot-runtime.c: Prepare support for ppc64.
12129
12130         Contributed under MIT/X11 license.
12131
12132 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12133
12134         * mini-ops.h: Prepare support for ppc64.
12135
12136         Contributed under MIT/X11 license.
12137
12138 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12139
12140         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12141
12142         Contributed under MIT/X11 license.
12143
12144 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12145
12146         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12147         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12148         assemblies on windows.
12149
12150 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12151
12152         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12153         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12154         * main.c: Use UTF-8 encoded command line instead of Windows default code
12155         page on Windows to support Unicode.
12156         * driver.c (DllMain): New function for mixed-mode assembly support.
12157         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12158         export __stdcall functions without decoration.
12159
12160         Contributed under MIT/X11 license.
12161
12162 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12163
12164         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12165         saving it very early.
12166
12167 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12168
12169         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12170         deleted.  The only way to access the new RGCTX is via the
12171         trampline.
12172
12173         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12174         vtable instead of the RGCTX to static methods.
12175
12176         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12177         accessing the new RGCTX.
12178
12179         * generic-sharing.c: There is no separation between self, type
12180         arguments and other types in the RGCTX anymore.
12181
12182 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12183
12184         * mini-amd64.c (add_general): Remove previous stack adjustment.
12185         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12186         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12187         for 32 bytes of stack space reserved for all calls.
12188         
12189         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12190         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12191         adjustment.
12192         
12193         Code contributed under MIT/X11 license.
12194
12195 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12196
12197         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12198         against the root definition, peeling out method and type instantiations.
12199         Cache verify success results, code that fails verification is still
12200         checked multiple times.
12201
12202 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12203
12204         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12205
12206 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12207
12208         * mini-amd64.c (add_general): Always increment stack on Win64.
12209         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12210         on Win64.
12211         
12212         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12213         stack based argument handling on Win64.
12214         
12215         Code contributed under MIT/X11 license.
12216
12217 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12218
12219         * Makefile.am (version.h): Add support for git-svn.
12220
12221 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12222
12223         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12224         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12225         avoiding allocations and libc functions which might deadlock.
12226         
12227         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12228         'no-gdb-backtrace' option is set.
12229
12230         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12231
12232         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12233
12234 2008-04-21  Martin Baulig  <martin@ximian.com>
12235
12236         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12237         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12238
12239 2008-04-21  Martin Baulig  <martin@ximian.com>
12240
12241         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12242         `thread_vtable', `event_handler_ptr' and `event_handler'.
12243
12244 2008-04-21  Martin Baulig  <martin@ximian.com>
12245
12246         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12247         allows delayed initialization of the `executable_code_buffer' when
12248         attaching.
12249
12250 2008-04-21  Martin Baulig  <martin@ximian.com>
12251
12252         * mini.h (mono_debugger_create_notification_function): Removed.
12253         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12254
12255         * mdb-debug-info64.s
12256         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12257
12258         * mdb-debug-info32.s
12259         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12260
12261         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12262         currently only works on x86 and x86_64, so don't create it on ppc.
12263
12264 2008-04-21  Martin Baulig  <martin@ximian.com>
12265
12266         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12267
12268         * mini.c
12269         (mini_method_compile): In the fp elimination check, check
12270         `debug_options.mdb_optimizations' in addition to
12271         mono_debug_using_mono_debugger().       
12272
12273         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12274         disable some JIT optimizations which are only disabled when
12275         running inside the debugger.
12276         Added `--help-debug' option to describe the debugging options.
12277         (parse_debug_options): New static function to parse the `--debug'
12278         options, so we can easily add more stuff in future.
12279
12280 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12281
12282         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12283         the method has no body.
12284
12285 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12286
12287         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12288         assembly is not allowed in MSVC 64-bit compiler. 
12289         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12290         as we get floating point exceptions everywhere.
12291         
12292         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12293         correctly align arguments for call to throw_exception.
12294         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12295         
12296         Code contributed under MIT/X11 license.
12297
12298 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12299
12300         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12301
12302 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12303
12304         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12305
12306         * mini-amd64.c (NEW_INS): Set cil_code.
12307
12308         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12309         from mini-amd64.c so all debugger related logic is in one place.
12310
12311         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12312         later won't have a random ip assigned to them.
12313
12314 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12315
12316         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12317         the arch specific function initializes code_size.
12318         (mono_create_delegate_trampoline): Ditto.
12319
12320         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12321         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12322         platforms.
12323
12324         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12325         running under the debugger.
12326
12327         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12328         debugger.
12329
12330         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12331         debugger. Also move the disabling of optimizations here from driver.c.
12332         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12333         debugger.
12334
12335         * mini.h (MonoCompile): Add a few new flags.
12336
12337 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12338
12339         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12340         so the cil_code field of created MonoInst's is properly set.
12341         (mini_select_instructions): Ditto.
12342
12343         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12344         (MONO_INST_NEW_CALL): Ditto.
12345
12346         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12347         in many places so the ins->cil_code field is properly initialized.
12348
12349         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12350         place.
12351
12352 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12353
12354         * mini.c (mini_method_compile): Print a different message when compiling a 
12355         shared method.
12356         
12357         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12358         > 1.
12359
12360 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12361
12362         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12363         SSE2 instructions.
12364
12365         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12366         
12367 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12368
12369         * mini.c (handle_stack_args): Make this return void since its return value was
12370         never used. Also set cfg->unverifiable for invalid IL instead of calling
12371         G_BREAKPOINT ().
12372
12373 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12374
12375         * mini.c: Make sure "this" is live in catch clauses with type
12376         variables in shared generic code.
12377
12378 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12379
12380         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12381         generic_class_is_reference_type() to ensure the proper behaviour
12382         when sharing generic code and the type in question is a type
12383         argument.
12384
12385 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12386
12387         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12388         race conditions when printing thread dumps. Fixes #377738.
12389
12390 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12391         
12392         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12393         shows up when both MonoInst arguments can cause aliasig.
12394         There is likely no way in the current JIT to trigger this problem, but
12395         it showed up in the development of generics sharing, when in a new
12396         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12397         When the generics sharing code will be committed, its tests will be
12398         valid also for this bug.
12399
12400 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12401
12402         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12403         PATCH_INFO_METHOD.
12404
12405         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12406         NULL.
12407
12408 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12409
12410         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12411         use a more detailed exception message for InvalidCastException.
12412
12413         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12414
12415         * driver.c (mono_main): Add --debug=casts option to turn on better 
12416         InvalidCastException message details.
12417
12418         * mini.c (mini_get_debug_options): New helper function to return the address of
12419         the debug_options variable.
12420
12421         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12422         the jit_tls TLS variable.
12423
12424         * mini.c (mono_jit_tls): New TLS variable.
12425
12426         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12427         option is used.
12428
12429 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12430
12431         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12432
12433         * mini.c: Removed verifer related stuff, code moved to verify.c.
12434
12435         * driver.c: Using code from verify.c instead of mini.c.
12436
12437 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12440         longer valid.
12441
12442 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12443
12444         * mini.c (check_for_method_verify): Enabling verification of
12445         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12446         have been fixed.
12447
12448 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12449
12450         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12451         caller saved registers as well.
12452         
12453         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12454         saved registers as well.
12455
12456 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12457
12458         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12459
12460         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12461         code.
12462
12463 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12464
12465         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12466         to get_call_info.
12467         (get_call_info): Take a gsctx argument instead of 'cfg'.
12468
12469 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12470
12471         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12472         mono_verify_all is set.
12473
12474         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12475
12476         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12477
12478 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12481         an exception.
12482
12483         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12484         verifier and the code generated by the compiler.
12485
12486 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12487
12488         * mini.c: Generic sharing of the non-nullable case of the box
12489         instruction.
12490
12491 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12492
12493         * inssel.brg: Fix the build.
12494
12495         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12496
12497 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12498
12499         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12500         Array:Address. Fixes #372410.
12501
12502         * iltests.il.in: New tests for readonly prefix.
12503
12504 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12507         mini-trampolines.c.
12508
12509         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12510         mini-exceptions.c.
12511
12512         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12513         
12514         * mini.c (mono_decompose_op_imm): New helper function.
12515
12516         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12517         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12518         return value.
12519
12520         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12521         mono_arch_output_basic_block. Fix warnings.
12522
12523         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12524         for now.
12525
12526 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12527
12528         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12529         since the extra frame is now detected automatically inside the loop.
12530
12531         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12532         opts which are now in mono_peephole_ins ().
12533         
12534         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12535
12536         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12537         frames and skip duplicate managed-to-native frames. Fixes #367665.
12538
12539         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12540         opts which are now in mono_peephole_ins ().
12541         (mono_arch_peephole_pass_2): Ditto.
12542
12543         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12544
12545         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12546         arch independent peephole optimizations.
12547
12548         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12549         opts which are now in mono_peephole_ins ().
12550
12551         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12552         
12553         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12554
12555         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12556         pattern.
12557
12558         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12559         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12560         opcode. 
12561
12562 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12563
12564         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12565         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12566         return value.
12567
12568         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12569         mono_arch_output_basic_block. Fix warnings.
12570
12571 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12572
12573         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12574         conv.ovf.u.un.
12575
12576 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12579         conv.ovf.u.un.
12580
12581         * iltests.il: Add new tests.
12582
12583 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12584
12585         * mini.c: Removed Windows version macros.
12586
12587 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12588
12589         * generic-sharing.c: Put reflection types in the extensible part
12590         of the runtime generic context.
12591
12592         * mini.c: Generic sharing of the GetTypeHandle special case of the
12593         ldtoken instruction.
12594
12595 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12596
12597         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12598
12599         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12600         
12601         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12602         consistency with the other version on the linear IR branch.
12603
12604         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12605
12606         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12607
12608         * iltests.il.in: Add new tests.
12609
12610 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12613
12614         * iltests.il.in: Add new tests.
12615
12616 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12617
12618         * mini.c: Two variables with the same name were declared in
12619         nesting contexts and one wasn't initialized.  Fixed.
12620
12621 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12622
12623         * mini.c: Generic sharing of the initobj instruction.
12624
12625 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12626
12627         * mini.c: make the test to optimize ldtoken from typeof() more
12628         precise.
12629
12630 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12631
12632         * mini.c: Generic sharing of the initobj instruction for reference
12633         types.
12634
12635 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12636
12637         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12638         the mono_breakpoint_clean_code() code to perform bound checks.
12639
12640 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12641
12642         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12643         mono_arch_patch_callsite() to include the start of the managed method
12644         to be able to perform bound checks.
12645
12646 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12647
12648         * mini.c: Generic sharing for the isinst instruction.
12649
12650 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12651
12652         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12653         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12654         with the runtime generic context argument.
12655
12656         * mini.c: Share calls to several types of unsharable methods by
12657         putting the address of the method code in the runtime generic
12658         context and doing an indirect call.
12659
12660         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12661         to switches.
12662
12663 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12664
12665         * generic-sharing.c: Change due to a change in the runtime genric
12666         context API.
12667
12668 2008-03-15  Martin Baulig  <martin@ximian.com>
12669
12670         * tramp-x86.c
12671         (mono_arch_nullify_class_init_trampoline): Add call to
12672         mono_breakpoint_clean_code() to make things work when running
12673         inside the debugger.
12674
12675         * tramp-amd64.c
12676         (mono_arch_nullify_class_init_trampoline): Add call to
12677         mono_breakpoint_clean_code() to make things work when running
12678         inside the debugger.
12679
12680 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12681
12682         * inssel-long.brg (reg): Fix 64 bit build.
12683
12684 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12685
12686         * mini.c, mini.h: Share static generic code by passing it an
12687         implicit argument pointing to the runtime generic context.
12688
12689         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12690         inssel-long32-mips.brg: New opcodes for calling shared static,
12691         which need to be passed the runtime generic context.
12692
12693         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12694         argument on the stack in the prologue if needed.  New function for
12695         finding the runtime generic context argument from the registers
12696         saved by the trampoline.
12697
12698         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12699         runtime generic context argument.
12700
12701         * tramp-amd64.c: Also restore the register used for the runtime
12702         generic context argument.
12703
12704         * mini-trampoline.c: Resolve shared static calls by consulting the
12705         runtime generic context via the new argument.
12706
12707         * generic-sharing.c: Add an argument to sharability-checking
12708         functions that specifies whether type variables should be treated
12709         as sharable type arguments.
12710
12711         * inssel-x86.brg: Removed a superfluous, buggy rule.
12712
12713         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12714         to switches.
12715
12716 2008-03-14  Martin Baulig  <martin@ximian.com>
12717
12718         * debug-debugger.c (main_thread_handler): Call
12719         mono_runtime_run_main() without sending any notifications.
12720
12721         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12722
12723 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12724
12725         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12726
12727 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12728
12729         * tramp-x86.c: Fixed register restore offsets in the trampoline
12730         code for ECX and EDX.
12731
12732 2008-03-12  Geoff Norton  <gnorton@novell.com>
12733
12734         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12735         different ucontext_t implementations.
12736         * exceptions-arm.c: Use the above defines to get exceptions working on 
12737         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12738         * mini-arm.c: Implement iPhone icache support (based on a patch by
12739         Luke Howard lukeh@padl.com)
12740
12741 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12742
12743         * mini.c: Enable generic sharing of calls to non-static
12744         non-interface non-generic non-value-type methods.
12745
12746         * mini-trampolines.c: Resolve calls from shared generic code.
12747
12748 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12749
12750         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12751
12752         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12753
12754 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12755
12756         * mini.c: some fixes for the AOT compiler.
12757
12758 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12759
12760         * cpu-amd64.md: Add clob:1 to some float opcodes.
12761
12762 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12763
12764         * mini.h: Added MiniVerifierMode enumeration.
12765
12766         * mini.c: Added mini_verifier_set_mode to control
12767         the usage of the new verifier.
12768
12769         * mini.c (mono_method): Integrated the new verifier.
12770
12771         * driver.c: Extended --security option with validil and
12772         verifiable options to activate the new verifier.
12773
12774 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12775
12776         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12777         optimization to ctors taking 0 or 2 arguments too.
12778
12779         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12780         a bit.
12781
12782         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12783
12784         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12785
12786 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12789         non-aot case as well.
12790
12791         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12792
12793         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12794         changes.
12795
12796         * aot-compiler.c (encode_patch): Ditto.
12797
12798         * mini.h (G_MININT32): Fix the definition of this.
12799
12800 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12801
12802         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12803
12804         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12805
12806 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12807
12808         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12809         methods returning vtypes in registers.
12810         (mono_arch_allocate_vars): Ditto.
12811
12812         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12813
12814         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12815
12816         * generics.cs: Add a test from the linear IR branch.
12817
12818         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12819
12820         * mini.c (inline_method): Cache failed inline attempts.
12821
12822 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12823
12824         * mini.c: For shared methods of generic classes put the location
12825         of "this" into the MonoGenericJitInfo.
12826
12827         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12828         register out of a MonoContext by register number.  Add the generic
12829         sharing context as an argument to mono_arch_find_this_argument().
12830
12831         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12832         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12833         for new arch function.
12834
12835         * mini-exception.c: Handle open exception clauses in shared
12836         generic code.
12837
12838         * mini-trampolines.c: Supply additional argument to
12839         mono_arch_find_this_argument().
12840
12841 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * Makefile.am (regtests): Run the bench.exe tests last.
12844
12845 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12846
12847         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12848         a bit.
12849
12850 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12851
12852         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12853         with MS.
12854
12855         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12856         
12857         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12858
12859         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12860         whose class has no cctor.
12861
12862         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12863
12864 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12865
12866         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12867         unverified.
12868
12869 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12870
12871         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12872         to be in sync with the code on the linear IR branch.
12873
12874         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12875
12876         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12877
12878 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12879
12880         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12881
12882         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12883
12884         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12885
12886         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12887
12888         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12889         
12890         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12891         body.
12892
12893 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12894
12895         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12896         OP_LOADR4_MEMBASE emission.
12897
12898         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12899         (mono_spillvar_offset_float): Ditto.
12900
12901         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12902
12903         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12904         emission.
12905
12906         * basic-long.cs: Add regression tests for them.
12907
12908         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12909         use.
12910         (mono_arch_allocate_vars): Fix representation of single-precision float
12911         argument.
12912         (mono_arch_output_basic_block): Ditto.
12913
12914         * inssel-mips.brg: Ditto, remove duplicate items.
12915
12916         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12917         arguments of tail calls as on other platforms.
12918         (mono_arch_output_basic_block): Handle tail calls.
12919
12920         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12921         register.
12922
12923         * objects.cs (test_5_pass_static_struct): Add test for it.
12924
12925         Contributed under MIT/X11 license.
12926
12927 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * Makefile.am: Use gmcs for compiling the regression tests.
12930
12931         * *.2.cs *.2.il: Rename to *.cs and *.il.
12932
12933 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12934
12935         * regalloc.h: Make the vassign array smaller.
12936
12937         * mini.c (mini_method_compile): Remove an unused field in cfg.
12938
12939         * mini-codegen.c: Add a bunch of micro optimizations.
12940
12941 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12942
12943         * regalloc.h: Remove some unused fields.
12944
12945 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12946
12947         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12948
12949         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12950
12951 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12952
12953         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12954
12955         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12956         trampoline: Fetch an entry from the runtime generic context.  If
12957         it's NULL, jump to the actual trampoline to fill the runtime
12958         generic context.  Otherwise, return it.
12959
12960         * mini.c: Call the lazy fetch trampoline to get entries out of the
12961         runtime generic context.
12962
12963         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12964         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12965         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12966
12967 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12968
12969         * mini.c: Fetch data out of the extensible part of the runtime
12970         generic context instead of calling a helper function.
12971
12972         * generic-sharing.c: Some functions moved into
12973         metadata/generic-sharing.c.  Helper function for fetching other
12974         types now checks and asserts against extensible rgctx (just for
12975         debugging purposes - the helper function isn't called anymore
12976         unless for debugging).
12977
12978 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12979
12980         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12981         for tail calls up to the point that the tests in iltests.exe run. Also add a
12982         dummy CKFINITE implementation.
12983         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12984         needed for trampoline LMF frames.
12985
12986         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12987         trampoline LMF frames.
12988
12989 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12990
12991         * mini.c (inline_method): clean any pending loader error when inlining fail.
12992         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12993
12994 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12995
12996         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12997
12998         * aot-runtime.c (decode_patch_info): Ditto.
12999
13000         * mini.c (mono_resolve_patch_target): Ditto.
13001         
13002         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13003         icall wrappers.
13004
13005         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13006         
13007         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13008         if it references an icall address.
13009
13010 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13011
13012         * cpu-s390x.md: Remove some more unused opcodes.
13013         
13014         * cpu-s390x.md: Remove some unused opcodes.
13015
13016         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13017         mono_op_imm_to_op ().
13018
13019         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13020         instead of a switch statement.
13021         
13022         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13023         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13024
13025         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13026         
13027         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13028
13029         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13030         -1.
13031
13032 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13033
13034         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13035         opened. Fixes #362607.
13036
13037         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13038
13039         * iltests.il.in: Add a test for static methods in interfaces.
13040
13041 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13042
13043         * genmdesc.c (build_table): Fix a crash on older glib versions.
13044
13045         * cpu-sparc.md: Remove some unused opcodes.
13046         
13047         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13048         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13049
13050         * cpu-amd64.md: Remove some unused opcodes.
13051
13052         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13053         like the other opcodes.
13054
13055 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13056
13057         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13058
13059         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13060
13061         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13062         variables 'cfg' instead of 'm' for consistency.
13063
13064         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13065
13066         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13067         argument holding the vtype return address, to avoid the ambigious use of
13068         cfg->ret for this purpose.
13069
13070         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13071
13072         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13073         
13074         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13075         new mono_print_ins () function which only takes one argument.
13076
13077 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13078
13079         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13080         macro arguments.
13081
13082 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13083
13084         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13085
13086         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13087
13088         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13089         opcodes and other small changes.
13090
13091         * mini-ops.h: Add some new opcodes from the linear IR branch.
13092
13093         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13094
13095         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13096         opcodes, use the REG_MEMBASE opcodes instead.
13097         
13098         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13099         opcodes, use the REG_MEMBASE opcodes instead.
13100         
13101         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13102         linear IR branch.
13103
13104         * mini.c (mono_op_imm_to_op): New helper function.
13105
13106         * mini-ops.h: Add some opcodes from linear IR branch.
13107
13108 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13109
13110         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13111         <tsv@solvo.ru>.
13112
13113 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13114
13115         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13116         OP_ICONV_TO_R4/R8.
13117
13118         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13119
13120 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13121
13122         * aot-compiler.c (emit_method_code): Add an assert.
13123
13124         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13125         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13126         methods.
13127
13128 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13131         some load/store opcodes so they are consistent. 
13132         (mono_arch_emit_prolog): Simplify some code.
13133
13134         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13135
13136         * objects.cs: Add tests for large argument offsets on ARM.
13137
13138         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13139         stack offsets. Fixes #359651.
13140
13141         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13142
13143         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13144
13145         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13146
13147         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13148
13149         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13150
13151         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13152         rid of CEE_CONV_R_UN.
13153
13154         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13155
13156 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13157
13158         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13159
13160         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13161
13162         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13163
13164         * cpu-amd64.md: Remove some unused opcodes.
13165
13166         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13167
13168         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13169
13170         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13171         arch specific functions for its parts. Call the peephole pass after local
13172         regalloc so the prolog can compute a more accurate max_offset.
13173         
13174         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13175         the corresponding OP_I/OP_L opcodes.
13176
13177         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13178
13179         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13180
13181 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13182
13183         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13184         as they are handled in mini.c.
13185
13186         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13187         
13188         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13189         case since it is handled in mini.c.
13190
13191         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13192
13193         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13194
13195         * *.c: Use the new opcodes in the IR and back end code.
13196
13197         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13198
13199         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13200
13201 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13202
13203         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13204         an assert because it has a race condition.
13205
13206 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13207
13208         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13209
13210         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13211
13212         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13213
13214         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13215         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13216
13217 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13218
13219         * cpu-amd64.md (move): Correct the maximum size of move.
13220
13221 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13222
13223         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13224         the generic class init trampoline to return quickly if the class
13225         is already inited.
13226
13227 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13228
13229         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13230         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13231
13232 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13233
13234         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13235         branch.
13236
13237 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13238
13239         * objects.cs: Add some soft-float tests.
13240
13241         * mini.c: Fix a couple more soft-float issues.
13242
13243         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13244
13245         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13246         avoid a REX prefix.
13247
13248 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13249
13250         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13251         exception happens while compiling a virtual method.
13252
13253 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13254
13255         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13256         
13257         * mini-sparc.c: Fix build.
13258
13259         * mini-sparc.c (get_call_info): Add support for generic sharing.
13260
13261         * mini-exceptions.c: Add a FIXME.
13262
13263 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13264
13265         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13266         altstack handling code.
13267
13268         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13269         
13270         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13271
13272         * mini-s390.c: Add support for generic sharing.
13273
13274         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13275         Fix CAS on s390.
13276         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13277
13278         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13279
13280         * mini-s390x.c: Add support for generic sharing.
13281         
13282         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13283         Fix CAS on ia64.
13284         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13285
13286         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13287         can be used since it takes a 16 bit signed immediate.
13288
13289         * inssel-s390x.brg: Fix OP_SETRET.
13290
13291         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13292
13293         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13294
13295         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13296
13297         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13298
13299         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13300         in one place.
13301
13302         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13303         stuff.
13304
13305         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13306         of the unused mono_arch_patch_delegate_trampoline stuff.
13307
13308 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13309
13310         * basic-long.cs: Move the fp related tests to basic-float.cs.
13311
13312         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13313
13314         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13315
13316         * basic-calls.cs: Add a test for proper float argument passing.
13317
13318         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13319         if the context corresponds to an exception received through a signal.
13320
13321         * exceptions.cs: Add a test for nullref handling at the start of a try
13322         clause.
13323
13324         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13325
13326         * jit-icalls.c (mono_break): New JIT icall.
13327
13328         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13329
13330         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13331
13332 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13333
13334         * cpu-*.md: Get rid of unused opcodes.
13335
13336         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13337
13338         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13339         by all platforms.
13340
13341         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13342         define.
13343
13344         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13345         the arch independent trampoline code in mini-trampolines.c.
13346
13347         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13348
13349         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13350
13351         * mini-s390.h: Remove an unused define.
13352         
13353         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13354         the arch independent trampoline code in mini-trampolines.c.
13355
13356         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13357
13358 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13359
13360         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13361
13362         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13363
13364         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13365
13366         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13367
13368         * cpu-amd64.md: Use smaller sizes for int opcodes.
13369
13370         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13371
13372         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13373         objects.cs.
13374
13375         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13376         debugging.
13377
13378         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13379         instead of though a pointer to save an indirection when accessing elements of
13380         the array.
13381
13382         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13383         some typos.
13384         (NOT_IMPLEMENTED): New helper macro.
13385         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13386         of a bb.
13387
13388         * *.c: Use the new helper macro.
13389
13390 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13391
13392         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13393
13394 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13395
13396         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13397         stack slots.
13398
13399 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13400
13401         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13402         profiling is enabled.
13403         
13404         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13405         the end.
13406         (mono_arch_emit_prolog): Add more first bblock optimizations.
13407
13408         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13409         in order if possible.
13410         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13411         bblock, since the arguments are still in their original registers.
13412
13413         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13414
13415 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13416
13417         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13418         as well.
13419
13420         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13421         offset 0.
13422
13423         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13424
13425         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13426         process async exceptions received while in unmanaged code.
13427
13428         * mini.c (mini_init): Install a callback with the runtime which will be called
13429         when a thread receives an async exception while in unmanaged code.
13430
13431         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13432
13433         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13434
13435 2008-01-16  Wade Berrier  <wberrier@novell.com>
13436
13437         * cpu-g4.md:
13438         * cpu-arm.md:
13439         * cpu-s390x.md:
13440         fix build
13441
13442 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13445         compilation with sun cc.
13446
13447         * cpu-*.md: Fix the build.
13448
13449         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13450
13451         * mini-amd64.h: Add some comments to the MonoLMF structure.
13452
13453         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13454         
13455         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13456         in the LMF structure if possible. This saves two instructions in the
13457         managed->native wrappers.
13458
13459         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13460
13461 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13462
13463         * generic-sharing.c: New type argument lookup code which uses the
13464         runtime generic context template.
13465
13466 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13467
13468         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13469
13470         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13471         (mono_arch_output_basic_block): Fix localloc implementation.
13472
13473         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13474
13475         * mini-ia64.c (peephole_pass): Fix ia64 build.
13476
13477         * mini-amd64.c (peephole_pass): Fix a warning.
13478         
13479         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13480         at a constant offset from sp/fp.
13481
13482         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13483         instead of obtaining it from *lmf in the managed method case.
13484
13485 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13486
13487         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13488
13489 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13490
13491         * mini.h (MonoInstList): New type.
13492         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13493         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13494         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13495         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13496         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13497         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13498         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13499         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13500         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13501         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13502         MONO_INST_LIST_FOR_EACH_ENTRY,
13503         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13504         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13505         mono_inst_list_first, mono_inst_list_last,
13506         mono_inst_list_next, mono_inst_list_prev): New instruction
13507         list handling interfaces.
13508         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13509         list head 'ins_list'.
13510         (MonoInst): Replace next pointer with list head 'node'.
13511         (MonoCallInst): Make 'out_args' a MonoInstList.
13512         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13513         (MonoCompile): Delete reverse_inst_list and
13514         reverse_inst_list_len.
13515         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13516         mono_arch_lowering_pass, mono_arch_local_regalloc,
13517         mono_arch_output_basic_block, mono_arch_emit_prolog):
13518         Convert to new instruction lists.
13519         (insert_after_ins): Delete.
13520         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13521         instruction lists.
13522         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13523         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13524         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13525         mono_emulate_opcode, mono_emit_load_got_addr,
13526         inline_method, mono_method_to_ir, mono_print_bb_code,
13527         print_dfn, decompose_pass, nullify_basic_block,
13528         replace_out_block_in_code, remove_block_if_useless,
13529         merge_basic_blocks, move_basic_block_to_end,
13530         try_unsigned_compare, optimize_branches, mono_print_code,
13531         mini_select_instructions, remove_critical_edges): Likewise.
13532         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13533         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13534         mono_arch_output_basic_block, mono_arch_emit_prolog):
13535         Likewise.
13536         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13537         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13538         mono_arch_output_basic_block): Likewise.
13539         (inst_list_prepend, insert_after_ins): Delete.
13540         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13541         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13542         instruction lists.
13543         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13544         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13545         mono_arch_emit_prolog): Likewise.
13546         * cfold.c (mono_constant_fold): Likewise.
13547         * liveness.c (visit_bb, mono_analyze_liveness,
13548         optimize_initlocals): Likewise.
13549         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13550         * graph.c (mono_draw_code_cfg): Likewise.
13551         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13552         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13553         mono_ssa_cprop): Likewise.
13554         * abcremoval (get_relations_from_previous_bb, process_block):
13555         Likewise.
13556         * local-propagation (mono_cprop_invalidate_values,
13557         mono_local_cprop_bb): Likewise.
13558         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13559         peephole_pass, mono_arch_output_basic_block,
13560         mono_arch_emit_prolog): Likewise.
13561         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13562         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13563         mono_arch_emit_prolog): Likewise.
13564         (insert_after_ins): Delete.
13565         * aliasing.c (print_code_with_aliasing_information,
13566         mono_build_aliasing_information, mono_aliasing_deadce):
13567         Convert to new instruction lists.
13568         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13569         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13570         mono_arch_local_regalloc, mono_arch_output_basic_block):
13571         Likewise.
13572         (insert_after_ins): Delete.
13573         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13574         peephole_pass, mono_arch_output_basic_block): Convert to
13575         new instruction lists.
13576         * mini-codegen (InstList, inst_list_prepend,
13577         insert_after_ins): Delete.
13578         (insert_before_ins, get_register_force_spilling,
13579         get_register_spilling, free_up_ireg, free_up_reg,
13580         create_copy_ins, create_spilled_store, alloc_int_reg,
13581         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13582         to new instruction lists.
13583         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13584         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13585         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13586         (insert_after_ins): Delete.
13587         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13588         mono_arch_local_regalloc, mono_arch_output_basic_block,
13589         mono_arch_call_opcode): Convert to new instruction lists.
13590         (insert_after_ins): Delete.
13591         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13592         peephole_pass, mono_arch_output_basic_block,
13593         mono_arch_emit_prolog): Convert to new instruction lists.
13594
13595 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13596
13597         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13598
13599         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13600         Fixes #353182.
13601
13602         * Makefile.am (version.h): Make this work with non-bash shells.
13603
13604 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13605
13606         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13607
13608 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13609
13610         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13611         the InitializeArray optimization.
13612
13613 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13614
13615         * mini.c driver.c: Don't include os/gc_wrapper.h.
13616
13617 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13618
13619         * mini.c (print_jit_stats): Print GC statistics if available.
13620
13621 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13624
13625 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13626
13627         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13628
13629 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13630
13631         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13632         
13633         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13634
13635         * driver.c (mono_main): Ditto.
13636
13637 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13638
13639         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13640
13641         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13642         in the vtable can't be encoded.
13643         (compile_method): Ditto.
13644
13645 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13646
13647         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13648         defined.
13649
13650         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13651         lmf->rbp.
13652
13653         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13654         the top LMF entry belongs to the current method.
13655
13656         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13657
13658 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13659
13660         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13661         
13662         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13663
13664         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13665
13666         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13667
13668         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13669
13670         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13671         implementation.
13672
13673         * basic-float.cs: Add an ulong->double cast test.
13674
13675 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13676
13677         * mini.c (mono_method_to_ir): Fix a warning.
13678
13679 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13680
13681         * mini-ops.h: Add OP_SWITCH.
13682
13683         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13684         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13685
13686 2007-12-11  Geoff Norton  <gnorton@novell.com>
13687
13688         * mini-s390x.c: Minor change to the MAX() define to allow
13689         it to compile with other gcc versions.
13690
13691 2007-12-11  Geoff Norton  <gnorton@novell.com>
13692
13693         * cpu-s390x.md:
13694         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13695
13696 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13697
13698         exceptions-arm.c (mono_arch_get_restore_context): Restore
13699         the frame pointer.
13700
13701         exceptions-arm.c (throw_exception): Save the frame pointer.
13702         This is a partial fix for #323747. Only the client side is
13703         fixed.
13704
13705 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13706
13707         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13708         was using an unrelated variable to log the class which
13709         needed the cctor to be called. This was crashing on arm.
13710
13711 2007-12-09  Robert Jordan  <robertj@gmx.net>
13712
13713         * mini-x86.c (mono_arch_emit_epilog):
13714         Consider all kinds of 64-bit types. Fixes #323114.
13715
13716 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13717
13718         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13719
13720 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13721
13722         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13723
13724 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13725
13726         * mini.c: run type ctor before allocating an object, not only
13727         when running it's constructor method (fixes at least part of bug #342507).
13728
13729 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13730         
13731         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13732         
13733         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13734         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13735         function.
13736
13737         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13738         mono_generic_class_init_trampoline () the same as it is done with the other
13739         trampolines.
13740
13741         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13742         aot-runtime.c aot-compiler.c: Implement AOT support.    
13743
13744 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13745
13746         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13747         build for archs which don't have the vtable trampoline defined
13748         yet.
13749
13750 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13751
13752         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13753
13754         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13755
13756         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13757
13758         * tramp-<ARCH>.c: Use the new helper function.
13759
13760 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13761
13762         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13763         trampoline call, which takes a vtable argument.
13764
13765         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13766         OP_TRAMPCALL_VTABLEs like other calls.
13767
13768         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13769         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13770         call.  Implemented a support function which fetches the vtable
13771         from a register set.
13772
13773         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13774         Implemented a generic class init trampoline, using the
13775         OP_TRAMPCALL_VTABLE opcode.
13776
13777         * mini.c: Implemented static field access when sharing generic
13778         code.  This implies initing the class using the new
13779         OP_TRAMPCALL_VTABLE call.
13780
13781 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13782
13783         * mini.c: Don't compile methods with sharing enabled if their
13784         classes are disabled for sharing.
13785
13786 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13787
13788         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13789         opcodes. Fixes #346563.
13790
13791         * objects.cs: Add a new test.
13792
13793         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13794
13795         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13796         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13797
13798 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13799
13800         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13801
13802 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13803
13804         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13805         code stream.
13806
13807 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13808
13809         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13810
13811         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13812         optimization in the AOT case.
13813         
13814 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13815
13816         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13817         
13818         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13819
13820         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13821
13822         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13823
13824         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13825         is created by the inlined delegate ctor.
13826
13827         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13828
13829         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13830
13831 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * cpu-x86.md: Fix the length of ckfinite.
13834
13835 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13838         
13839         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13840         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13841
13842         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13843
13844         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13845         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13846
13847 2007-11-28  Martin Baulig  <martin@ximian.com>
13848
13849         * mini-x86.c
13850         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13851         after creating the trampoline.
13852
13853 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13854
13855         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13856
13857         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13858         the same version.
13859
13860         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13861         instead of the calling method to help AOT.
13862
13863         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13864
13865 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13866
13867         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13868         is defined.
13869
13870 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13871
13872         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13873         
13874         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13875         (encode_method_ref): No need to handle generic method definitions specially.
13876
13877         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13878
13879         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13880         decode_klass_info.
13881
13882         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13883         encode_klass_info.
13884         (compile_method): Enable generic sharing.
13885
13886 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13887
13888         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13889         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13890
13891         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13892         generic code.
13893
13894         * mini-trampolines.c: Fix a warning.
13895
13896         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13897         NEW_PCONST.
13898         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13899         (generic_class_is_reference_type): Remove unused function.
13900
13901         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13902         in the generic vtable trampoline case.
13903
13904         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13905         
13906         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13907         return an AOT method based on a vtable slot.
13908
13909         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13910
13911         * mini.c (mini_get_vtable_trampoline): Export this.
13912
13913 2007-11-22  Martin Baulig  <martin@ximian.com>
13914
13915         * debug-debugger.h
13916         (MonoDebuggerInfo): Move `debugger_version' up.
13917
13918 2007-11-22  Martin Baulig  <martin@ximian.com>
13919
13920         * mini-amd64.c
13921         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13922
13923         * mini-trampolines.c
13924         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13925         after compiling the method.
13926
13927 2007-11-20  Martin Baulig  <martin@ximian.com>
13928
13929         * debug-mini.c
13930         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13931         (mono_debugger_remove_breakpoint): Likewise.
13932         (mono_debugger_check_breakpoints): Likewise.
13933
13934         * debug-debugger.c: Implement the new breakpoint interface here.
13935
13936 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13939         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13940
13941         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13942
13943 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13944
13945         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13946
13947         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13948         mini.c.
13949
13950         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13951         mini.c.
13952
13953         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13954         returning a vtype in a register.
13955
13956         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13957         here from the arch specific code.
13958
13959         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13960         mini.c.
13961
13962         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13963         (mono_arch_emit_prolog): Increment maximum prolog size.
13964
13965         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13966         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13967
13968         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13969         MonoGenericSharingContext.
13970
13971         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13972         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13973
13974 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13975
13976         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13977         which extract fields out of the runtime generic context.  Full
13978         sharing of the NEWARR opcode.
13979
13980 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13981
13982         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13983         --enable-minimal=ssa.
13984
13985 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13986
13987         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13988         mono_marshal_get_delegate_invoke () signature change.
13989
13990 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13991
13992         * mini.c: Removed the shared context in favor of the generic
13993         sharing context.  Allocate the MonoJitInfo structure with room for
13994         the generic sharing context if it's needed.
13995
13996         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13997         domain-internals.h now.
13998
13999         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14000
14001         * generic-sharing.c: Several changes for working without a shared
14002         context and instead operating on open types instead.
14003
14004 2007-11-12  David S. Miller  <davem@davemloft.net>
14005
14006        * inssel-sparc.brg: Fix double instruction emit.
14007
14008 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14009
14010         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14011         Get/Set/Address methods.
14012         
14013         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14014         mono_marshal_get_delegate_invoke signature change.
14015
14016 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14017
14018         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14019         This can happens with dynamic methods. Fixes the other bug in #322722.
14020
14021 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14022
14023         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14024         BX call sequence.
14025
14026         * mini-arm.c (arm_patch): Implement patching of BX call
14027         sequence. Fixes one of the bugs in #322722.
14028
14029 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14030
14031        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14032        under Linux.  We only need to flush every 32-byte cache line.    
14033
14034 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14035
14036         * mini.c:
14037         move_basic_block_to_end: Add branches when needed, eventually creating
14038         a new BB.
14039         optimize_branches: added a parameter that tells if it's ok to create
14040         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14041         and avoid calling move_basic_block_to_end when it's not ok.
14042         Fixes bug 318677.
14043
14044 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14045
14046         * mini.c: Abort inlining call to InitializeArray if something
14047         looks wrong.  Let the icall handle it, which now has proper safety
14048         checks.
14049
14050 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14051
14052         * mini.c (mono_spill_call): add support for soft-float.
14053
14054         * mini.c (mono_method_to_ir): add support for soft-float
14055         to inlined functions that return float.
14056
14057         * mini.c (mono_method_to_ir): add support for soft-float
14058         to cee_stsfld opcode on float fields.
14059
14060 2007-11-05  Geoff Norton  <gnorton@novell.com>
14061
14062         * mini-x86.h: Fix the structure access for X86 Leopard.
14063
14064
14065 2007-11-05  Martin Baulig  <martin@ximian.com>
14066
14067         * mini-trampolines.c
14068         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14069         after compiling the method to notify the debugger.
14070
14071 2007-11-05  Martin Baulig  <martin@ximian.com>
14072
14073         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14074
14075 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14076
14077         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14078         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14079
14080 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14081
14082         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14083         native-to-managed wrappers.
14084         
14085 2007-11-01  Geoff Norton  <gnorton@novell.com>
14086
14087         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14088         members.
14089
14090 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14091
14092         * mini.c, mini-x86.c: when getting back from unmanaged code
14093         to managed via a marshaled delegate we also need to set the
14094         right domain.
14095
14096 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14097
14098         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14099         for amd64.
14100
14101 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14102
14103         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14104         let the debugger or other external agents to tell the JIT when
14105         a sw breakpoint has been inserted in the code that the JIT needs
14106         to be able to inspect.
14107
14108 2007-10-31  Martin Baulig  <martin@ximian.com>
14109
14110         * debug-debugger.h
14111         (MonoDebuggerInfo): Remove `runtime_class_init'.
14112
14113 2007-10-30  Martin Baulig  <martin@ximian.com>
14114
14115         * debug-mini.h
14116         (mono_debugger_thread_created): Added `MonoThread *' argument.
14117         (mono_debugger_extended_notification): New public method.
14118         (mono_debugger_trampoline_compiled): New public method.
14119
14120         * debug-mini.c
14121         (MonoDebuggerThreadInfo): Added `thread' and
14122         `extended_notifications' fields.
14123
14124         * debug-debugger.c
14125         (debugger_executable_code_buffer): New static variable.
14126
14127         * debug-debugger.h
14128         (MonoDebuggerInfo): Added `executable_code_buffer',
14129         `executable_code_buffer_size', `breakpoint_info_area',
14130         `breakpoint_table' and `breakpoint_table_size'.
14131
14132 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14133
14134         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14135         that IP  either is an unused value or the vtable pointer. IMT 
14136         calls use vtable + offset now. Reduced by almost half the size
14137         of IMT entries.
14138
14139 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14140
14141         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14142         defines to access param registers. Replace long usage with
14143         gsize as sizeof(long) != sizeof(void*) on Win64.
14144
14145         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14146         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14147         instead of non-existant _GetAddressOfReturnAddress.
14148
14149         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14150         param registers. Save/restore %rdi and %rsi in MonoLMF.
14151
14152         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14153         param registers. Modify (throw_exception) signature to take 
14154         %rdi and %rsi on Win64. 
14155
14156         Code is contributed under MIT/X11 license.
14157
14158 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14159
14160         * helpers.c: unlink debugging output files.
14161
14162 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14163
14164         * mini.c: Move mono_create_ftnptr () to object.c.
14165
14166 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14167
14168         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14169         optional. This function can now be used to disassemble code generated
14170         outside the JIT such as trampolines and IMT thunks.
14171
14172         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14173
14174         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14175         vtable pointer from a ldr instruction.
14176
14177         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14178         new IMT call sequence.
14179
14180         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14181         call sequence for interface invocations.
14182
14183         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14184         for imt support. This function is empty since IMT on ARM requires no
14185         special handling on the IR side.
14186
14187         * mini-arm.c (mono_arch_find_imt_method): added, required for
14188         imt support.
14189
14190         * mini-arm.c (mono_arch_find_this_argument): added, required
14191         for imt support.
14192
14193         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14194         a ldr instruction to load a value stored in the code stream.
14195
14196         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14197         for imt support.
14198
14199
14200 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14201
14202         * mini.c (mini_init): Install the jump trampoline callback.
14203
14204 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14205
14206         * mini-trampolines.c: handle synchronized methods with the common
14207         vtable trampoline (bug #335601).
14208
14209 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14210
14211         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14212
14213         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14214         64 bit platforms.
14215
14216         * mini-ia64.h mini-ia64.c: Add support for IMT.
14217
14218         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14219         prolog. Fixes #331958.
14220
14221 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14222
14223         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14224
14225 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14226
14227         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14228         trampoline.
14229
14230 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14231
14232         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14233         trampoline.
14234
14235 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14236
14237         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14238         trampoline.
14239
14240 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14241
14242         * mini-trampolines.c: changed the magic rampoline to understand
14243         the common vtable trampoline method: the method to invoke is
14244         determined by the vtable displacement of the call.
14245
14246 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14247
14248         * mini.c, mini.h: register the common vtable trampoline if the
14249         architecture supports it.
14250
14251 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14252
14253         * cpu-amd64.md: use the correct max length for tls_get.
14254
14255 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14256
14257         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14258         CEE_STELEM_ANY. Fixes #333696.
14259
14260 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14261
14262         * exceptions-x86.c: provide more graceful handling of the case where
14263         we followed a bogus function pointer from managed code (bug #332866).
14264
14265 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14266
14267         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14268         replaces the generic_shared flag and will carry more information
14269         in the future.
14270
14271         * generic-sharing.c: Added mini_type_stack_size() which allows
14272         allows open types if given a generic sharing context.
14273         mini_get_basic_type_from_generic() takes a
14274         MonoGenericSharingContext* instead of a MonoCompile* now.
14275
14276         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14277         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14278         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14279         changes above.  Just passing arguments through to the right
14280         places.
14281
14282 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14283
14284         * mini-arm.c: unify the call emission to emit_code_seq().
14285
14286 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14287
14288         * tramp-arm.c: reduced the trampoline size.
14289
14290 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14291
14292         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14293         variable handling out of arch-specific code.
14294
14295 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14296
14297         * mini-arm.c: implemented fast delegate dispatch.
14298
14299 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14300
14301         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14302         that fp elimination is turned off if the space required by locals is too
14303         big. Fixes #331958.
14304
14305 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14306
14307         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14308         ARM to the new style trampoline.
14309
14310 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14311
14312         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14313
14314         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14315
14316 2007-10-09  Martin Baulig  <martin@ximian.com>
14317
14318         * debug-debugger.h
14319         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14320         `field_info_offset_offset'.     
14321
14322 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14323
14324         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14325         removed more internal usage of the r11 register and made it available
14326         to the register allocator.
14327
14328 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14329
14330         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14331         when sharing generics and treat type variables as references.
14332
14333 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14334
14335         * mini-ppc.c: started removing the internal uses of register r11
14336         to eventually allow the register allocator to manage it as an
14337         additional available register.
14338
14339 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14340
14341         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14342
14343 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14344
14345         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14346         specific trampolines as they are not performance critical as a jump
14347         target (maybe align as before only for AOT code?). This saves about
14348         200 KB of native code on x86 for monodevelop startup.
14349
14350 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14351
14352         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14353         monodevelop startup.
14354
14355 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14356
14357         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14358
14359         * mini-sparc.h mini-sparc.c: Implement IMT support.
14360
14361         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14362         its smaller and doesn't clobber sparc_g1.
14363
14364         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14365
14366 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14367
14368         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14369
14370 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14371
14372         * mini-ppc.c: implemented fast delegate invocation.
14373
14374 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14375
14376         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14377
14378 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14379
14380         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14381         code to the new style trampoline in preparation for IMT support.
14382
14383 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14384
14385         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14386         systems already. This also reduces the specific trampiline sizes and
14387         prepares for the use of r12 as the IMT identifier register.
14388
14389 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14390
14391         * mini-mips.h: endianess fix (simplified from a patch by
14392         Thomas Kunze <thommy@tabao.de>, bug #323737).
14393
14394 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14395
14396         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14397         to access ucontext fields and enable netbsd support
14398         (partially from Magnus Henoch <mange@freemail.hu>).
14399
14400 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14401
14402         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14403         use the preprocessor from the CPP env var if it is set.
14404
14405 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14406
14407         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14408         code, before interface_offset gets used.
14409
14410 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14411
14412         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14413         mono_class_setup_vtable () before accessing klass->vtable.
14414
14415 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14416
14417         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14418         hackish.
14419
14420 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14421
14422         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14423         IMT slots (this saves hundreds of KB of memory in programs like
14424         IronPython and Monodevelop).
14425
14426 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14427
14428         * mini.c: print the delegate counter.
14429
14430 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14431
14432         * mini-x86.c: make it easier to enable the debugging code for IMT
14433         slots.
14434
14435 2007-09-28  Martin Baulig  <martin@ximian.com>
14436
14437         * debug-debugger.h
14438         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14439         `mono_method_klass_offset' and `mono_method_token_offset'.
14440
14441 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14442
14443         * mini.c: First generics sharing implementation.  Can only share
14444         in very simple cases.  If sharing doesn't work it falls back to
14445         dedicated compilation.
14446
14447         * mini.h: Flag in MonoCompile to specify whether generic
14448         compilation is shared.  Flags enum for marking which generic inst
14449         of a context is used.  Prototypes for helper functions.
14450
14451         * generic-sharing.c: Helper functions for generic method sharing.
14452
14453         * optflags-def.h: Optimization flag (gshared) for enabling generic
14454         method sharing added.
14455
14456         * Makefile.am: generic-sharing.c added.
14457
14458 2007-09-19 Daniel Nauck <dna@mono-project.de>
14459
14460         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14461
14462 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14463         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14464         fixes bug 325507.
14465
14466 2007-09-19  Martin Baulig  <martin@ximian.com>
14467
14468         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14469         mono_debug_cleanup() is now part of mono_cleanup().
14470
14471 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14472
14473         * driver.c (mono_main): Fix a warning.
14474
14475 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14476
14477         * aot-compiler.c: Optimize various parts when processing large assemblies.
14478         Fixes ##325568.
14479
14480         * mini.c (mono_patch_info_hash): Improve hash function.
14481
14482 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14483
14484         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14485         
14486         Code is contributed under MIT/X11 license.
14487
14488 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14489
14490         * mini.c (mini_init): Fix a leak.
14491
14492         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14493
14494 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14495
14496         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14497
14498 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14499
14500         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14501
14502 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14503
14504         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14505         variance tests.
14506
14507         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14508
14509         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14510
14511         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14512
14513         * aot-runtime.c (decode_patch_info): Ditto.
14514
14515 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14516
14517         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14518         static case. Cache delegates in architecture specific code, 
14519         based on number of parameters.
14520         
14521         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14522         in architecture specific code, based on number of parameters.
14523         
14524         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14525         caching happen in architecture specific code now.
14526         
14527         Code is contributed under MIT/X11 license.
14528
14529 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14530
14531         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14532         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14533         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14534
14535         Code is contributed under MIT/X11 license.
14536
14537 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14538         * mini.c: (mono_thread_abort) Fixed bug #82416.
14539
14540 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14541
14542         * mini.: hook the new managed GC allocation feature into the JIT.
14543
14544 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14545
14546         * mini.c: implementation for the new runtime tls opcode.
14547
14548 2007-09-11  Martin Baulig  <martin@ximian.com>
14549
14550         * debug-debugger.h
14551         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14552         `mono_method_inflated_offset'.
14553
14554 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14555
14556         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14557         async exceptions into a method.
14558
14559         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14560         purpose of testing whenever the unwinder works at every instruction.
14561
14562 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14563
14564         * mini.c: check accessibility of method used in ldftn (fixes
14565         bug #82635).
14566
14567 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14568
14569         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14570
14571         * inssel.brg: Fix a warning.
14572
14573 2007-09-03  Martin Baulig  <martin@ximian.com>
14574
14575         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14576         now takes the `main_method' as argument.
14577
14578 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14579
14580         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14581
14582 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14583
14584         * driver.c: include the cil-coff.h header on Windows.
14585         
14586         Code is contributed under MIT/X11 license.
14587
14588 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14589
14590         * mini.c, driver.c: don't include the cil-coff.h header.
14591
14592 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14593
14594         * mini.c: flag places that needs fixes fo soft-float support.
14595
14596 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14599         endian systems (partially from Dean Jenkins, bug #81924).
14600
14601 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14602
14603         * mini.c (check_linkdemand): Remove embedded reference object in
14604         call to LinkDemandSecurityException.
14605         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14606         with an IntPtr instead of a reference object.
14607
14608 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14609
14610         * mini.c (handle_initobj): Handle alignment properly.
14611
14612         * inssel.brg (mini_emit_memset): Ditto. 
14613
14614         * inssel.brg (mini_emit_memcpy): Ditto. 
14615
14616         * inssel-sparc.brg: Ditto.              
14617
14618         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14619
14620 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14621
14622         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14623         exceptions raised in unmanaged code. Fixes part of #82594.
14624
14625 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14626
14627         * mini.c (mono_method_to_ir), declsec.c
14628         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14629
14630 2007-08-22  Martin Baulig  <martin@ximian.com>
14631
14632         * debug-mini.h
14633         (MonoDebuggerThreadInfo): New typedef.
14634         (mono_debugger_thread_table): New global variable.
14635         (mono_debugger_thread_created): New public function.
14636         (mono_debugger_thread_cleanup): New public function.
14637
14638         * debug-debugger.h
14639         (MonoDebuggerInfo):
14640         - removed `get_current_thread' and `lookup_assembly'.
14641         - removed `data_table'.
14642         - added `thread_table'.
14643
14644         * mini.c
14645         (mono_thread_start_cb): Call mono_debugger_thread_created().
14646         (mono_thread_attach_cb): Likewise.
14647         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14648         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14649         initial domain.
14650
14651         * driver.c (mono_main): Move mono_debug_init() up, before calling
14652         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14653
14654 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14655
14656         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14657         together when passing several arguments of type double (gives a small
14658         speedup and saves a few bytes of generated code).
14659
14660 2007-08-20  Jb Evain  <jbevain@novell.com>
14661
14662         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14663
14664 2007-08-20  Jb Evain  <jbevain@novell.com>
14665
14666         * mini.c (mono_method_to_ir): throw MethodAccessException
14667         and FieldAccessException instead of InvalidProgramException.
14668
14669 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14670
14671         * mini.c: CoreCLR security checks.
14672
14673         * mini.h: Removed MonoSecurityMode (moved to
14674         metadata/security-manager.h) and mono_security_mode global var
14675         (replaced by set/get functions in security-manager.h).
14676
14677         * driver.c: Added "core-clr-test" security mode for testing.  Used
14678         set-function for setting security mode.
14679
14680 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14681
14682         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14683         the new jit_info_table.
14684
14685         * driver.c: Test code for the new jit_info_table (enabled by the
14686         define MONO_JIT_INFO_TABLE_TEST).
14687
14688 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14689
14690         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14691         detection of call <REG> instruction sequence. Fixes build on freebsd.
14692
14693 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14694
14695         * mini-exceptions.c: Fix a warning.
14696
14697 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14698
14699         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14700         stack overflow handling code on amd64 too.
14701
14702         * mini-exceptions.c (mono_setup_altstack): Make this use 
14703         mono_thread_get_stack_bounds ().
14704
14705         * mini-x86.h: Disable sigaltstack on solaris x86.
14706
14707 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14708
14709         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14710
14711 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14712
14713         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14714
14715 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14716
14717         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14718
14719         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14720
14721 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14722
14723         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14724         due to alignment.
14725
14726 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14727
14728         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14729         to be emitted (bug #82281).
14730
14731 2007-08-01  Martin Baulig  <martin@ximian.com>
14732
14733         Merged the `debugger-dublin' branch.
14734
14735         * debug-debugger.h (MonoDebuggerInfo):
14736         Removed the `old_*' compatibility entries.
14737         Added `debugger_version' and `data_table'.
14738         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14739         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14740
14741         * debug-mini.c
14742         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14743         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14744         instead of a `gconstpointer'.
14745         (mono_debugger_insert_method_breakpoint): Return a
14746         `MonoDebugMethodAddressList *'.
14747
14748 2007-06-28  Martin Baulig  <martin@ximian.com>
14749
14750         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14751
14752 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14753
14754         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14755         __builtin_frame_address () since it is broken on older gcc versions.
14756
14757 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14758
14759         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14760         on the stack overflow handling and made the managed stack overflows
14761         catchable in most cases using soft guard pages.
14762         * exceptions-x86.c: added code to restore the protection in the soft
14763         guard pages at the end of exception handling.
14764
14765 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14766
14767         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14768
14769 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14770
14771         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14772         exception handling.
14773
14774 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14775
14776         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14777         signal handling support until it has been ported to the new mechanism.
14778         * mini.c: fixed stack overflow detection and use the new
14779         architecture code  to handle signals on the altstack.
14780
14781 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14782
14783         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14784         stack overflows on the alt stack.
14785
14786 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14787
14788         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14789         stack overflows on the alt stack.
14790
14791 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14792
14793         * exceptions-ppc.c: cleanup preparing for altstack support.
14794
14795 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14796
14797         * exceptions-arm.c: cleanup preparing for altstack support.
14798
14799 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14800
14801         * mini.c (print_jit_stats): Output hazard pointer stats.
14802
14803 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14804
14805         * driver.c, mini.c: Replaced security mode flags with a single
14806         enum variable.
14807
14808 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14809
14810         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14811
14812 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14813
14814         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14815         (which doesn't do anything yet) for activating Core CLR
14816         (Silverlight) security.
14817
14818 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14819
14820         * mini-codegen.c: work around a possible gcc bug on arm.
14821
14822 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14823
14824         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14825         message for platforms that don't support AOT compilation.
14826
14827 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14828
14829         * mini.h, mini.c, driver.c: temporary smcs hack.
14830
14831 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14832
14833         * mini-arm.h, mini-arm.c: arm EABI fixes.
14834
14835 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14836
14837         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14838         case.
14839
14840         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14841         trampolines taking a method argument.
14842
14843         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14844
14845         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14846         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14847
14848         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14849         JIT compilation throws an exception. Fixes #82050.
14850
14851 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14852
14853         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14854         with the MONO_EXCEPTION_ defines.
14855
14856 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14857
14858         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14859         #82117.
14860         
14861         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14862         the cause of an assertion.
14863
14864 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14865
14866         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14867         removed.
14868
14869 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14870
14871         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14872         assert. Should fix #82103.
14873
14874 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14875
14876         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14877         here too. Fixes #82095.
14878
14879         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14880         addresses.
14881
14882         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14883
14884         * mini-amd64.h: Enable IMT for amd64.
14885         
14886         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14887
14888 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14889
14890         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14891
14892 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14893
14894         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14895         as soon as check_linkdemand sets an exception_type.
14896
14897 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14898
14899         * mini-x86.c: fixed offsets for IMT call sequence.
14900         * mini-x86.h: enable IMT again.
14901
14902 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14903
14904         * trace.c (mono_trace_enter_method): Decode MonoType too.
14905
14906         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14907
14908         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14909
14910         * mini-amd64.c: Add preliminary IMT implementation.
14911         
14912 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14913
14914         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14915         understand the new IMT-base interface invocation (thanks to
14916         Daniel Nauck for the report and the remote debugging session).
14917
14918 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14919
14920         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14921
14922 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14923
14924         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14925
14926 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14927
14928         * mini-trampolines.c: implement AOT IMT support.
14929         * mini-x86.h: enable IMT support for wider testing.
14930
14931 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14932
14933         * inssel.brg (emit_imt_argument): Add aot support here.
14934
14935         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14936
14937 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14938
14939         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14940         of the IMT implementation, partially from massi, with my
14941         implementation of the bsearch sequence. Disabled by default until
14942         the AOT code is implemented.
14943
14944 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14945
14946         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14947
14948         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14949
14950 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14951
14952         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14953         arch-independent IMT JIT code from Massimiliano
14954         Mantione (massi@ximian.com) with small cleanups from me.
14955
14956 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14957
14958         * Makefile.am: fix svn invocation to get the svn revision to be
14959         independent of the local language (build fix).
14960
14961 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14962
14963         * mini.c (inline_method): Reset cfg->exception_type if the
14964         inlining is aborted.  Fixes: 82049.
14965
14966 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14967
14968         * mini.c: remove assert from exception handling code when exception_ptr
14969         is not set.
14970
14971 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14972
14973         * mini.c (mono_codegen): Add an assert.
14974
14975         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14976         enter and leave code.
14977         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14978
14979 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14980
14981         * mini-ppc.c: fixed memory corruption for localloc(0)
14982         (bug #81852).
14983
14984 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14985         
14986         * mini.c: Fix warnings.
14987
14988 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14989
14990         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14991         to emit better double->int conversions.
14992
14993 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14994
14995         * mini.c: the provided Min/Max optimizations are valid for unisgned
14996         ints.
14997
14998 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14999
15000         * 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
15001
15002 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15003
15004         * mini.c (mono_running_on_valgrind): Add support for reporting the
15005         method and  its boundaries to valgrind.
15006
15007 2007-06-28  Martin Baulig  <martin@ximian.com>
15008
15009         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15010
15011 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15012
15013         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15014
15015         * generic.2.cs: Add new test case.
15016
15017 2007-06-25  Martin Baulig  <martin@ximian.com>
15018
15019         Merged the `debugger-dublin' branch.
15020
15021         * debug-mini.c
15022         (mono_debugger_insert_method_breakpoint): New public method.
15023         (mono_debugger_remove_method_breakpoint): Likewise.
15024         (mono_debugger_check_breakpoints): New static method.
15025         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15026
15027         * debug-debugger.h (MonoDebuggerInfo):
15028         Renamed (to keep backward compatibility in the vtable):
15029         `insert_breakpoint' -> `old_insert_breakpoint'.
15030         `remove_breakpoint' -> `old_remove_breakpoint'.
15031         `create_string' -> `old_create_string'.
15032         `lookup_class' -> `old_lookup_class'.
15033         `lookup_type' -> removed; changed into a dummy field.
15034         `lookup_assembly' -> `old_lookup_assembly'.
15035         Added (same functionality, but different signature):
15036         `create_string', `lookup_class', `lookup_assembly'
15037         Added new:
15038         `get_method_addr_or_bpt', `remove_method_breakpoint',
15039         `runtime_class_init'.
15040
15041         * debug-debugger.c: Merged the `debugger-dublin' branch.
15042
15043 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15044
15045         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15046         well.
15047         (peephole_pass): Likewise.
15048
15049 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15050
15051         * driver.c: hopefully make setaffinity work also for ancient
15052         versions of linux.
15053
15054 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15055
15056         * driver.c : win32 build fix.
15057
15058 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15059
15060         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15061         processor if it is set.
15062
15063 2007-06-21  Martin Baulig  <martin@ximian.com>
15064
15065         * debug-mini.h: New file.
15066
15067         * debug-mini.c
15068         (mono_debugger_insert_breakpoint_full): Moved here from
15069         ../metadata/mono-debug-debugger.c.
15070         (mono_debugger_remove_breakpoint): Likewise.
15071         (mono_debugger_breakpoint_callback): Likewise.
15072
15073 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15074
15075         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15076         changes in MonoGenericClass.
15077
15078 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15079
15080         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15081
15082 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15083
15084         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15085         removal of MonoGenericMethod.
15086
15087 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15088
15089         * mini-exceptions.c: hooks for the exception events profiling API.
15090
15091 2007-06-14  Randolph Chung  <tausq@debian.org>
15092
15093         * Makefile.ma: Add hppa target.
15094         * mini-arch.h: Include mini-hppa.h
15095         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15096         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15097         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15098
15099 2007-06-14  Randolph Chung  <tausq@debian.org>
15100
15101         * inssel.brg: Add rules for "chained" compare-branch operations so that
15102         a single compare op can affect multiple branches.  Adjust cost for
15103         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15104         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15105         cost for some rules so that they can more easily be overridden by
15106         per-arch rules (with fixes from lupus).
15107         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15108
15109 2007-06-13  Randolph Chung  <tausq@debian.org>
15110
15111         * mini-ops.h: Reorder branch ops so that they match the order of the
15112         corresponding CEE_* ops.  The code expects them this way.
15113         Add new ops for HPPA target.
15114         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15115
15116 2007-06-13  Randolph Chung  <tausq@debian.org>
15117
15118         * mini-exceptions.c: Handle cases where the stack grows towards
15119         larger addresses.
15120         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15121
15122 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15123
15124         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15125         counter.
15126         * driver.c: explain where a non-matching corlib is found.
15127
15128 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15129
15130         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15131
15132 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15133
15134         * mini-exceptions.c: Generate a method profile leave event during
15135         an exception to ensure that the profiler gets notified.
15136
15137 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15138
15139         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15140         branch.
15141
15142         * cpu-amd64.md: Add long_and/or/xor opcodes.
15143
15144 2007-06-06  Wade Berrier  <wberrier@novell.com>
15145
15146         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15147         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15148         length of instruction shr_imm (expected 8, got 10)
15149
15150 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15151
15152         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15153
15154 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15155
15156         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15157         MonoInternalHashTable again (fixed bug in the internal hash table
15158         code).
15159
15160 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15161
15162         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15163         Have to figure out what makes it crash the SWF regression.
15164
15165 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15166
15167         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15168
15169 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15170
15171         * mini.c: optimize out the type check when storing null in a
15172         reference array.
15173
15174 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15175
15176         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15177         MonoInternalHashTable.
15178
15179 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15180
15181         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15182         signed integer methods.
15183
15184 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15185
15186         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15187         permanently since the current approach doesn't work.
15188
15189 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15190
15191         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15192         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15193
15194 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15195
15196         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15197         the sreg2==rdx case.
15198         
15199         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15200         account if it contains a rex prefix.
15201         (peephole_pass): Handle OP_FMOVE as well.
15202
15203 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15204
15205         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15206         as it causes regressions.
15207
15208 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15209
15210         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15211         static case as well.
15212
15213         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15214
15215         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15216         (mono_arch_get_this_arg_from_call): Ditto.
15217
15218         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15219
15220         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15221         invoke_impl field.
15222
15223         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15224         (mono_arch_get_this_arg_from_call): Ditto.
15225
15226         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15227         
15228         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15229         try to create optimized invoke code and use that for further invocations. 
15230         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15231
15232         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15233
15234 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15235
15236         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15237         sealed classes or methods.
15238         *devirtualization.cs: tests for the new optimization
15239
15240 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15241
15242         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15243         by the update_volatile () function.
15244
15245 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15246
15247         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15248         require it.
15249
15250         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15251
15252 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15253
15254         * mini.c: Add configure checks for header files.
15255         * mini-x86.c: Add configure checks for header files.
15256         * trace.c: Add configure checks for header files.
15257         * aot-runtime.c: Add configure checks for header files.
15258         * aot-compiler.c: Add configure checks for header files.
15259         * driver.c: Add configure checks for header files.
15260         * mini-codegen.c: Add configure checks for header files.
15261         
15262         Code is contributed under MIT/X11 license.
15263
15264 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15265
15266         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15267         icompare_imm -128 + op_iclt. Fixes #81703.
15268
15269 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15270
15271         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15272
15273 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15274
15275         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15276         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15277         so that all isinst checks now use "interface_bitmap".
15278
15279 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15280
15281         * cpu-amd64.md (jmp): Fix a warning.
15282
15283         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15284
15285         * basic.cs: Add new regression test.
15286
15287         * basic.cs: Remove test which is now in basic-long.cs.
15288
15289         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15290
15291         * basic-long.cs: Add new test.
15292         
15293 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15294
15295         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15296
15297 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15298
15299         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15300
15301         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15302         places.
15303         
15304         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15305         throwing code a bit.
15306
15307         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15308         the exception throwing code a bit.
15309
15310         * mini-x86.c (get_call_info): Allocate result from a mempool.
15311
15312 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15313
15314         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15315
15316         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15317
15318         * mini.h (MonoCompile): Add 'token_info_hash' field.
15319
15320         * mini.c: Save token->method associations during compilation so the AOT 
15321         compiler can use it.
15322         
15323         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15324         which reference generic classes and methods.
15325
15326 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15327
15328         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15329
15330         * aot-compiler.c (compile_method): Fix a typo in a comment.
15331
15332         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15333
15334         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15335         everything generic.
15336
15337         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15338
15339 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15340
15341         * mini.h (MonoCompile): Add 'args' field.
15342
15343         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15344         into cfg->args.
15345
15346         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15347
15348 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15349
15350         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15351
15352         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15353
15354         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15355         opcodes for some opcodes.
15356
15357         * mini.h *.brg *.c: Use the new opcodes.
15358
15359 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15360
15361         * mini.h: Bumped aot revision.
15362
15363         * inssel.brg: modified code generation of type checks for interfaces
15364         to use the new "MonoClass.interface_bitmap" instead of the old
15365         "MonoClass.interface_offsets".
15366
15367 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15368
15369         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15370
15371 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15372
15373         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15374         64 bit platforms.
15375
15376 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15377
15378         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15379
15380 2007-04-27  Wade Berrier  <wberrier@novell.com>
15381
15382         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15383         mini.h) to fix build.
15384
15385 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15386
15387         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15388         
15389         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15390         causes the corlib unit tests to fail.
15391
15392 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15393
15394         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15395
15396         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15397
15398         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15399         opcodes to the comparison relations.
15400
15401         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15402         opcodes to their types.
15403         
15404         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15405
15406         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15407         it in cfg->arch.cinfo.
15408
15409         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15410
15411         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15412         cfg->cil_offset_to_bb.
15413
15414 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15415
15416         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15417         created becase of initlocals.
15418
15419 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15420
15421         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15422         Sergey Tikhonov <tsv@solvo.ru>.
15423
15424 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15425
15426         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15427
15428 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15429
15430         * cpu-s390.md (break): Correct the length of break instruction.
15431
15432 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15433
15434         * mini.c: fix a couple of soft-float issues and comments.
15435
15436 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15437
15438         * trace.c (is_filenamechar): - is also a filename char.
15439
15440 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15441
15442         * mini-s390.c: Correct checking for enum type in return value processing.
15443
15444 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15445
15446         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15447         (version.h): Makefile is in the build directory.
15448
15449 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15450
15451         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15452
15453 2007-04-11  Martin Baulig  <martin@ximian.com>
15454
15455         * mini.c (can_access_member): Fix handling of generic classes;
15456         fixes #81259.
15457
15458 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15459
15460         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15461
15462 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15463
15464         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15465
15466 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15467
15468         * mini-codegen.c: make sure the right spill amount is
15469         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15470
15471 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15472
15473         * mini-ppc.c: fixes for the fp_branch_nan test.
15474
15475 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15476
15477         * basic.cs: Comment out new test which still fails on ia64.
15478
15479 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15480
15481         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15482
15483 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15484
15485         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15486
15487 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15488
15489         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15490         on 64 bit machines. Fixes part of #80738.
15491
15492         * basic.cs: Add regression test.
15493
15494 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15495
15496         * inssel.brg basic.cs: Revert previous change to fix build.
15497
15498         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15499         platforms.
15500         
15501         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15502
15503         * basic.cs: Add new regression test.
15504
15505 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15506
15507         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15508         many arguments.
15509
15510 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15511
15512         * cpu-s390x.md: Correct length of break instruction.
15513
15514 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15515
15516         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15517         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15518
15519 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15520
15521         * *.c: Begin WIN64 port.
15522         * mini.c:  Use correct register in profiler.
15523         * mini-amd64.c: No inline assembly on Win64.
15524         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15525         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15526         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15527         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15528         mono_arch_ip_from_context for Win64.
15529         
15530         Contributed under MIT/X11 license.
15531
15532 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15533
15534         * exceptions-amd64.c (seh_handler): Ditto.
15535
15536         * exceptions-x86.c (seh_handler): Fix a memory leak.
15537
15538 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15539
15540         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15541         mini-s390x.c: fixed peephole optimizations to deal
15542         correctly with 1 and 2 byte reload avoidance.
15543
15544 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15545
15546         * cpu-s390.md, cpu-s390x.md: update localloc length.
15547
15548 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15549
15550         * cpu-g4.md: added missing descriptions.
15551
15552 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15553
15554         *  Makefile.am: Add support so the tail tests are not executed on
15555         PowerPC as that is a known limitation of the PowerPC port.
15556
15557 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15558
15559         * runmdesc.bat:  Move to msvc directory.
15560         
15561 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15562
15563         * runmdesc.bat:  Run executable that was produced by the current
15564         target and sent via an argument.
15565         
15566 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15567
15568         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15569         #81102.
15570
15571         * generics.2.cs: Add regression test.
15572
15573 2007-03-09  Wade berrier  <wberrier@novell.com>
15574
15575         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15576
15577 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15578
15579         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15580         AOT code depends on this.
15581
15582 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15583
15584         * mini.c: more precise tracking of types in the eval stack
15585         (part of fix for bug #81044).
15586
15587 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15590
15591         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15592
15593 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15594
15595         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15596
15597         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15598
15599 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15600
15601         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15602         a pointer on 64 bit systems. Fixes #80190.
15603
15604         * iltests.il: Add new regression test.
15605
15606 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15607
15608         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15609
15610 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15611
15612         * trace.c: Remove an erroneous alignemnt check when tracing.
15613           Fixes --trace on OSX86.
15614
15615 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15616
15617         * mini-$(arch).h: initialize SP in context for all the archs.
15618
15619 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15620
15621         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15622         regressions in the thread tests.
15623
15624 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15625
15626         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15627         - fixed implementation of LOCALLOC opcode
15628         - implemented non-un compare for floats
15629         - code cleanup
15630         - implementation of FDIV and CKFINITE opcodes
15631         - fixes for latest mono updates
15632         - additional arch opcodes
15633
15634 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15635
15636         * Makefile.am: simplify and merge rules for cross-compilation.
15637
15638 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15639
15640         * local-propagation.c: Actually *apply* the fix for bug 80591...
15641
15642 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15643
15644         * mini-exceptions.c: backuot part of the last change
15645         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15646
15647 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15648         * inssel.brg: Fix bug 59286.
15649
15650
15651 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15652
15653         * mini-exceptions.c: patch from Zoltan to correctly check for
15654         stack boundaries (using the stack register, not the frame register),
15655         fixes bugs #80724, #79717.
15656
15657 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15658
15659         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15660         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15661
15662         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15663         presence of frame pointer elimination.
15664
15665 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15666         
15667         * mini-x86.h: NetBSD UCONTEX_REG defines.
15668
15669 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15670
15671         * inssel-amd64.brg: Fix amd64 build.
15672
15673 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15674
15675         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15676         on amd64.
15677
15678 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15679
15680         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15681         ends.
15682
15683         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15684
15685 2007-01-30 Mark Mason <mason@broadcom.com>
15686
15687            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15688            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15689            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15690            beginning support for CEE_JMP [not quite working yet]
15691            * tramp-mips.c: LMF handling now works
15692         
15693 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15694
15695         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15696
15697         * mini.h (NULLIFY_INS): New macro.
15698
15699 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15700
15701         * mini.c: statistical profiler fix for windows, patch
15702         from Tor Lillqvist (tml@novell.com).
15703
15704 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15705         * local-propagation.c: Fix bug 80591.
15706
15707 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15708
15709         * Makefile.am: put back the --export-dynamic option as with
15710         the previous gmodule flags (thanks to Robert Jordan).
15711
15712 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15713
15714         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15715
15716         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15717         simplify and speed up the local register allocator. Also rename some fields
15718         like iassign->vassign.
15719         
15720         * regalloc.c: Remove some functions which are no longer used since their
15721         inlined version is in mini-codegen.c.
15722         
15723         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15724
15725         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15726
15727 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15728
15729         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15730         narrowing. Fixes #80622.
15731
15732         * iltests.il: Add new regresssion test. 
15733
15734 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15735
15736         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15737         debug-debugger.c, debug-debugger.h: warning fixes.
15738         * driver.c: updated copyright year and made it fit in one line.
15739
15740 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15741
15742         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15743
15744 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15745
15746         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15747
15748         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15749
15750         * iltests.il: Add new test for bug #80507.
15751
15752 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15753
15754         * mini-arm.h: use soft-float also on vfp for now.
15755
15756 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15757
15758         * mini.c: fix some more soft-float issues.
15759
15760 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15763
15764 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15765         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15766         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15767         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15768
15769 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15770
15771         * mini-arm.c: typo fix.
15772
15773 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15774
15775         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15776
15777 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15778
15779         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15780         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15781
15782         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15783
15784         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15785
15786         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15787         
15788         * inssel.brg: Fix a warning.
15789
15790         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15791
15792         * abcremoval.c ssa.c ssapre.c: Update after this change.
15793         
15794         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15795
15796         * dominators.c (df_set): Use mono_bitset_union_fast.    
15797
15798 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15799
15800         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15801         mini-codegen.c: reduce relocations and memory usage for the cpu
15802         description.
15803
15804 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15805
15806         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15807
15808         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15809         to reduce their size.
15810
15811 2007-01-19 Mark Mason <mason@broadcom.com>
15812
15813         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15814         * mini-mips.c: more configuration macros, support long conditional branches, additional
15815         asserts, fix epilog instrumentation.
15816         * mini-mips.h: use standard stack walk
15817         * cpu-mips.md: increase size of div, rem and conditional branches
15818         
15819 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15820
15821         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15822         to cpu spec data.
15823
15824 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15825
15826         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15827         (compile_method): Ditto.
15828
15829         * aot-runtime.c (decode_klass_info): Ditto.
15830
15831         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15832         needed by the code generated by inssel.brg. Also fix a warning.
15833
15834 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15835
15836         * mini.c: deal with enums that become genericinsts by
15837         being nested in a generic class (bug #79956).
15838
15839 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15840
15841         * mini.c: match the generic definition to check for
15842         private access with generic types (bug #78431).
15843
15844 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15845
15846         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15847         to make life easier for people cross-compiling that insist on not
15848         using scratchbox.
15849
15850 2007-01-17 Mark Mason <mason@broadcom.com>
15851
15852         * inssel-long.brg: patch to deal with mips missing flags
15853         * inssel-long32-mips.brg: implement overflow checks
15854         * insset-mips.brg: implement overflow checks
15855         * mini-mips.h: implement conditional exception handling
15856         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15857           Remove unused code, minor cleanups.
15858         * exceptions-mips.c: minor cleanups
15859         * mini-ops.h: add mips conditional exception ops
15860         * cpu-mips.md: add mips conditional exception ops
15861
15862         
15863 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15864
15865         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15866         to deal with mips missing of flags.
15867
15868 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15869
15870         * exceptions-ppc.c: execute fault handlers.
15871
15872 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15873
15874         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15875
15876 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15877
15878         * mini.c: handle also floating point values in initialize_array.
15879
15880 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15881
15882         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15883         array initialization and make it conditional on the intrins option.
15884
15885 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15886
15887         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15888         relocations and put the patch info names close to the enum definition.
15889
15890 2007-01-15 Mark Mason <mason@broadcom.com>
15891
15892         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15893
15894 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15895
15896         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15897
15898 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15899
15900         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15901
15902 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15903
15904         * Makefile.am: distribute the mips sources.
15905
15906 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15907
15908         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15909         directly.
15910
15911 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15912
15913         * cpu-x86.md: back out for now as this triggers other regressions.
15914
15915 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15916
15917         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15918         to eax:edx, so ecx can't get allocated to them (bug #80489).
15919
15920 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15921
15922         * mini.c, mini-exceptions.c: enabled running fault handlers
15923         (bug #80469).
15924
15925 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15926
15927         * driver.c: If nothing fail, do not use the string "failed",
15928         because it makes it very annoying to view test result logs on the
15929         web. 
15930
15931 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15932
15933         * debug-debugger.c (mono_debugger_main): Rename "main" to
15934         "main_method" to prevent a warning.
15935
15936         Remove a warning for unused field.
15937
15938 2006-12-28  Martin Baulig  <martin@ximian.com>
15939
15940         * debug-debugger.c
15941         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15942
15943 2006-12-22  Martin Baulig  <martin@ximian.com>
15944
15945         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15946         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15947         seperate `.mdb_debug_info' section, so we can access it from the
15948         debugger even if the binary is stripped.
15949
15950         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15951         from the `.mdb_debug_info' here to prevent the linker from
15952         removing that section.
15953
15954         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15955         mdb-debug-info64.s.
15956
15957 2006-12-19  Robert Jordan  <robertj@gmx.net>
15958
15959         * mini-x86: enable the code to return small structures in
15960         registers for FreeBSD as well. Fixes bug #80278.
15961         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15962
15963 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15964
15965         * mini-x86.c: align the stack when calling the profiler
15966         function instrumenting the prolog (on OSX).
15967
15968 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15969
15970         * mini.c: emit a break opcode where Debugger.Break () is called.
15971
15972 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15973
15974         * mini.c (mono_method_to_ir): Provide useful information on this
15975         assert, to prevent others from debugging like I did.
15976
15977 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15978
15979         * mini.c: enable code which was incorrectly commented
15980         (bug #80235).
15981
15982 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15983
15984         * mini-x86.c: enable on OSX, too, the code to return small
15985         structures in registers.
15986
15987 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15988
15989         * mini-x86.c: remove the use of the dynamic code manager here, too.
15990
15991 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15992
15993         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15994         mono_debugger_create_notification_function() to use
15995         mono_global_codeman_reserve () instead of a dynamic code manager.
15996
15997 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15998
15999         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16000         ves_array_element_address() jit icall and use a generated
16001         managed method instead (which is about 4 times faster for a rank 3
16002         array access).
16003
16004 2006-11-29  Mark Mason  <mason@broadcom.com>
16005
16006         * basic-calls.cs: additional tests for passing
16007         structures as function arguments.
16008
16009 2006-11-29  Mark Mason  <mason@broadcom.com>
16010
16011         * mini-mips.h: disable custom exception handling
16012         * mini-mips.c: throw/rethrow should use jalr to call
16013         exception stubs.  Fixed bug with passing structures
16014         by value. More support for tracing floating point
16015         functions.
16016
16017 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16018
16019         * mini.c: fixed typo in the soft-float ldind.r4 handling
16020         (bug #80086).
16021
16022 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16023
16024         * mini.c, mini.h, driver.c: added --runtime command line
16025         option to select a different runtime than the autodetected one.
16026         * jit.h: added API for embedders to initialize with a specific
16027         runtime version.
16028
16029 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16030
16031         * mini.c: handle also boxing of r4 values (bug #80024).
16032
16033 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16034
16035         * mini-ppc.c: force indirect calls until we reserve
16036         enough address space for all the generated code.
16037
16038 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16039
16040         * exceptions-arm.c: workaround bugs in the libc definition
16041         of struct ucontext.
16042
16043 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16044
16045         * inssel.brg: fixes from me and Mark Mason.
16046
16047 2006-11-23  Dick Porter  <dick@ximian.com>
16048
16049         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16050         semaphore display now we've fixed the initial value
16051
16052 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16053
16054         * inssel.brg: partially revert the last change to fix the build.
16055
16056 2006-11-21  Mark Mason  <mason@broadcom.com>
16057
16058         * inssel.brg: Add and use compare-and-branch macros to support
16059         architectures that do not have condition code registers (ie. MIPS).
16060         * *-mips.{c,brg,md}: Fix copyright statements
16061
16062 2006-11-20  Mark Mason  <mason@broadcom.com>
16063
16064         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16065         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16066         * mini.h: Added declaration for mono_print_ins()
16067         * mini-codegen.c: added ins_spec initializer for MIPS
16068         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16069         vreg to be virtual and hreg to be non-virtual.
16070         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16071         is not yet working/implemented correctly.
16072         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16073         non-static, fixup calls to print_ins() from other parts in the file.
16074
16075 2006-11-20  Mark Mason  <mason@broadcom.com>
16076
16077         * basic-calls.cs: added tests for passing structures as arguments
16078         to calls.
16079
16080 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16081
16082         * inssel-long32.brg: optimize signed division by power of two.
16083
16084 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16085
16086         * mini-arm.c: added support for interworking with thumb code
16087         (mono must be still be built using the ARM instruction encoding).
16088
16089 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16090
16091         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16092         verifier has different rules for it.   Fixes a few verifier issues
16093         in the test suite.
16094
16095         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16096         at the end, so people know what happened.
16097
16098 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16099
16100         * brach-opts.c: in optimize_exception_target() make sure we
16101         are in a catch clause (fixes bug #79871).
16102
16103 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16104
16105         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16106         more soft-float support fixes.
16107
16108 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16109
16110         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16111         that are passed half on the stack and half in registers.
16112
16113 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16114
16115         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16116         more mips integration work from Mark E Mason 
16117         <mark.e.mason@broadcom.com>.
16118
16119 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16120
16121         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16122         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16123         tramp-mips.c: added sources for the mips port, not
16124         integrated in the build yet. Contributed by
16125         Mark E Mason <mark.e.mason@broadcom.com>.
16126
16127 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16128
16129         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16130
16131 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16132
16133         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16134         put the soft-float rules in its own file since it seems to
16135         break s390 compilation.
16136
16137 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16138
16139         * mini-arm.c: fixed wrnings.
16140
16141 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16142
16143         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16144         inssel-arm.brg: ARM support for soft-float.
16145
16146 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16147
16148         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16149         loads and stores of 32 bit fp values.
16150
16151 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16152
16153         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16154
16155         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16156         works. Fixes #79852 and #79463.
16157
16158 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16159
16160         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16161         more soft-float support WIP and fixes.
16162
16163 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16164
16165         * mini-arm.c: some VFP updates.
16166
16167 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16168
16169         * mini-exceptions.c: 0 is a valid local var offset in some
16170         architectures, don't assert (bug #78508).
16171
16172 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16173
16174         * exceptions-arm.c: fixed off by one error in stack walk code.
16175
16176 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16177
16178         * mini.h, mini.c: more precise tracking of type load exceptions.
16179
16180 2006-11-03  Robert Jordan  <robertj@gmx.net>
16181
16182         * Makefile.am: [WIN32] Add monow.exe target.
16183         * driver.c: [WIN32] Don't detach the console when debugging.
16184         Fixes bug #79797.
16185         
16186 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16187
16188         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16189
16190 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16191
16192         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16193
16194         * driver.c (mini_regression): Fix --regression with AOT.
16195
16196         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16197
16198 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16199
16200         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16201
16202         * mini-sparc.h: Don't use sigaction on sparc/linux.
16203
16204         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16205
16206         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16207
16208         * mini-exceptions.c: Add proper include files for getpid ().
16209
16210 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16211
16212         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16213         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16214         method.
16215
16216         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16217         name cache to reduce its size.
16218
16219         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16220
16221 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16222
16223         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16224         the mono_lmf TLS variable.
16225
16226         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16227         trampoline lmf frames.  
16228
16229         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16230
16231 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16232
16233         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16234         the mono_lmf TLS variable.
16235
16236         * mini-exceptions.c: Access the LMF structure through accessors.
16237
16238         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16239         variable instead of in jit_tls->lmf.
16240
16241         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16242         
16243         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16244         trampoline lmf frames.
16245
16246         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16247
16248 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16249
16250        * mini.c trace.c mini-x86.c: Revert these too.
16251         
16252        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16253        signature change.
16254
16255 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16256
16257         * genmdesc.c: removed now dead code.
16258
16259 2006-10-09  Robert Jordan <robertj@gmx.net>
16260
16261         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16262
16263 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16264
16265         * mini.h: do not leave gaps in the opcode values.
16266
16267 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16268
16269         * jit-icalls.h: flag functions as internal here, too.
16270
16271 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16272
16273         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16274         functions with the internal attribute.
16275
16276 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16277
16278         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16279
16280 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16281
16282         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16283         for soft-float.
16284
16285 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16286
16287         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16288         tail calls as on other platforms.
16289
16290         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16291
16292         * iltests.il: Add a few tailcall tests.
16293
16294 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16295
16296         * driver.c: fix loop for old compilers (bug #79521).
16297
16298 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16299
16300         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16301
16302         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16303
16304         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16305         metadata without any code.
16306
16307         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16308         more precise debugging information using gdb.
16309
16310 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16311
16312         * inssel-ia64.brg: Make the helper methods static.
16313
16314 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16315
16316         * inssel-x86.brg: make the helper methods static.
16317
16318 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16319
16320         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16321
16322 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16323
16324         * mini.c: updates for monoburg changes.
16325         * inssel.brg: make a few helper functions static as they should.
16326
16327 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16328
16329         * Makefile.am: Move mini-codegen.c to common_sources.
16330
16331 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16332
16333         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16334         instructions.
16335         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16336         mini-ppc.h: port to use the common local register allocator.
16337
16338 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16339
16340         * mini.h: Remove the comment too then.
16341
16342 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16343
16344         * mini.h: put back backend.data which is to be used shortly and
16345         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16346         pointers on 4 byte boundaries it'd have much bigger issues running
16347         and you can ifdef it out anyway.
16348
16349 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16350
16351         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16352         MonoInst size by 4 bytes on 64 bit machines.
16353
16354 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16355
16356         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16357         replacement with more meaningful field names. Arch maintainers, please
16358         check the assigned names are good enough for your arch.
16359
16360 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16361
16362         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16363         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16364
16365 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16366
16367         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16368         relocations and memory requirements, put the optimization flags
16369         definitions in their own file.
16370
16371 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16372
16373         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16374
16375         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16376
16377 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16378
16379         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16380
16381 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16382
16383         * inssel.brg: use the correct function to get the size of an item
16384         in an array, given an element class.
16385         * aot-compiler.c: do not access class->class_size directly.
16386
16387 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16388
16389         * mini.h, debug-mini.c: added a debugging function to print
16390         info about local variables and arguments in a jitted method.
16391
16392 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16393
16394         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16395
16396         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16397
16398 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16399
16400         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16401         inner and outer loops when passing vtypes.
16402
16403 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16404
16405         * mini-ppc.c: take into account the cpu errata for cache flushing
16406         which caused some random errors (bug #79381).
16407
16408 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16409
16410         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16411         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16412
16413 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16414
16415         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16416         loaded.
16417
16418         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16419         freebsd ports tree.
16420
16421         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16422         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16423
16424         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16425         displacement.
16426
16427 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16428
16429         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16430
16431 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16432
16433         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16434         macro does not have to be changed during debugging.
16435
16436         * 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>.
16437
16438         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16439
16440         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16441         
16442         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16443         MONO_ARCH_NO_EMULATE_MUL is defined.
16444
16445         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16446
16447         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16448
16449         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16450
16451         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16452         
16453 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16454
16455         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16456         stuff to mini-exceptions.c where it is used.
16457
16458         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16459         setup code, the real one is in mini-exceptions.c.
16460
16461         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16462         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16463         some changes from the freebsd ports tree.
16464
16465         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16466         constants.
16467         
16468         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16469
16470 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16471
16472         * mini.c: on Linux, check for /proc to be mounted
16473         (bug# 79351, novell bug#201204).
16474
16475 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16476
16477         * mini.c: handle cases where pthread_attr_getstack() behaves
16478         incorrectly (bug #78096).
16479
16480 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16481
16482         * mini-arm.c: support larger stack frames (bug #79272).
16483
16484 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16485
16486         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16487
16488         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16489         tokens.
16490
16491         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16492         mono_class_from_name () to find a class from its name.
16493
16494         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16495
16496 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16497
16498         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16499
16500 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16501
16502         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16503
16504 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16505
16506         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16507         callinfo->trampoline.
16508
16509         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16510         fixes #79271.
16511         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16512         future.
16513
16514 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16515
16516         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16517
16518 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16519
16520         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16521         stats.method_trampolines, it is already done by the generic trampoline code.
16522
16523         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16524         
16525 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16526
16527         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16528
16529         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16530
16531         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16532
16533         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16534         
16535         * mini.c (print_jit_stats): Print new stats.
16536
16537         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16538
16539 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16540
16541         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16542         Address on two dimensional arrays. Fixes #78729.
16543
16544         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16545
16546         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16547         a method.
16548
16549         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16550
16551         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16552         #79130.
16553         
16554         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16555         a race condition.
16556         (mini_get_ldelema_ins): Ditto.
16557
16558 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16559
16560         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16561         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16562         Fixes #79213.
16563
16564 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16565
16566         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16567         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16568
16569         * exceptions-s390x.c: Cosmetic change.
16570
16571         * tramp-s390.c: Fix warning.
16572
16573         * cpu-s390.md: Correct length of mul_imm.
16574
16575 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16576
16577         * aot-compiler.c: added binary writer with ELF backend
16578         implementation (only on Linux/x86 for now).
16579
16580 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16581
16582         * Makefile.am: Don't run net 2.0 AOT tests.
16583
16584         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16585         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16586
16587         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16588
16589 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16590
16591         * aot-compiler.c: simplified and refactored the asm-writing code
16592         to allow different backends.
16593
16594 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16595
16596         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16597
16598         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16599         little. Share patches of type TYPE_FROM_HANDLE as well.
16600
16601         * mini.c (mono_patch_info_equal): New helper function.
16602         (mono_patch_info_hash): Ditto.
16603
16604         * aot-compiler.c (emit_method_code): Fix s390 build.
16605
16606         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16607         is not handled because it is stored as a flag and not as a type ctor. Fixes
16608         #79016.
16609
16610 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16611
16612         * aot-compiler.c: Fix computation of GOT slot statistics.
16613         
16614         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16615         Also remove support for not PIC AOT.
16616
16617         * mini.h: Bump AOT file format version.
16618
16619         * objects.cs: Add a test for #78990.
16620
16621         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16622         (peter.dettman@iinet.net.au). Fixes #79087.
16623
16624         * basic-long.cs: Add a test for the above.
16625
16626 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16627
16628         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16629         
16630         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16631         code somewhat.
16632
16633 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16634
16635         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16636         exceptions.
16637
16638 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16639
16640         * mini.c: Don't verify COM proxy invoke calls
16641         
16642
16643 2006-08-10  Dick Porter  <dick@ximian.com>
16644
16645         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16646         which process is holding semaphores locked.
16647
16648 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16649
16650         * mini-ia64.c mini-amd64.c: Fix #79027.
16651
16652         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16653
16654         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16655
16656         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16657         implicit arguments in a vararg call. Fixes #79027.
16658
16659 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16660
16661         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16662         (mono_get_array_new_va_signature): Ditto.
16663
16664 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16665
16666         * aot-runtime.c: Call init_plt lazily.
16667
16668         * inssel-long.brg: Fix unsigned long->int conversion.
16669
16670         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16671
16672         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16673         that most data is now in the .rss/.data section.
16674
16675 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16676
16677         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16678
16679         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16680
16681         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16682
16683         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16684
16685         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16686         virtual call. Fixes #79010.
16687
16688         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16689         and use the result as the this argument in the real call.
16690
16691         * generics.2.cs: Add a new test for #79010.
16692         
16693 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16694
16695         * mini-x86.c: Fix a warning.
16696
16697         * aot-compiler.c: Add a bunch of statistics.
16698
16699         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16700
16701 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16702
16703         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16704
16705 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16706
16707         * 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>.
16708
16709 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16710
16711         * mini.c (mono_method_to_ir): Obtain the original method in the
16712         CIL stream and use this to perform validation.
16713
16714         Fixed: #78816
16715
16716 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16717
16718         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16719         (mono_arch_call_opcode): Ditto.
16720
16721         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16722         #78826.
16723
16724         * mini.c (mono_patch_info_dup_mp): New helper function.
16725         
16726         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16727         compilation. Fixes #78827.
16728
16729 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16730
16731         * declsec.c: Use original security informations for
16732           MONO_WRAPPER_MANAGED_TO_MANAGED.
16733
16734 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16735
16736         * mini.c: Allow Com Interop methods/classes and
16737         don't verify COM wrapper calls
16738         
16739
16740 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16741
16742         * inssel-long32.brg: Fix long->i4 checked conversion.
16743
16744         * exceptions.cs: Add a test for the above.
16745
16746 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16747
16748         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16749
16750         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16751         leaks.
16752
16753         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16754         #78775.
16755
16756 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16757
16758         * mini.c: Fix solaris/x86 exception handling.
16759
16760         * Makefile.am: Get rid of $(ICU_LIBS).
16761
16762 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16763
16764         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16765         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16766         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16767
16768         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16769
16770         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16771         this function causes a SIGSEGV.
16772
16773 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16774
16775         * mini.c: Remove unused solaris/x86 includes.
16776
16777 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16778
16779         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16780
16781 2006-06-20  Jb Evain  <jbevain@gmail.com>
16782
16783         * cpu-g4.md: fix max length of start_handler instruction.
16784
16785 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16786         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16787
16788 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16789         * ssa.c: Fixed bug 78653 for SSA based deadce.
16790         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16791         MonoInst.flags, used in SSA based deadce.
16792         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16793         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16794
16795 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16796
16797         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16798         it can end up using non executable memory on ppc64 systems
16799         running ppc32 userspace (fix from Johannes Berg).
16800
16801 2006-06-14  Dick Porter  <dick@ximian.com>
16802
16803         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16804         4.1.1
16805
16806 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16807         * mini.c: Made so that inline is locally disabled if it would
16808         trigger a .cctor, because too many apps depend on this behavior
16809         (which seems to be also the one of the MS CLR).
16810
16811 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16812
16813         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16814         No idea why this worked before.
16815
16816         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16817         which branch to outer exception clauses since they could skip the
16818         inner finally clauses. Fixes #78633.
16819
16820         * exceptions.cs: Add a test for the above.
16821
16822         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16823         Fixes #78629.
16824
16825         * iltests.il: Add a test for the above.
16826
16827 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16828
16829         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16830         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16831
16832         * iltests.il: Add a test for the above.
16833
16834 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16835
16836         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16837         
16838         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16839         methods as instrinsics.
16840
16841 2006-06-09  Wade Berrier <wberrier@novell.com>
16842
16843         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16844         (simple-cee-ops.h ssapre-mini-ops.h)
16845
16846 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16847
16848         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16849         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16850         instruction).
16851         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16852         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16853
16854 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16855
16856         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16857
16858 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16859
16860         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16861         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16862         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16863         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16864         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16865         of opcodes, so that bug 78549 should not happen again.
16866         * ssapre.c: Updated to use the renamed files.
16867
16868 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16869
16870         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16871         in OP_ATOMIC_EXCHANGE_I4.
16872
16873 2006-06-07  Wade Berrier <wberrier@novell.com>
16874
16875         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16876         in mono_debugger_create_notification_function)
16877
16878 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16879
16880         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16881         
16882         * mini.c (type_from_stack_type): Disable some changes which do not
16883         seem to work.
16884
16885         * driver.c: Reenable opts.
16886
16887         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16888         of the evaluation stack.
16889         
16890         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16891         evaluation stack trace at entry to the bblock.
16892
16893         * mini.c (merge_stacks): New function to perform verification of stack merges.
16894         Turned off by default.
16895
16896         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16897         STACK_MP.
16898         
16899 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16900
16901         * local-propagation.c: Fixed bug 78549.
16902
16903 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16904
16905         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16906
16907 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16908
16909         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16910         tramp-arm.c, tramp-ia64.c
16911         (mono_debugger_create_notification_function): Update signature to
16912         new signature and use new protocol for creating the notification
16913         function.  
16914
16915         Should fix the build.
16916
16917 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16918
16919         * exceptions-ppc.c (mono_jit_walk_stack)
16920         (ves_icall_get_frame_info): Fix the build
16921
16922 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16923
16924         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16925
16926 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16927
16928         * il2tests.2.il: New file for generics CIL tests.  Add test for
16929         #78019.
16930         * Makefile.am: Update.
16931
16932         Fix #78019
16933         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16934         to nullable types.
16935
16936 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16937
16938         * aliasing.c: Fixed bug 78311.
16939
16940 2006-05-29  Martin Baulig  <martin@ximian.com>
16941
16942         * mini-exceptions.c (mono_find_jit_info): When computing the
16943         native offset, check whether we're actually inside the method's
16944         code; call mono_debug_print_stack_frame() to format the frame.
16945         (ves_icall_System_Exception_get_trace): Call
16946         mono_debug_print_stack_frame() to format the stack frame.
16947         (ves_icall_get_trace): Update to the new debugging API.
16948         (mono_jit_walk_stack_from_ctx): Likewise.
16949         (ves_icall_get_frame_info): Likewise.
16950
16951         * mini.c (get_method_from_ip): Use the new debugging API.
16952         (mono_print_method_from_ip): Likewise.
16953
16954         * exceptions-ppc.c
16955         (mono_jit_walk_stack): Use the new debugging API.
16956         (ves_icall_get_frame_info): Likewise.   
16957
16958 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16959
16960         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16961
16962 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16963
16964         * mini.c: Added "limitator" to inline for debugging.
16965
16966 2006-05-24  Martin Baulig  <martin@ximian.com>
16967
16968         * debug-debugger.c (mono_debugger_init): Create a private,
16969         malloc()-based code manager for the notification function and
16970         intentionally leak it on exit.  This fixes the crash-on-exit race
16971         condition.
16972
16973         * tramp-amd64.c
16974         (mono_debugger_create_notification_function): Added
16975         `MonoCodeManager *' argument.
16976
16977         * tramp-x86.c
16978         (mono_debugger_create_notification_function): Added
16979         `MonoCodeManager *' argument.
16980
16981 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16982
16983         * aliasing.c: Fixed 64 bit issue.
16984         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16985         default since all known bugs are fixed (one more time!).
16986
16987 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16988
16989         * mini.c: write barrier support.
16990
16991 2006-05-23  Martin Baulig  <martin@ximian.com>
16992
16993         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16994         check at the top of the file.
16995
16996 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16997
16998         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16999         reverting changes without reason and without changelog entries.
17000
17001 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17002
17003         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17004         to a few opcodes. Fixes #78439.
17005
17006         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17007         consistency with other archs.
17008
17009         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17010
17011 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17012
17013         * debug-debugger.c: fix the build.
17014
17015 2006-05-17  Martin Baulig  <martin@ximian.com>
17016
17017         * debug-debugger.c
17018         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17019         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17020         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17021         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17022
17023 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17024
17025         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17026
17027 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17028
17029         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17030         MONO_TYPE_GENERICINST.
17031         
17032         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17033         MONO_TYPE_GENERICINST.
17034
17035 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17036
17037         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17038         #78325.
17039
17040 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17041
17042         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17043         mempool.
17044         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17045
17046 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17047
17048         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17049         mono_trace_cleanup ().
17050
17051         * iltests.il: Fix problem with the newly added test.
17052
17053         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17054         due to register constraints, free up the previous hreg. Fixes #78314.
17055
17056         * iltests.il: Add new test for #78314.  
17057
17058         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17059         Interlocked.Add. Fixes #78312.
17060
17061         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17062         
17063 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17064
17065         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17066
17067 2006-05-05  Martin Baulig  <martin@ximian.com>
17068
17069         * debug-mini.c (mono_debug_open_block): New method.
17070
17071         * mini-amd64.c
17072         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17073         the beginning of each basic block.
17074
17075         * mini-x86.c
17076         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17077         the beginning of each basic block.
17078
17079 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17080
17081         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17082         default until I understand why they break the build on amd64.
17083
17084 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17085
17086         * mini.c (mini_cleanup): Call mono_cleanup ().
17087
17088         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17089         errors.
17090
17091 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17092
17093         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17094         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17095         default since all known bugs are fixed, and I cannot reproduce bug
17096         77944... I'm asking Matt Hargett to test again after this commit.
17097
17098 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17099
17100         * mini-codegen.c: Fixed typo that thrashed inline.
17101
17102 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17103
17104         * dominators.c (compute_dominators): Avoid using a worklist since
17105         it is not correct in some cases. Instead, iterate over all bblocks as
17106         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17107
17108 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17109
17110         * mini.c (mono_jit_compile_method_inner): Use
17111         mono_prepare_exception_from_error that resets the value
17112         internally.
17113
17114 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17115
17116         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17117         
17118 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17119
17120         * aliasing.c: Fixed bug 78210.
17121
17122 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17123
17124         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17125         default until all their problems (or the ones they trigger) are fixed.
17126
17127 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17128
17129         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17130         
17131         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17132         as loaded only after resolving patches since that could invoke the same method.
17133
17134         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17135
17136         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17137         functions.
17138
17139         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17140         AOT loader.
17141
17142         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17143         stack.
17144
17145         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17146         made from AOT code through the PLT table.
17147
17148         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17149         holding the plt offset when a call is made to the aot plt trampoline.
17150         
17151 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17152
17153         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17154         amd64 AOT support.
17155
17156         * Makefile.am (common_sources): Fix build breakage.
17157
17158         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17159         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17160         intra-assembly calls if possible.
17161         
17162         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17163
17164         * mini-trampolines.c: Handle PLT entries.
17165
17166         * mini.c: Avoid creating a GOT var for calls.
17167
17168         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17169         from mscorlib code.
17170
17171         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17172         from mscorlib code.
17173
17174         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17175         AOT code.       
17176
17177         * mini.h: Bump AOT file format version.
17178         
17179         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17180         covers more cases.
17181
17182 2006-04-25  Martin Baulig  <martin@ximian.com>
17183
17184         * driver.c: Disable copyprop, consprop and inline when running
17185         inside the debugger.
17186
17187 2006-04-25  Martin Baulig  <martin@ximian.com>
17188
17189         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17190         with `get_current_thread' and added `detach'.
17191         (MonoDebuggerMetadataInfo): Added `thread_size',
17192         `thread_tid_offset', `thread_stack_ptr_offset' and
17193         `thread_end_stack_offset'.
17194
17195 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17196
17197         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17198         aot-runtime.c.
17199
17200         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17201         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17202
17203         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17204
17205         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17206
17207         * aot.c: Add support for ADJUSTED_IID.  
17208
17209 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17210
17211         * aot.c (emit_method_order): Don't align method_order_end.
17212
17213         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17214         the interface ID changes.
17215
17216 2006-04-21  Dick Porter  <dick@ximian.com>
17217
17218         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17219         cleaning up a thread.  Fixes the new part of bug 77470.
17220
17221 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17222
17223         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17224         to managed wrapper.
17225                      
17226 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17227
17228         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17229         
17230         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17231         SIGSEGV. Fixes #78072.
17232
17233         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17234         unregister our SIGABRT handler.
17235
17236 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17237
17238         * mini.c: Disabled inline where it can alter the call stack in a
17239         way visible from managed code.
17240         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17241         default.
17242
17243 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17244
17245         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17246         on other platforms. Fixes #78089.
17247
17248 2006-04-13  Martin Baulig  <martin@ximian.com>
17249
17250         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17251         determine whether we're inside the debugger.
17252
17253         * debug-debugger.h
17254         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17255
17256 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17257
17258         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17259         handler clauses. Fixes #78024.
17260
17261         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17262         in the CALL_MEMBASE opcodes. Fixes #78088.
17263         (mono_arch_get_vcall_slot_addr): Ditto.
17264
17265 2006-04-10  Martin Baulig  <martin@ximian.com>
17266
17267         * debug-debugger.c: The thread handling code has now been moved
17268         into ../metadata/threads.c.
17269
17270 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17271
17272         * driver.c (mono_main): Fix --with-gc=none build.
17273
17274         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17275         (mono_spillvar_offset_float): Ditto.
17276         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17277         hreg, not when its !global, since on ia64, there is a third category: stacked
17278         registers.      
17279
17280 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17281
17282         * mini.c: set MonoInst->klass for load field address and a few other
17283         places.
17284
17285 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17286
17287         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17288
17289 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17290
17291         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17292         the branch opt changes.
17293
17294 2006-04-06  Dick Porter  <dick@ximian.com>
17295
17296         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17297         
17298         * wapihandles.c (mini_wapi_seminfo): 
17299         * driver.c (mono_main): Add semaphore info option
17300
17301 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17302
17303         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17304         branch optimization changes. Fixes #78009.
17305
17306 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17307
17308         * mini.c: ignore accessibility of methods in managed->native wrappers.
17309
17310 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17311
17312         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17313         
17314         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17315
17316 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17317
17318         * mini.c: Modify the branch optimizations to preserve the invariant that
17319         the entries inside the in_bb and out_bb arrays are unique.
17320         (mono_unlink_bblock): Avoid creation of new arrays.
17321
17322 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17323
17324         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17325         change (#77992).
17326
17327 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17328
17329         * mini.c (optimize_branches): Remove the "optimizations" in
17330         the cbranch1/cbranch2 -> branch cases which were causing several
17331         problems in the past. Fixes #77986.
17332
17333 2006-03-31  Chris Toshok  <toshok@ximian.com>
17334
17335         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17336         default optimizations :(
17337
17338 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17339
17340         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17341         branch.
17342
17343 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17344
17345         * local-propagation.c: Added comments to structs and removed
17346         "Mono" prefixes from local tree mover types.
17347
17348 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17349
17350         * Makefile.am (arch_sources): Define this for each architecture so 
17351         libmono_la_SOURCES is defined in one place.
17352
17353 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17354
17355         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17356         from handles/.
17357
17358 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17359
17360         * driver.c: print the GC name supplied by configure.
17361
17362 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17363
17364         * local-propagation.c: Added tree mover, and moved here all the
17365         local propagation code from mini.c
17366         * mini.c: Added support for treeprop, and moved all the local
17367         propagation code to local-propagation.c
17368         * mini.h: Added support for treeprop
17369         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17370         treeprop, inline and deadce by default
17371         * Makefile.am: Added local-propagation.c
17372
17373 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17374
17375         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17376
17377 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17378
17379         * debug-debugger.c: make it compile without the Boehm GC.
17380
17381 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17382
17383         * mini.c: fixed issue with mismatch when an icall is registered
17384         with multiple names but same address.
17385
17386 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17387
17388         * declsec.c, mini-exceptions.c: use write barrier to set reference
17389         fields of managed objects.
17390
17391 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17392
17393         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17394         (can_access_internals): Fix a warning.
17395
17396         * mini.c (print_method_from_ip): Rename this to 
17397         mono_print_method_from_ip so it gets exported.
17398
17399         * trace.c: Deal with strings inside StringBuilder's containing garbage
17400         and fix memory leaks. Fixes #77848.
17401
17402 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17403
17404         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17405         fixes #77787.
17406
17407 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17408         
17409         * mini-s390.c: Remove OP_X86_TEST_NULL.
17410
17411 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17412
17413         * mini.c: use the correct GetHashCode() for the moving collector.
17414
17415 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17416
17417         * liveness.c: Regalloc spill cost tuning.
17418
17419 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17420         
17421         * mini-s390x.h: Correct S390_LONG macro.
17422
17423         * mini-s390x.c: Cleanup unused code.
17424
17425 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17426
17427         * jit-icalls.h: New file.
17428
17429         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17430         icalls and include that instead of including jit-icalls.c.
17431
17432         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17433         OP_X86 opcodes.
17434
17435 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17436
17437         * mini.c: when checking for member accessibility, also check for
17438         friend assemblies and for explicit interface implementations.
17439
17440 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17441
17442         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17443
17444         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17445
17446         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17447         common cases are done first.    
17448
17449         * mini-ops.h: Only define platform specific opcodes on the given platform.
17450
17451         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17452         branch.
17453         
17454 2006-03-14  Martin Baulig  <martin@ximian.com>
17455
17456         Revert Paolo's change from r57348:
17457
17458         * mini.h: don't use gboolean for bitfields.
17459         * mini.c: verifier changes for fields and methods accessibility.
17460
17461 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17462
17463         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17464
17465         * mini-s390x.c: Fix conv_r_un.
17466
17467         * cpu-s390, cpu-s390x.md: Fix lengths.
17468
17469 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17470
17471         * mini.c: nested types have access to all the nesting
17472         levels, not just the enclosing types.
17473
17474 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17475
17476         * mini.c: added a few more verification checks.
17477
17478 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17479
17480         * liveness.c: Merge optimizations from the linear-il branch.
17481
17482 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17483
17484         * mini-ia64.c (emit_call): Add a comment.
17485
17486         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17487
17488         * tramp-ia64.c: Fix some warnings.
17489
17490 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17491
17492         * mini.h: don't use gboolean for bitfields.
17493         * mini.c: verifier changes for fields and methods accessibility.
17494
17495 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17496
17497         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17498         lazy icall wrapper changes.
17499
17500         * dominators.c: Replace all the dominator algorithms with faster
17501         ones from the linear-il branch.
17502
17503         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17504         the mempool.
17505
17506         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17507         common cases are done first.
17508
17509         * mini-amd64.c: Fix some warnings.
17510
17511         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17512         from the mempool.
17513
17514         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17515         added code.
17516
17517         * mini.h: Add a missing prototype.
17518
17519 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17520
17521         * mini.c: Compile icall wrappers lazily.
17522
17523         * mini-codegen.c: Use printf instead of g_print since its much faster.
17524
17525         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17526         function.
17527
17528         * mini.c (optimize_branches): Cache the negative result from 
17529         remove_block_if_useless ().
17530
17531         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17532         Also fix some bblock linking issues.
17533
17534         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17535         assembly files.
17536
17537         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17538
17539         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17540         accessed fields first, for better cache behavior.
17541         
17542 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17543
17544         * mini.c: speedup IList<T> array accesses.
17545
17546 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17547
17548         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17549         inline_costs counter. Fixes #77190.
17550
17551 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17552
17553         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17554         trace messages. Fixes #77706.
17555
17556 2006-03-04  Martin Baulig  <martin@ximian.com>
17557
17558         * tramp-amd64.c, tramp-x86.c
17559         (mono_debugger_create_notification_function): Use
17560         mono_global_codeman_reserve() to allocate a buffer at runtime and
17561         return it.
17562
17563         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17564
17565         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17566         notification function at runtime and then call `initialize' in the
17567         `MONO_DEBUGGER__debugger_info' vtable.
17568
17569 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17570
17571         * iltests.il: Fix a visibility problem.
17572
17573 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17574
17575         * driver.c, mini.c: add hooks for the counters API.
17576
17577 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17578
17579         * driver.c: show disabled options.
17580
17581 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17582
17583         * linear-scan.c: always use cost-driven selection.
17584
17585 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17586
17587         * jit-icalls.c (helper_compile_generic_method): Revert change from
17588         2006-02-24.
17589
17590 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17591
17592         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17593
17594 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17595
17596         * inssel.brg: style fixes, mostly to force the updated monoburg
17597         to run for people using svn.
17598
17599 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17600
17601         * mini.c: match monoburg changes.
17602
17603 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17604
17605         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17606         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17607         declaration in the header file.
17608
17609 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17610
17611         * helpers.c: reduce relocations and mem usage.
17612
17613 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17614
17615         * mini.h, mini-codegen.c: disable logging features if
17616         requested by configure.
17617
17618 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17619
17620         * mini.c: tiny verifier changes.
17621
17622 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17623
17624         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17625         cpu-pentium.md: stack alignment changes for osx/x86,
17626         partially from Geoff Norton <gnorton@customerdna.com>.
17627
17628 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17629
17630         * jit-icalls.c (helper_compile_generic_method): Update to changes
17631         in metadata/class.c.
17632
17633 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17634         
17635         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17636         
17637         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17638         interface calls with large offsets.
17639
17640 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17641
17642         * jit-icalls.c (helper_compile_generic_method): Document the
17643         special-case we depend on so that we can inflate the method twice
17644         with the same context with no bad side-effects.
17645
17646 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17647
17648         * mini-x86.c, mini-amd64.c: fix for case when xen support
17649         is disabled.
17650
17651 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17652
17653         * mini-x86.c, mini-amd64.c: generate code to access tls items
17654         in a faster way for Xen systems.
17655
17656 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17657
17658         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17659         updates and compilation fixes for the OSX/x86 port, mostly from
17660         Geoff Norton <gnorton@customerdna.com>.
17661
17662 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17663
17664         * inssel.brg: faster interface call implementation
17665         to sync with the interface_offsets MonoVTable changes.
17666
17667 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17668
17669         * mini.c: more verification checks.
17670
17671 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17672
17673         * mini.c: added a few more verification checks.
17674
17675 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17676
17677         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17678         facility on the processor and use it if available.
17679
17680 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17681
17682         * driver.c, aot.c, mini.c: throw exception if the IL code is
17683         invalid or unverifiable.
17684
17685 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17686
17687         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17688         m.StructField.
17689
17690 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17691
17692         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17693
17694 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17695
17696         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17697         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17698         handling of instantiated generic valuetypes.
17699
17700 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17701
17702         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17703         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17704         instead.
17705
17706         * generics.2.cs: Revert the nullable reftypes tests.
17707
17708 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17709
17710         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17711         using __builtin_frame_address (1) as it doesn't work in the presence
17712         of optimizations. Hopefully fixes #77273.
17713
17714         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17715         -> generics.cs change as it doesn't work with some automake versions.
17716
17717 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17718
17719         * mini.c: handle systems that sue a different way to
17720         retrieve the stack address of the current thread.
17721
17722 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17723
17724         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17725         it specially in the makefile.
17726
17727         * generics.2.cs: Add tests for nullable reference types.
17728
17729 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17730
17731         * mini.c: always handle the case when mono_jit_init()
17732         is called in a thread different from the main thread,
17733         confusing libgc (bug #77309).
17734
17735 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17736
17737         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17738
17739 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17740
17741         * mini.c: change optimize_branches () to use a single loop
17742         and introduce a new optimization to simplify some range checks.
17743
17744 2006-02-03  Martin Baulig  <martin@ximian.com>
17745
17746         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17747         and merged with debugger_thread_manager_add_thread().
17748         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17749         inform the debugger about the main thread.
17750
17751 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17752
17753         * basic.cs: Add test for div.un/rem.un constant folding.
17754
17755 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17756
17757         * cpu-s390x.md: correct int_xor_imm length
17758
17759 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17760
17761         * generics.2.cs: New test for #77442.
17762
17763         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17764         #77442.
17765
17766 2006-02-02  Martin Baulig  <martin@ximian.com>
17767
17768         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17769         <mono/metadata/mono-debug-debugger.h>   
17770
17771         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17772
17773 2006-02-02  Martin Baulig  <martin@ximian.com>
17774
17775         * debug-debugger.h: New header file for debug-debugger.c.
17776
17777         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17778         function is a separate thread anymore; add support for attaching.
17779
17780 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17781
17782         * tramp-x86.c: Fix a warning.
17783
17784 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17785
17786         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17787         on very large methods.
17788
17789         * aot.c (load_patch_info): Fix a warning.
17790
17791 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17792
17793         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17794         mini-ops.h: alu membase optimizations.
17795
17796 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17797
17798         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17799         to speedup StringBuilder.
17800
17801 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17802
17803         * dominators.c (mono_compute_natural_loops): Fix detection of
17804         loop body start blocks.
17805
17806         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17807
17808 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17809
17810         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17811         #75145.
17812
17813 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17814
17815         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17816
17817 2006-01-25  Martin Baulig  <martin@ximian.com>
17818
17819         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17820         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17821         started to cleanup this file a little bit.
17822
17823 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17824
17825         * mini.c: optimize a codepath frequently happening in generics code.
17826
17827 2006-01-23  Martin Baulig  <martin@ximian.com>
17828
17829         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17830
17831         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17832         functions directly.
17833
17834         * driver.c: debug-debugger.c is only available if
17835         `MONO_DEBUGGER_SUPPORTED' is defined.   
17836
17837 2006-01-23  Martin Baulig  <martin@ximian.com>
17838
17839         * debug-debugger.c: Only enable this on platforms where the Mono
17840         Debugger is working (x86 and x86_64).
17841
17842 2006-01-21  Martin Baulig  <martin@ximian.com>
17843
17844         The Mono Debugger is now using the normal `mono' instead of the
17845         `mono-debugger-mini-wrapper' when executing managed code.
17846
17847         * debug-debugger.c: New file; previously known as
17848         debugger/wrapper/wrapper.c.
17849
17850         * debug-mini.c (mono_init_debugger): Removed.
17851
17852         * driver.c (mono_main): Added new `--inside-mdb' command line
17853         argument which is used when running inside the debugger.
17854
17855 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17856
17857         * liveness.c (mono_analyze_liveness): Remove some unused data
17858         structures.
17859
17860 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17861
17862         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17863
17864 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17865
17866         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17867         depends on implementation details of monobitset.
17868
17869         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17870         Fixes #77271.
17871
17872 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17873
17874         * liveness.c: Update after monobitset changes.
17875
17876 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17877
17878         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17879
17880 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17881
17882         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17883
17884         * mini-s390x.c: Remove warning messages.
17885
17886 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17887
17888         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17889
17890 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17891
17892         * generics.2.cs: Add ldelem/stelem_any test.
17893
17894 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17895
17896         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17897
17898 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17899
17900         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17901         
17902 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17903
17904         * generics.2.cs: Reenable vtype tests.
17905
17906         * inssel-x86.brg: Remove an icorrect valuetype rule.
17907
17908 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17909
17910         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17911         initial support for OP_ABS.
17912
17913 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17914
17915         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17916
17917 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17918
17919         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17920         conversion and implement LADD/LSUB.
17921
17922         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17923         architectures.
17924
17925 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17926
17927         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17928
17929         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17930         architectures.
17931
17932 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17933
17934         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17935         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17936         (stack walk problem).
17937
17938 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17939
17940         * aot.c (mono_aot_load_method): Fix a warning.
17941
17942 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17943
17944         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17945
17946 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17947
17948         * iltests.il: Add test for #77148.
17949
17950         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17951         #77148.
17952
17953 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17954
17955         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17956
17957 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17958
17959         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17960         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17961
17962         * basic-long.cs: Add lconv-to-r4/r8 tests.
17963
17964 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17965
17966         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17967
17968         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17969         here as on other archs.
17970
17971 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17972
17973         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17974
17975 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17976
17977         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17978         
17979         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17980
17981         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17982         instrument_prolog; Add memory_barrier instruction.
17983
17984 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17985
17986         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17987
17988 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17989
17990         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17991
17992         * aliasing.c inssel.brg: Fix warnings.
17993
17994         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17995         could skip initialization of some parts of memory.
17996
17997         * mini.c mini-ia64.c: Fix warnings.
17998
17999         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18000
18001 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18002
18003         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18004         a crash seen on sparc.
18005
18006         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18007         
18008         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18009
18010 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18011
18012         * mini-ops.h: Add s390_backchain instruction
18013
18014         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18015
18016         * cpu-s390.md: Add s390_backchain instruction
18017
18018         * mini-s390.c: Significant ABI changes
18019
18020         * mini-s390.h: Cater for zero length structures
18021
18022 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18023
18024         * mini-s390.c: ABI fixes
18025
18026         * inssel-s390.brg: Remove debug statements
18027
18028         * cpu-s390.md: Fix length of ATOMIC_xx operations
18029
18030 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18031
18032         * basic-float.cs: Add float<->long conversion tests.
18033
18034 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18035
18036         * mini-s390.c: Fix LOCALLOC processing.
18037
18038         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18039
18040 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18041
18042         * iltests.il: Add tests for some opcodes not covered by the other
18043         tests.
18044
18045 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18046
18047         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18048         register loading for Tail processing; Correct trace output.
18049
18050         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18051
18052         * cpu-s390.md: Correct size of jmp instruction. 
18053
18054 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18055
18056         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18057
18058 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18059
18060         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18061           Bring s390 up to current level.
18062
18063 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18064
18065         * generics.2.cs: Disable the newly added tests as they do not work yet.
18066         
18067         * generics.2.cs: Add valuetype tests.
18068
18069 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18070
18071         * basic-long.cs: Add i4->u8 test.
18072
18073         * objects.cs: Add tests for JIT intrinsic.
18074
18075         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18076         optimizations lost by a mistake.
18077
18078 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18079
18080         * basic-long.cs: Remove a test moved to objects.cs.
18081
18082         * arrays.cs: Add more array tests.
18083
18084 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18085
18086         * arrays.cs: Add new tests for multi-dimensional arrays.
18087
18088 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18089
18090         * Makefile.am (test_sources2): Add generics.2.cs.
18091         (EXTRA_DIST): Add test_sources2.
18092
18093 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18094
18095         Support for boxing and unboxing nullable types as well as the
18096         isinst operation on nullables, per the CLI ammendment.
18097
18098         * inssel.brg (CEE_ISINST): Special case for nullable
18099
18100         * mini.c (handle_unbox_nullable): new method
18101         (handle_box): Special case for nullable types
18102         (mono_method_to_ir): Call handle_unbox_nullable in correct
18103         places.
18104
18105         * generics.2.cs: New test suite
18106
18107         * Makefile.am: Support for regression tests with generics.
18108
18109 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18110
18111         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18112         allocated to registers. Fixes #76800.
18113
18114 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18115
18116         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18117
18118 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18119
18120         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18121         of platforms.
18122
18123 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18124
18125         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18126         objects.cs.
18127
18128         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18129         
18130         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18131 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18132
18133         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18134         single precision before storing to a single precision location.
18135
18136 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18137
18138         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18139
18140 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18141
18142         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18143         correct files.
18144
18145         * basic.cs: Remove test_0_byte_compares test which was moved to
18146         objects.cs a long time ago.
18147
18148 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18149
18150         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18151
18152 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18153
18154         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18155         handlers are called.
18156
18157         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18158         throwing code.
18159
18160          * mini-ia64.c: Add support for the throw->branch exception 
18161         optimization.   
18162
18163         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18164
18165 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18166
18167         * mini.c: Enabled "fastpath" deadce :-)
18168         
18169 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18170
18171         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18172         alias analysis pass to support it.
18173         * mini.h: Likewise.
18174         * ssa.c: Likewise.
18175         * liveness.c: Likewise (liveness computation can use aliasing
18176         information to be more accurate).
18177         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18178         moreover made so that "--compile-all" uses the given optimization
18179         flags and not the default ones.
18180         * aliasing.c: Alias analysis (new file).
18181         * aliasing.h: Likewise.
18182         * Makefile.am: added "aliasing.c" and "aliasing.h".
18183         
18184 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18185
18186         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18187         OP_L opcodes.
18188
18189 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18190
18191         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18192         fp >= end_of_stack exit condition, as it is not needed, and it might
18193         become true for fp eliminated frames.
18194
18195 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18196
18197         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18198         coded offsets.
18199
18200 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18201
18202         * mini-arm.c: fixed alignment of doubles/longs to match
18203         the C ABI (bug #76635).
18204
18205 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18206
18207         * aot.c: fix compilation with --enable-minimal=aot.
18208
18209 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18210
18211         * mini-arm.c: fixed compatibility with the new
18212         floating point emulator package for compares.
18213
18214 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18215
18216         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18217
18218 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18219
18220         * mini-exceptions.c (print_stack_frame): Output to stderr.
18221         (mono_handle_native_sigsegv): Ditto.
18222
18223 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18224
18225         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18226         OP_LCONV_TO_OVF_I implementation.
18227
18228         * mini-amd64.c: Add support for the throw->branch exception 
18229         optimization.
18230
18231         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18232         when the catch clause catches a more general exception, i.e. Object.
18233
18234 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18235
18236         * cpu-ia64.md: Remove unused opcodes.
18237
18238         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18239         specific defines for architectures defining USE_SIGACTION.
18240
18241         * mini-ia64.c: Fix some warnings.
18242
18243         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18244         version seemed to skip a frame.
18245
18246 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18247
18248         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18249         only calls which are made to native code use this flag.
18250
18251 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18254         varargs methods as well.
18255         
18256         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18257         which have save_lmf set. Reorganize methods prologs a bit.
18258
18259         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18260         debugger to the proper place.
18261
18262 2005-10-29  Martin Baulig  <martin@ximian.com>
18263
18264         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18265         when running inside the debugger until the debugger has support
18266         for it.
18267
18268 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18269
18270         * mini.h: Fix a warning.
18271
18272 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18273
18274         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18275         we expose publicly, this returns the string.
18276
18277 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18280         with fp elimination.
18281
18282 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18283
18284         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18285         native stacktrace using the glibc 'backtrace' function if available.
18286
18287 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18288
18289         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18290
18291         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18292         handle SIGSEGVs received while in native code.
18293
18294         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18295         code, call mono_handle_native_sigsegv which will abort the runtime
18296         after printing some diagnostics, instead of converting it into a
18297         confusing NullReferenceException.
18298
18299 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18300
18301         * cpu-pentium.md: Remove unused opcodes.
18302
18303 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18304
18305         * mini-amd64.h (MonoLMF): Add rsp field.
18306
18307         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18308         the lmf too.
18309
18310 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18311
18312         * mini-codegen.c (get_register_spilling): Fix some warnings.
18313
18314 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18315
18316         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18317         elimination during exception handling. Enable fp elimination by
18318         default.
18319
18320         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18321         elimination.
18322
18323 2005-10-16  Martin Baulig  <martin@ximian.com>
18324
18325         * mini-exceptions.c
18326         (mono_debugger_run_finally): New public method for the debugger.
18327
18328 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18329
18330         * debug-mini.c (mono_debug_init_method): Fix warning.
18331
18332         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18333         the 'exname' parameter const to fix some warnings.
18334
18335 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18336
18337         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18338         introduced by the previous patch.
18339
18340 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18341
18342         * basic-float.cs: Add test for precision of float arithmetic.
18343
18344         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18345         when loading/storing single values from/to memory.
18346
18347         * mini.c (mono_jit_compile_method_with_opt): Create the function
18348         pointers in the correct domain.
18349
18350 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18351
18352         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18353         introduced by previous patch.
18354         
18355         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18356         when out_filter_idx is NULL.
18357
18358         * mini-exceptions.c: Don't run filter clauses twice during exception
18359         handling. Fixes #75755.
18360
18361 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18362
18363         * aot.c: Add support for ldflda wrappers.
18364
18365         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18366         #75902.
18367
18368 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18369
18370         * mini.c, mini.h: do not consider exception handlers blocks when
18371         setting up interface variables.
18372
18373 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18374
18375         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18376
18377 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18378
18379         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18380         causes a regression.
18381
18382         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18383
18384 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18385
18386         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18387         of the OP_P definitions.
18388
18389         * TODO: Add a proposal for dealing with the CEE/OP mess.
18390
18391         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18392         optimizations from the x86 port.
18393
18394         * cpu-amd64.md: Ditto.
18395
18396         * basic.cs basic-long.cs: Add tests.
18397
18398 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18399
18400         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18401         Patrik Torstensson's implementation of my exception-handling
18402         optimization idea, when the exception object is not used
18403         (bug #62150).
18404
18405 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18406
18407         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18408         of the mul_imm optimizations from the old jit.
18409
18410 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18411
18412         * mini.c, liveness.c: patch by Patrik Torstensson and
18413         Zoltan Varga to improve performance in methods with
18414         exception clauses.
18415
18416 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18417
18418         * driver.c: Remove 'Globalization' entry from --version.
18419
18420 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18421
18422         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18423         there is a profiler interested in JIT events.
18424
18425         * aot.c: Load profile files produced by the AOT profiling module, and
18426         reorder methods based on the profiling info. Add a 'method_order' table
18427         to the AOT file to make mono_aot_find_jit_info work with the reordered
18428         methods.
18429
18430         * mini.h: Bump AOT file version info.
18431
18432 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18433
18434         * mini-arm.h: work around what looks like a gcc bug when optimizations
18435         are enabled.
18436
18437 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18438
18439         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18440         conditionals.  Use ...
18441         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18442
18443 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18444
18445         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18446         to determine the amount of memory to copy when passing valuetypes.
18447
18448         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18449         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18450
18451 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18452
18453         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18454         information about aot.
18455
18456 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18457
18458         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18459         macros. This will allow a deadlock debugger to easily be plugged
18460         in.
18461
18462 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18463
18464         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18465
18466 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18467
18468         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18469         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18470         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18471         ($(arch_built)) [CROSS_COMPILING]: Error out.
18472
18473 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18474
18475         * aot.c: Add support for the no_special_static flag for classes.
18476
18477 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18478
18479         * Reapply reverted patches.
18480
18481         * *: Revert r50174 as well.
18482
18483         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18484
18485 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18486
18487         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18488
18489 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18490
18491         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18492         part of the SIG_HANDLER_SIGNATURE.  
18493
18494 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18495
18496         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18497         statistics.
18498
18499         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18500         introduced by previous patch.
18501
18502 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18503
18504         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18505         saved registers too.
18506
18507         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18508         upon the information returned by get_call_info ().
18509         
18510         * mini-x86.c (add_float): Fix stack size calculation.
18511         (mono_arch_call_opcode): Rewrite this so it works based up the
18512         information returned by get_call_info ().
18513         (mono_arch_get_this_vret_args): Ditto.
18514
18515 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18516
18517         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18518         in cinfo to determine the registers which need to be used.
18519
18520 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18521
18522         * driver.c (mono_main): Add --server and --desktop flags. 
18523
18524 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18525
18526         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18527         registers as global registers.
18528
18529         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18530         longer needed with the new register allocator.
18531
18532         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18533
18534         * cpu-ia64.md: Remove unused opcodes.
18535         
18536         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18537         
18538 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18539
18540         * cpu-amd64.md: Remove unused opcodes.
18541
18542         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18543         needed with the new register allocator.
18544
18545         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18546         reg-reg moves.
18547
18548 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18549
18550         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18551
18552 2005-09-16  Martin Baulig  <martin@ximian.com>
18553
18554         * exceptions-amd64.c
18555         (throw_exception): Don't call mono_debugger_throw_exception() if
18556         we're a rethrow - see the FIXME in the code.
18557
18558 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18559
18560         * mini.c (mono_init_exceptions): This only works on some architectures.
18561         
18562 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18563
18564         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18565         on ia64.
18566
18567         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18568
18569         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18570         now in mini-exceptions.c.
18571
18572 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18573
18574         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18575         now in mini-exceptions.c.
18576
18577 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18578
18579         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18580         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18581
18582         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18583         code into mini-exceptions.c. Add some assertions to it.
18584
18585 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18586
18587         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18588         (<software@solmersa.com>). Fix as errors on windows.
18589
18590 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18591
18592         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18593         method info into the LMF.
18594
18595 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18596         
18597         * mini-ia64.c: Add proper unwind info for method epilogs.
18598
18599         * exceptions-ia64.c: Add some code to help debugging.
18600         
18601         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18602
18603         * mini-exceptions.c: Fix warning.
18604
18605 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18606
18607         * mini.c: Really fix build.
18608
18609         * mini-x86.c mini-amd64.c: Fix build.
18610
18611 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18612
18613         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18614
18615         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18616         some Interlocked methods as intrinsics.
18617
18618         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18619         for Thread methods as well.
18620
18621         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18622
18623         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18624
18625         * mini-ia64.c mini-x86.c mini-amd64.c 
18626         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18627         OP_MEMORY_BARRIER.
18628         
18629         * mini.c (mono_init_exceptions): Fix build breakage.
18630
18631 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18632
18633         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18634         of instructions. Use the new ia64_unw_op macros for emitting unwind
18635         info.
18636
18637         * mini.c (mono_init_exceptions): Initialize exception handling
18638         related trampolines at startup.
18639
18640 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18641
18642         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18643
18644 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18645
18646         * mini.c: Handle type loading errors gracefully during compilation and
18647         throw the appropriate exception.
18648
18649 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18650
18651         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18652         for the mono binary.
18653
18654 2005-09-09  Martin Baulig  <martin@ximian.com>
18655
18656         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18657         the release.
18658
18659 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18660
18661         * mini-arm.h: use emulation for conv.r.un for the release.
18662
18663 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18664
18665         * mini-arm.c, objects.cs: more fixes and tests for them.
18666
18667 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18668
18669         * mini-arm.c: align structures to at least 4 bytes to be able
18670         to keep our current optimized memcpy.
18671
18672 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18673
18674         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18675
18676 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18677
18678         * mini.c: ignore SIGPIPE.
18679
18680 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18681
18682         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18683
18684         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18685
18686 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18687
18688         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18689
18690 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18691
18692         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18693         exception handling support.
18694         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18695         patch by Brian Koropoff <briank@marakicorp.com>).
18696
18697 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18698
18699         * mini.c: revert another 'optimization' which breaks when
18700         items on the eval stack need to be saved at a basic block end
18701         (bug #75940).
18702
18703 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18704
18705         * jit-icalls.c: for arrays, ensure we always provide
18706         lower bounds.
18707
18708 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18709
18710         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18711         
18712         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18713
18714 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18715
18716         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18717         arguments in their original register.
18718
18719 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18720
18721         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18722         memset/memcpy.
18723
18724         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18725         when ssapre is enabled.
18726
18727         * inssel-long.brg: Fix bug in previous patch.
18728
18729         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18730         multiplication by a constant.
18731
18732 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18733
18734         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18735         icc.
18736
18737         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18738         saving registers.
18739
18740 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18741
18742         * inssel-arm.brg: apply changes tested by Brian Koropoff
18743         <briank@marakicorp.com>.
18744
18745 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18746
18747         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18748         
18749 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18750
18751         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18752         to the same register if dreg is just a base register.
18753         (print_ins): Improve printing of membase opcodes.
18754
18755         * inssel-x86.brg: Add optimized ldind(reg) rules.
18756
18757         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18758
18759 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18760
18761         * mini.c: when running under valgrind, set the stack bottom for
18762         the GC at the actual approximate stack for the app (fixes running
18763         mono with valgrind).
18764
18765 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18766
18767         * mini.c: do no break at the first valuetype to init found
18768         (fixes bug #75791).
18769
18770 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18771
18772         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18773
18774 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18775
18776         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18777
18778 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18779
18780         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18781
18782 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18783
18784         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18785
18786         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18787         code.
18788
18789         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18790         code.
18791
18792         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18793         methods.
18794
18795 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18796
18797         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18798
18799 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18802         in the tail recursion optimization.
18803
18804         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18805         debug info into the assembly file.
18806
18807         * iltests.il: Add test for filter regions.
18808
18809         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18810         initial stack of filter regions. Fixes #75755.
18811
18812 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18813
18814         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18815         stack requirements.
18816
18817 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18818
18819         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18820         the check for an already compiled method on non-ia64 platforms.
18821         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18822         proper domain.
18823
18824         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18825
18826         * inssel-x86.brg: Add some optimized call rules.
18827
18828 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18829
18830         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18831         method here.
18832
18833         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18834         mono_arch_patch_delegate_trampoline.
18835
18836         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18837
18838         * mini-trampolines.c: Fix build.
18839
18840         * mini-amd64.h: Add delegate trampolines.
18841
18842         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18843
18844         * inssel-amd64.brg: Add optimized call rules.
18845         
18846         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18847
18848         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18849
18850 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18851
18852         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18853         change.
18854
18855         * mini-ia64.c: Remove LMF fixmes.
18856
18857         * mini-ia64.h: Remove most fields from LMF.
18858
18859         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18860
18861         * mini-trampolines.c: Add support for IA64 function descriptors.
18862
18863         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18864         for IA64 function descriptors.
18865
18866 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18867
18868         * tramp-arm.c: patch the vtable for virtual calls. Added
18869         support code to register/unregister the LMF.
18870         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18871         more LMF work.
18872
18873 2005-08-19  Dick Porter  <dick@ximian.com>
18874
18875         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18876         bit value if needed.
18877
18878 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18879
18880         * mini.c (mini_get_method): Move handling of wrapper data here.
18881
18882         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18883
18884         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18885         virtual.
18886
18887         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18888         bblock->code does not remain empty.
18889
18890 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * arrays.cs: Add regression test for #75832.
18893
18894         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18895         rules. Fixes #75832.
18896
18897         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18898         instruction scheduling.
18899
18900 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18901
18902         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18903
18904 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18905
18906         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18907
18908         * mini-codegen.c: Fix VC build.
18909
18910         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18911
18912 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18913
18914         * mini.h: fix signature for mono_register_opcode_emulation.
18915
18916 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * mini.c: Get rid of most of the helper_sig_... constants using
18919         mono_create_icall_signature ().
18920
18921 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18922
18923         * jit-icalls.c (helper_ldstr): New helper function.
18924
18925         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18926
18927         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18928         throw, load the string using a helper call instead of creating a string object.
18929
18930         * aot.c: Update after LDSTR changes.
18931
18932         * mini.h: Bump AOT file version.
18933         
18934         * aot.c: Save class size info into the AOT file. Print more statistics during
18935         compilation.
18936
18937         * mini.h: Bump AOT file version.
18938
18939         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18940         ordering of disasm cases. Fixes #74957.
18941
18942 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18943
18944         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18945         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18946         the generic code needed for the ARM port.
18947
18948 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18949
18950         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18951         inssel-arm.brg: more ARM features and fixes.
18952
18953 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18954
18955         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18956         ARM port work in progress.
18957
18958 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18959
18960         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18961
18962         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18963
18964         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18965
18966         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18967
18968         * *-ia64.*: Ongoing IA64 work.
18969         
18970         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18971
18972 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18973
18974         * TODO: Remove out-of-data todo stuff.
18975
18976         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18977         dead code.
18978
18979         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18980
18981         * mini.h: Bump corlib version.
18982
18983 2005-07-27  Martin Baulig  <martin@ximian.com>
18984
18985         * mini-codegen.c
18986         (create_copy_ins): Added `const unsigned char *ip' argument; set
18987         `copy->cil_code' from it.
18988
18989 2005-07-27  Martin Baulig  <martin@ximian.com>
18990
18991         * mini-exceptions.c (mono_handle_exception): Don't call
18992         mono_debugger_handle_exception() for filters.
18993
18994 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18995
18996         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18997         as well.
18998
18999 2005-07-26  Martin Baulig  <martin@ximian.com>
19000
19001         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19002
19003         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19004         helper_compile_generic_method() if the method is actually virtual
19005         and non-final.
19006
19007 2005-07-26  Martin Baulig  <martin@ximian.com>
19008
19009         * mini.c
19010         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19011         public; this is now accessed directly by the debugger.
19012         (mono_generic_trampoline_code): Removed.
19013
19014         * debug-mini.c
19015         (mono_debug_init_method): Also add interncalls and wrappers.
19016
19017 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19018
19019         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19020
19021 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19022
19023         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19024
19025 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19026
19027         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19028
19029 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19030
19031         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19032         getting TLS offsets on AMD64 too.
19033
19034 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19035
19036         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19037
19038 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19039
19040         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19041         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19042
19043 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19044
19045         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19046
19047         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19048         to mini.c.
19049
19050         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19051         mono_sparc_is_virtual_call ().
19052         
19053         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19054
19055         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19056         trampoline parameters.
19057
19058         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19059         
19060         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19061         to mono_arch_get_vcall_slot_addr.
19062
19063         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19064         trampoline code.
19065
19066         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19067
19068 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19069
19070         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19071
19072 2005-07-19  Martin Baulig  <martin@ximian.com>
19073
19074         * exceptions-amd64.c (throw_exception): Call
19075         mono_debugger_throw_exception() here like we're doing it on i386.
19076
19077 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19078
19079         * mini-ia64.c: Add optimized TLS access support.
19080
19081 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19082
19083         * mini-exceptions.c: Ongoing IA64 work.
19084
19085         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19086
19087         * mini.c: Use the default optimization set when embedding. Fixes
19088         #75194.
19089
19090 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19091
19092         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19093         of trampolines to a separate file.
19094
19095         * mini-trampolines.c: New file.
19096
19097         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19098         separate file.
19099         
19100         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19101         amd64/ia64 code.
19102
19103         * mini-codegen.c: Fix cygwin build.
19104
19105 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19106
19107         * mini.c: Add some minor changes needed by the IA64 port.
19108
19109         * *-ia64.*: Ongoing IA64 work.
19110
19111 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19112
19113         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19114         trampolines into arch-independent and arch-dependent parts.
19115
19116         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19117
19118 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19119
19120         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19121
19122         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19123         the xp-regalloc-branch for amd64.
19124
19125         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19126         xp-regalloc-branch for x86.
19127
19128 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19129
19130         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19131
19132 2005-07-06  Martin Baulig  <martin@ximian.com>
19133
19134         * mini.c
19135         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19136         (mono_jit_runtime_invoke): Likewise.
19137
19138 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19139
19140         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19141         on x86 too.
19142         
19143         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19144         without loading their metadata. Reorganize the file format so exception handling+
19145         debug info is kept separate from normal method info. Create MonoJitInfo 
19146         structures for methods lazily.
19147
19148         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19149         loading metadata.
19150         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19151
19152         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19153
19154         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19155         in AOT code.
19156
19157         * mini.h: Bump AOT file version.
19158
19159 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19160
19161         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19162
19163 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19164
19165         * Makefile.am (check-local): Call semdel-wrapper.
19166
19167 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19168
19169         * mini-x86.c: Revert the last change as it seems to break the build..
19170
19171 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19172
19173         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19174         
19175         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19176
19177 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19178
19179         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19180         outside of the macro, so strange stuff doesn't happen with gcc4
19181         (NEW_AOTCONST_TOKEN): Likewise.
19182
19183 2005-06-28  Martin Baulig  <martin@ximian.com>
19184
19185         * mini.c (mini_class_is_system_array): New static method; use this
19186         instead of `klass->parent == mono_defaults.array_class' everywhere
19187         since this also works for the new generic array class.
19188
19189 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19190
19191         * inssel.brg: Remove warnings.
19192
19193 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19194
19195         * mini-ia64.c: Ongoing IA64 work.
19196
19197         * basic-float.cs: Add float->i1 conversion test.
19198
19199         * iltests.il: Add conv.u4 test.
19200
19201 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19202
19203         * inssel-long.brg: Fix bug caused by last change.
19204
19205 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19206
19207         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19208         BSDs.  Allows the x86 JIT to work on OSX86
19209
19210 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19213         u4->i8 conversion.
19214
19215         * mini-ia64.c: Ongoing IA64 work.
19216
19217 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19218
19219         * mini-ia64.c: Ongoing IA64 work.
19220
19221         * driver.c: Clean up jit_code_hash as well when using --regression.
19222
19223         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19224
19225         * basic-long.cs: Add tests for long->u4 conversion.
19226
19227 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19228
19229         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19230         that we do not depend on undefined C behavior: the order stuff
19231         gets evaluated within an expression. Fixes mono when compiled on
19232         GCC 4.
19233
19234 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19235
19236         * *-ia64.*: Ongoing IA64 work.
19237
19238         * aot.c: Lower memory usage while loading AOT methods.
19239
19240         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19241
19242         * mini.h: Bump AOT file format version.
19243
19244 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19245
19246         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19247
19248 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19249
19250         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19251         not on callee assembly). Fixed some comments.
19252
19253 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19254
19255         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19256         it gets proper disassembly.
19257         (emit_method_info): Remove some dead code.
19258
19259         * mini.c (mini_method_compile): Allways allocate the GOT var in
19260         mono_method_to_ir for emulating opcodes.
19261
19262 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19263
19264         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19265         before freeing the code memory. Fixes #74990.
19266
19267         * objects.cs: Add regression test for #74992.
19268
19269         * liveness.c: Extend live ranges of arguments to the beginning of the
19270         method. Fixes #74992.
19271
19272         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19273         so it points into the faulting instruction.
19274
19275 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19278
19279         * *-ia64.*: Ongoing IA64 work.
19280
19281         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19282
19283 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19284
19285         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19286
19287         * *-ia64.*: Ongoing IA64 work.
19288
19289 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19290
19291         * basic-long.cs: Add tests for add/sub.ovf.
19292
19293         * basic.cs: Add tests for sub.ovf.
19294
19295         * *-ia64.*: Ongoing IA64 work.
19296
19297 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19298
19299         * *-ia64.*: Ongoing IA64 work.
19300
19301         * basic.cs: Add conv.ovf.i4.un test.
19302
19303 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19304
19305         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19306         
19307 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19308
19309         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19310
19311 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19312
19313         * *-ia64.*: Ongoing IA64 work.
19314
19315 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19316
19317         * trace.[ch]:
19318         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19319
19320 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19321
19322         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19323
19324 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19325
19326         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19327
19328         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19329         of a call is callable by a near call.
19330
19331 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19332
19333         * mini-ia64.c: Ongoing IA64 work.
19334
19335 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19336
19337         * genmdesc.c: Make the generated array non-static.
19338
19339         * inssel-long.brg: Fix LSHR_IMM rule.
19340
19341         * *-ia64.*: Ongoing IA64 work.
19342
19343         * *-ia64.*: Ongoing IA64 work.
19344
19345 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19346
19347         * *-ia64.*: Ongoing IA64 work.
19348
19349         * *-ia64.*: Ongoing IA64 work.
19350         
19351         * mini-ia64.c: Ongoing IA64 work.
19352
19353         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19354
19355 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19356
19357         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19358         
19359         * objects.cs basic-long.cs: Move some tests to objects.cs.
19360
19361 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19362
19363         * *-ia64.*: Ongoing IA64 work.
19364
19365         * iltests.il: Add a new test.
19366
19367         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19368         newobj. Fixes #75042.
19369
19370 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19371
19372         * *-ia64.*: Ongoing IA64 work.
19373         
19374         * *-ia64.*: Ongoing IA64 work.
19375         
19376         * *-ia64.*: Ongoing IA64 work.
19377
19378         * basic.cs objects.cs: Move tests accessing static variables as well.
19379
19380         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19381
19382 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19383
19384         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19385
19386         * driver.c: Always print failed tests.
19387
19388         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19389         frame pointer.
19390
19391         * *ia64*: Ongoing IA64 work.
19392
19393 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19394
19395         * basic.cs: Add tests for add.ovf. Fix warnings.
19396
19397 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19398
19399         * driver.c (mono_main): Avoid crash if no argument is passed to
19400         --break;  Do not use g_error, but f_printf.   And fix all other
19401         ocurrences of the same crash.
19402
19403 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19404
19405         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19406         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19407         Fixes #74742.
19408
19409 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19410
19411         * *-ia64.*: Add beginnings of IA64 backend.
19412
19413         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19414
19415 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19418         Fixes #74925.
19419
19420         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19421
19422         * mini-amd64.c: Fix a warning.
19423
19424 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19425
19426         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19427         in float_neg. Fixes #74897.
19428
19429         * mini-amd64.c (emit_call): Fix another near call bug.
19430
19431 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19432
19433         * declsec.c: Keep the appdomain information in the structure. Added a 
19434         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19435         value gets overwritten).
19436         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19437         an MonoAppDomain member to MonoSecurityFrame.
19438         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19439         used in the stack walk. Now use a MonoArray which grow (double) when
19440         it gets full.
19441
19442 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19443
19444         * mini.c: Re-enabled runtime cleanup, since running threads should
19445         now properly stop when exiting.
19446
19447 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19448
19449         * mini-codegen.c: New file contaning the arch-independent local
19450         register allocator. Not used by any architectures yet.
19451
19452         * mini.h linear-scan.c: Merge some changes from the 
19453         mini-xp-local-regalloc branch.
19454
19455 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19456
19457         * mini-amd64.c (emit_call): Fix calls to native functions when the
19458         runtime is compiled as a shared library. Fixes #74756.
19459
19460         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19461         on a literal field. Fixes #74751.
19462
19463 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19464
19465         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19466
19467 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19468
19469         * objects.cs: Add missing null casting test.
19470
19471 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19472
19473         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19474         in wrapper methods. Also rename 'address' variable to 'offset'.
19475
19476 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19477
19478         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19479         warnings.
19480         
19481         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19482
19483         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19484         work on windows.
19485
19486 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19487
19488         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19489
19490 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19491
19492         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19493         just the last bytes.
19494
19495 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19496
19497         * aot.c (mono_compile_assembly): Fix warning.
19498
19499         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19500         by the _MSC_VER stuff.
19501
19502 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19503
19504         * inssel-long.brg: Fix #74588.
19505
19506         * cpu-amd64.md: Fix #74591.
19507
19508         * iltests.il: Add new regression tests.
19509
19510 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19511
19512         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19513         valuetype.
19514
19515 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19516
19517         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19518
19519         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19520         from Bill Middleton <flashdict@gmail.com>.
19521
19522 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * arrays.cs: Add new regression test. Fix warnings.
19525
19526 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19527
19528         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19529         and leakage in CKFINITE.
19530
19531         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19532         this to a null op since it is called on amd64 too.
19533
19534         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19535
19536         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19537         body since this is not used on amd64.
19538         
19539         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19540
19541         * mini-amd64.c: Remove obsolete fixmes.
19542
19543         * mini.c (print_method_from_ip): Fix debugging support.
19544
19545 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19546
19547         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19548         so that expressions that don't give much gain are not reduced.
19549         * ssapre.h: Likewise.
19550
19551 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19554
19555         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19556
19557         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19558
19559 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19560
19561         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19562
19563         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19564
19565 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19566
19567         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19568         stack touching.
19569
19570         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19571
19572         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19573
19574         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19575
19576         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19577         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19578
19579         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19580
19581         * mini-x86.c: Fix up stack overflow handling.   
19582
19583         * exceptions.cs: Add new regression test.
19584
19585 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19586
19587         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19588         mono_jit_thread_attach.
19589
19590         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19591
19592 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19595         avoid calling constructors using callvirt.
19596
19597         * inssel.brg: Fix #74073.
19598
19599 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19600
19601         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19602         compilation with non-GCC compilers.
19603         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19604         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19605
19606 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19607
19608         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19609         klass->interface_offsets (will likely fix bug#74073).
19610
19611 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19612
19613         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19614
19615 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19616
19617         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19618         to amd64_div_reg_size ().
19619         
19620         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19621
19622 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19625
19626 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19627
19628         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19629
19630 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19631
19632         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19633         
19634         * mini.c (mono_precompile_assembly): Load and precompile referenced
19635         assemblies as well. Fixes #74015.
19636
19637 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19638
19639         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19640
19641 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19642
19643         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19644         a lot of checks and (anyway) permissions cannot work until corlib is 
19645         loaded.
19646
19647 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19648
19649         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19650
19651 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19652
19653         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19654         calls (fixes bug#72824).
19655
19656 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19657
19658         * mini.c: fix tail recursion elimination (see test in bug#73936).
19659
19660 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19661
19662         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19663         some fp functions in sse2 mode.
19664
19665 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19666
19667         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19668
19669 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19670
19671         * mini.h mini.c: Add mono_get_jit_tls_key ().
19672
19673         * mini-x86.c: Enable fast TLS support on windows.
19674
19675 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19676
19677         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19678         * mini.c: Check for p/invoke method when generating code. If a
19679         p/invoke method, or it's class, isn't decorated with [Suppress
19680         UnmanagedCodeSecurity] then generate code to call System.Security.
19681         UnmanagedDemand (only if the security manager is active).
19682
19683 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19684
19685         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19686         last change as it seems to cause strange crashes.
19687         
19688 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19689
19690         * *.c: handle unsafe function pointers where needed.
19691
19692 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19693
19694         * mini.c (mono_jit_free_method): Remove the fixme too.
19695
19696 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19697
19698         * mini.c: As discussed, make the code actually free the delegate
19699         thunk now, to enable the debugging of delegate problems, use
19700         MONO_DEBUG=1 when running Mono. 
19701
19702         This takes also care of parts of the leaks as seen by Joe.
19703
19704 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19705
19706         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19707         thread_tls_offset calculation.
19708
19709 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19710
19711         * declsec.c: Reworked linkdemand checks for icall. The previous code
19712         was using the declaration code (untrusted) and didn't work as expected
19713         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19714         specific case.
19715
19716 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19717
19718         * iltests.il: Add new localloc test.
19719
19720         * mini-amd64.c: Handle large stack allocations the same way as on
19721         windows if stack overflow handling is working.
19722         
19723         * mini-amd64.c: Allocate the signal stack using mmap.
19724
19725         * mini.c (sigsegv_signal_handler): Fix reading of context.
19726
19727         * mini-exceptions.c: Fix up stack overflow handling.
19728
19729         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19730
19731         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19732
19733         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19734
19735         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19736
19737         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19738         tramp_init functions as they are no longer needed.
19739
19740 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19741
19742         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19743         
19744         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19745
19746         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19747         
19748         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19749         support that now.
19750
19751         * mini-ops.h: Add OP_LMUL_IMM.
19752
19753         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19754         long mul/div opcodes as intrinsic.
19755
19756         * mini-amd64.c (emit_call): Handle the case when the callee might be
19757         an AOT method.
19758
19759 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19760
19761         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19762         extra safe.
19763         
19764         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19765
19766         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19767
19768 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19769
19770         * mini.c (mono_codegen): Don't leak here, to help people running
19771         monogrind.
19772
19773 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19774
19775         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19776         conversions in sse2 mode.
19777
19778         * basic-float.cs: Add regression test.
19779         
19780         * mini-amd64.c: Reenable sse2.
19781
19782 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19783
19784         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19785
19786 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19787
19788         * driver.c: Copyright text should include 2005.
19789         
19790 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19791
19792         * cpu-amd64.md (load_membase): Fix more max lengths.
19793
19794 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19795
19796         * cpu-amd64.md (load_membase): Fix max length.
19797
19798         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19799
19800         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19801
19802         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19803         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19804
19805         * basic-float.cs: Add rounding regression test.
19806
19807         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19808
19809 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19810
19811         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19812         structures in registers for pinvoke wrappers.
19813
19814 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19815
19816         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19817
19818 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19821         wrapper to mono_jit_thread_attach.
19822
19823         * mini.c (mini_jit_thread_attach): New jit icall.
19824
19825         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19826         native->managed wrappers.
19827
19828         * exceptions.cs: Add new regression test.
19829
19830         * mini.c (optimize_branches): Check regions in the cbranch to throw
19831         block case as well. Fixes #73242.
19832
19833 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19834
19835         * mini.c: thread safety fixes.
19836
19837 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19838
19839         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19840         patching stuff, since delegates use jump trampolines so there is
19841         no caller.
19842
19843         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19844         jump trampolines.
19845         
19846         * tramp-amd64.c: Fix build.
19847
19848         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19849         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19850
19851         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19852         Rename this to mono_arch....
19853         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19854
19855         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19856
19857         * mini-amd64.c (emit_call): If both the caller and the callee is
19858         guaranteed to have 32 bit addresses, emit a normal call.
19859
19860         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19861
19862         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19863         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19864         method_ptr inside delegates.
19865
19866 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19867
19868         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19869         invalidated. Fixes #73001.
19870
19871         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19872
19873         * mini-x86.c: Only use stdcall for pinvokes on windows.
19874
19875 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19876
19877         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19878         * mini-x86.c: remove unreliable __thread var offset detection,
19879         use the correct accessors and enable by default.
19880
19881 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19882
19883         * mini.c (mono_jit_free_method): Fix memory leak.
19884
19885 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19888
19889 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19890
19891         * cpu-amd64.md: Fix lengths of atomic opcodes.
19892
19893 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19894
19895         * driver.c: try to not imply using ICU is any good.
19896
19897 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19900         functions as inline ops.
19901
19902         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19903         some Interlocked functions as inline ops.
19904
19905         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19906
19907         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19908
19909         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19910
19911         * mini.c: Add support for OP_NOT_TAKEN.
19912
19913         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19914         structures in registers for pinvoke wrappers.
19915
19916         * mini-amd64.c: Fix warnings.
19917
19918 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19919
19920         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19921
19922         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19923
19924         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19925         address instead of loading the address from it.
19926
19927         * mini-x86.c: Add support for returning small structs in registers
19928         on Win32. Fixes part of #70864.
19929         
19930 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19931
19932         * trace.c (get_token): Improve error checking.
19933
19934 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19935
19936         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19937
19938 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19939  
19940         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19941         it can be reused for MonoClass.
19942         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19943         _LINKDEMAND.
19944
19945 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19946
19947         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19948         instead of a MonoReflectionMethod. The method information wasn't used
19949         when displaying SecurityException details (but will be now).
19950
19951 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19952
19953         * Makefile.am : windows build fix.
19954
19955 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * iltests.il: Add new regression test.
19958
19959         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19960         #72522.
19961
19962 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19963  
19964         * mini.c: Moved linkdemand check into helper function check_linkdemand
19965         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19966         LDFTN, LDVIRTFTN).
19967
19968 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19969
19970         * declsec.c: Added statistics counter for different kinds of 
19971         LinkDemands.
19972         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19973         (and commented) declaration.
19974         * mini.c: Added statistics counter for security Demand code 
19975         generation. Added display of security statistics.
19976
19977 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19978
19979         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19980         Fix compilation errors under gcc-2.95.
19981
19982 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19983
19984         * mini.c, driver.c: Use the new jit trampoline hashtable
19985
19986 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19987
19988         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19989
19990 2005-02-11  Martin Baulig  <martin@ximian.com>
19991
19992         * debug-mini.c (mono_debug_close_method): Free the line number array.
19993
19994 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19995
19996         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19997         icalls.
19998
19999         * mini.h: Bump AOT file format version. 
20000
20001 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20002
20003         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20004         APTC and P/Invoke.
20005         * declsec.h: Added macros to get/set lazyly initialized security 
20006         informations about assemblies. Added new enum for different type of
20007         possible LinkDemand violation. Added function to check LinkDemands.
20008         * mini.h: Added a field to MonoCompile to hold any security violation
20009         detected when JITting a method (so it can be thrown later).
20010         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20011         and CEE_CALLVIRT. Added code to throw exception at the end of
20012         mini_method_compile (note: the exception is unhandled right now).
20013
20014 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20015
20016         * mini.c, jit-icalls.c: use the managed implementation of
20017         memset for initobj and memset, to avoid managed <-> unmanaged
20018         transitions.
20019
20020 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20021
20022         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20023         optimization if it would need a GOT var.
20024
20025         * basic.cs: Add tests for constant propagation and switch statements.
20026
20027         * ssa.c: Fix out-of-range constant propagation and switch statements.
20028
20029 2005-02-09    <vargaz@freemail.hu>
20030
20031         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20032
20033 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20034
20035         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20036
20037 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20038
20039         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20040
20041 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20042
20043         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20044         arithmetic operations.
20045
20046 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20047
20048         * mini-ppc.c: add a workaround for broken user code that
20049         DllImports vararg functions with non-vararg signatures.
20050
20051 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20054         meaningfull error message for assemblies written in Managed C++.
20055
20056         * tramp-amd64.c mini-amd64.h: Add support for 
20057         create_trampoline_from_token ().
20058
20059         * aot.c mini-x86.c abcremoval.c: Applied patch from
20060         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20061
20062 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20063
20064         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20065         which takes a MonoImage/token as parameter instead of a MonoMethod.
20066
20067         * aot.c: Use the new trampoline for initializing vtables.
20068
20069         * aot.c: Add support for ldfld/stfld_remote wrappers.
20070
20071         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20072         rules for compare <MEM>, IMM.
20073
20074         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20075
20076         * aot.c: Handle inherited finalizers correctly.
20077
20078 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20079
20080         * inssel.brg (stmt): Add a missing _setup_... ().
20081
20082         * aot.c: Save some parts of the class state to the AOT file and use it
20083         to recompute that state when a class is initialized.
20084
20085         * mini.c: Install AOT hooks into the runtime.
20086
20087         * mini.h: Bump AOT file format version.
20088         
20089         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20090         Fixes #72148.
20091
20092         * iltests.il: Add new test.
20093
20094 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20095
20096         * mini.c: fix typo.
20097
20098 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20099
20100         * mini.c: setup the statistical profiler in the thread attach
20101         callback to cope with the new single thread code.
20102
20103 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20104
20105         * mini-ppc.c: ensure we have enough room for the profiler
20106         calls (fixed bug#72084).
20107
20108 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20109
20110         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20111         it.
20112
20113 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20114
20115         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20116
20117 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20118
20119         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20120         to succesfully execute parrotbench).
20121         * ssapre.h: Likewise.
20122
20123 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20124
20125         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20126         variable for stores to method arguments (fixes a SSAPRE issue).
20127
20128 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20129
20130         * mini.c: handle value types in dup, fixes gen-112.cs.
20131
20132 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20133
20134         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20135         sequence for calls in dynamic methods to avoid thunks.
20136
20137 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20138
20139         * mini.c: correctly remove dynamic methods from the hashtable.
20140
20141 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20142
20143         * driver.c: Disabled SSAPRE until fix the bug that appears
20144         in IronPython's parrotbench.
20145
20146 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20147
20148         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20149
20150         * mini.c (mono_method_to_ir): Revert the previous change.
20151         
20152         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20153         when AOT compiling.
20154
20155         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20156         mono_jit_info_table_find () etc. when running under valgrind.
20157
20158         * inssel.brg: Fix warnings.
20159
20160         * mini-exceptions.c: Fix warnings.
20161
20162 2005-01-31  Martin Baulig  <martin@ximian.com>
20163
20164         * driver.c (compile_all_methods_thread_main): Don't try to compile
20165         generic methods or anything which has type parameters.
20166
20167 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20168
20169         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20170
20171         * TestDriver.cs: Add --verbose flags.
20172
20173         * graph.c ssa.c: Fix 64 bit warnings.
20174         
20175         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20176         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20177         Fix 64 bit warnings.
20178
20179         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20180         variable not spotted by gcc.
20181         
20182         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20183         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20184         X86_COMPARE_MEMBASE opcodes.
20185
20186         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20187
20188 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20189
20190         * *: MonoMethod->signature might be NULL now. You *MUST* use
20191         mono_method_signature.
20192
20193 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20194
20195         * driver.c (compile_all_methods_thread_main): Compile the methods
20196         without invoking cctors.
20197
20198 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20199
20200         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20201         * basic-calls.cs: test for the above.
20202
20203 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20204
20205         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20206         MonoJitInfo changes.
20207
20208 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20209
20210         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20211         eagerly if it contains dynamic methods.
20212         
20213         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20214
20215         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20216         trace, it is now computed by an icall from trace_ips.
20217         
20218         * mini-exceptions.c: Fix a warning.
20219
20220 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20221
20222         * mini-exceptions.c: don't bother getting stack trace info if
20223         it's not going to be used.
20224
20225 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20226
20227         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20228         ssapre-mini-ops.h.
20229
20230 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20231
20232         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20233
20234         * aot.c: Avoid calling mono_method_get_header () if not needed.
20235
20236         * mini.h: Bump AOT file format version.
20237         
20238         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20239
20240         * mini.c (mono_print_tree): Print more info for calls.
20241
20242 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20243
20244         * declsec.h: Remove warning by adding missing include for marshal.h
20245
20246 2005-01-26  Martin Baulig  <martin@ximian.com>
20247
20248         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20249         `ip' twice.
20250
20251 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20252
20253         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20254         flags.
20255
20256         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20257
20258         * aot.c (mono_compile_assembly): Fix a warning.
20259
20260 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20261
20262         * declsec.c: Look for security attributes on the original MonoMethod 
20263         (and not the wrapped one). This fix permissions on icalls.
20264
20265 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20266
20267         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20268
20269         * mini.c (mono_allocate_stack_slots): Add a fixme.
20270
20271         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20272
20273 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20274
20275         * inssel.brg: optimize casts of sealed types (more
20276         optimizations waiting for fixes in remoting).
20277
20278 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20279
20280         * inssel.brg (stmt): Add another dummy rule.
20281
20282         * driver.c: Fix warnings.
20283
20284         * driver.c (mono_main): If running under valgrind, instruct glib to use
20285         the system allocation functions so valgrind can track the memory
20286         allocated by the g_... functions.
20287
20288         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20289
20290         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20291
20292         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20293
20294         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20295         variables in try regions.
20296
20297         * mini.c (mini_method_compile): Don't disable optimizations on large
20298         methods when AOT compiling.
20299
20300         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20301         allocate stack slots. Not yet used.
20302
20303 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20304
20305         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20306
20307 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20308
20309         * mini-ppc.c: make the branch info relative as the code
20310         buffer can be reallocated.
20311
20312 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20313
20314         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20315         * driver.c: Removed the AOT/security restriction. Now initialize the
20316         security manager (in metadata) if --security is used.
20317         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20318         rather than the pointer to declarative security, when AOT is used.
20319
20320 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20321
20322         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20323         basic blocks, reduced intrinsic exception throwing code size.
20324
20325 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20326
20327         * driver.c (mini_usage): Reorder the usage screen.
20328
20329 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20330
20331         * mini.c (mono_resolve_patch_target): Fix warning.
20332
20333 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20334
20335         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20336         previous patch.
20337
20338         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20339
20340         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20341         breaks the amd64 build.
20342
20343         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20344         register allocation. Fixes #71454.
20345
20346         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20347
20348         * arrays.cs: Add new regression test.   
20349
20350 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20351
20352         * ssapre.c: Turned usage of snprintf to GString.
20353         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20354         (I left it on by mistake in my previous commit).
20355
20356 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20357
20358         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20359         on cond branch optimization (fixes bug# 71515).
20360
20361 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20362
20363         * abcremoval.c: Fixed bug 71062.
20364         * abcremoval.h: Likewise.
20365
20366 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20367
20368         * mini.c: Added a new functionality to optimize_branches, the removal
20369         of useless basic blocks, and fixed some problem in the removal of
20370         critical edges; some utility functions added for both purposes.
20371         * ssapre.c: Added complex expression support, and fixed bug 70637.
20372         * ssapre.h: Likewise.
20373         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20374         enabled in SSAPRE.
20375         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20376         * driver.c: Re-enabled SSAPRE.
20377
20378 2005-01-19  Martin Baulig  <martin@ximian.com>
20379
20380         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20381         the result of mono_get_method_constrained().
20382
20383 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20384
20385         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20386         manager.
20387
20388 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20389
20390         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20391         be detected.  Fixes #59296.
20392
20393 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20394
20395         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20396         which can happen. Fixes #71361.
20397
20398 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20399
20400         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20401         manager.
20402
20403 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20404
20405         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20406         appdomain-unload.exe to fail.
20407         
20408         * mini.c: Fix some memory leaks.
20409
20410 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20411
20412         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20413         Fixed bug and sped up some codepaths.
20414
20415 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20416
20417         * mini.c: Fix some memory leaks.
20418
20419         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20420         conversion.
20421
20422         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20423
20424         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20425         #71320.
20426
20427         * iltests.il: Add regression test for #71320.
20428
20429 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20430
20431         * mini.c (mono_codegen): Fix installation of profiler hooks.
20432
20433         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20434
20435 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20436
20437         * mini.h, mini.c, cfold.c: optimize access to enum
20438         readonly fields, too. Eval conditional branches if possible
20439         to perform unreachable code removal in more cases.
20440
20441 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20442
20443         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20444
20445         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20446         code manager.
20447
20448         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20449         WinXP DEP. Fixes #71244.
20450
20451 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20452
20453         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20454
20455 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20456
20457         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20458
20459 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20460
20461         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20462         changes.
20463
20464         * mini.h: Bump AOT version.
20465
20466         * mini.h (MonoCompile): Change exvar to a hash table.
20467
20468         * mini.c: Allocate a separate exvar for each handler block.
20469
20470         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20471
20472         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20473         ex var with the pending exception and only throw if the two are equal.
20474         Fixes #68552.
20475         
20476         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20477
20478         * mini-x86.c: Fix warnings.
20479
20480         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20481         used by all the ports now.
20482
20483         * aot.c: Add write-symbols and save-temps options.
20484
20485 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20486
20487         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20488
20489 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20490
20491         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20492         operations.
20493
20494         * tramp-s390.c: Check vtable slot belongs to the domain.
20495
20496         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20497         as per other platforms.
20498
20499         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20500
20501 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20502
20503         * driver.c: we don't run the Main() code in a subthread anymore.
20504
20505 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20506
20507         * mini.c: added experimental rtc support in the statistical
20508         profiler: if the user has the permission, more accurate statistics
20509         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20510         The MONO_RTC value must be restricted to what the linux rtc allows:
20511         power of two from 64 to 8192 Hz.
20512
20513 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20514
20515         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20516
20517 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20518
20519         * mini-ppc.c: better icache flush for smp.
20520
20521 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20524
20525         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20526         amd64 port, not yet used.
20527
20528 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20529
20530         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20531         a struct type.
20532
20533 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20534
20535         * driver.c: Added --security option to activate the security manager.
20536         Right now this will allow code generation for declarative demands and
20537         is disabled when AOT is specified.
20538         * mini.c: Add code generation for declarative security demands.
20539         * mini.h: Add mono_use_security_manager as an extern gboolean.
20540
20541 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20542
20543         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20544         emitting more dense assembly code.
20545
20546         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20547         exception throwing stuff.
20548
20549 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20550
20551         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20552         dead code.
20553
20554         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20555         left in by mistake.
20556
20557         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20558         fixed.
20559
20560         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20561
20562         * tramp-*.c: Only patch vtable slots if the object is in the current
20563         domain. Fixes appdomain-unload.exe.
20564
20565         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20566         
20567         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20568         x86 branch.
20569
20570 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20571
20572         * mini.c (reverse_branch_op): New helper function.
20573
20574         * mini.c (optimize_branches): Run the new optimization only on 
20575         platforms which support it. Also reverse all kinds of branches.
20576
20577         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20578
20579         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20580         a throw statement.
20581
20582         * mini.c (optimize_branches): Reverse not-equals branches if the false
20583         bblock is a throw. This happens a lot of time with argument checking in
20584         corlib.
20585
20586         * mini.c (mono_codegen): Add support for placing basic blocks after
20587         the function epilogue.
20588
20589         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20590         function epilogue.
20591         
20592 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20593
20594         * mini.c (setup_stat_profiler): Only set this up if the platform
20595         supports ITIMER_PROF.
20596
20597 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20598
20599         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20600         previous patch.
20601
20602         * inssel.brg: Fix a warning.
20603
20604 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20605
20606         * mini.c: added support for statistical profiler 
20607         (run with: --profile=default:stat).
20608
20609 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20610
20611         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20612
20613         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20614
20615         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20616         related to global registers from the amd64 port.
20617
20618 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20619
20620         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20621
20622         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20623         with global registers.
20624         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20625
20626         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20627
20628 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20629
20630         * debug-mini.c (encode_value): Fix off-by-one.
20631
20632         * aot.c (encode_value): Likewise.
20633
20634         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20635
20636 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20637
20638         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20639         AOT.
20640
20641         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20642         
20643         * aot.c (emit_method_info): Increase size of temp buffer.
20644
20645         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20646         the AOT case.
20647
20648 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20649
20650         * aot.c (emit_method_info): Fix build.
20651         
20652         * aot.c: Further rework of the AOT file format to reduce the size of
20653         the method info data.
20654
20655         * mini.h: Bump AOT file format version.
20656
20657 2004-12-27  Martin Baulig  <martin@ximian.com>
20658
20659         * mini.c (mini_get_method): New static method; call
20660         mono_get_method_full() and mono_get_inflated_method().
20661         (mono_method_to_ir): Use mini_get_method() instead of
20662         mono_get_method_full(). 
20663
20664 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20665
20666         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20667
20668 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20669
20670         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20671
20672         * inssel-amd64.brg: Add some optimization rules.
20673
20674 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20675
20676         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20677         standard not GC'd stuff is fine.
20678
20679 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20680
20681         * aot.c: Rework the AOT file format to get rid of most of the global
20682         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20683
20684         * mini.h: Bump AOT file format version.
20685         
20686 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20687
20688         * mini.h: Bump AOT file format version.
20689
20690         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20691         address is inside a GOT.
20692
20693         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20694
20695         * cpu-pentium.md: Increase the maximum size of some instructions which
20696         might involve a got access.
20697         
20698         * mini.c (get_method_from_ip): Another debug helper function.
20699
20700         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20701         when got var accesses are created during the decompose phase.
20702
20703         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20704
20705         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20706         argument mini_compile_method and to MonoCompile, and use this to
20707         determine whenever a given method is compiled for AOT. This allows the
20708         other methods compiled during AOT compilation to be free of AOT stuff,
20709         so the backends does not need to add special support for them by
20710         creating a fake GOT etc.
20711
20712         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20713         longer needed.
20714
20715 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20716
20717         * mini.c (mono_method_to_ir): It turns out that some of the
20718         x-appdomain wrappers are lax with types, so just ignore this for
20719         all wrappers.
20720
20721         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20722         at the vtable->klass. If it is non-shared code we can just use the
20723         vtable.
20724
20725 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20726
20727         * mini-ppc.c: access MonoDomain from tls, too.
20728
20729 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20730
20731         * declsec.c: Removed unused variable (and related warning ;-)
20732
20733 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20734
20735         * iltests.il: New test for LDELEMA on an array of ref types.
20736
20737         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20738         all ldelema's on reftypes.
20739         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20740         it was the wrong place to put it.
20741
20742         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20743         register to pop to make this cleaner, at the request of Paolo.
20744
20745 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20746
20747         * mini-ops.h (OP_GETHASHCODE): New op.
20748
20749         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20750
20751         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20752         operation.
20753
20754         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20755         by 25%.
20756         
20757         * mini-x86.c (mono_arch_output_basic_block): Rather than
20758
20759         add ebp, 4
20760
20761         Emit
20762
20763         pop edx
20764
20765         The first is 3 bytes while the second is 1. This saves 36 kb on
20766         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20767         see a small boost because of icache locality.
20768
20769         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20770
20771 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20772
20773         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20774         started code sharing with the generic code.
20775
20776 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20777
20778         * mini-ppc.c, cpu-g4.md: added code for direct access to
20779         tls data slots.
20780
20781 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20782
20783         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20784          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20785         to OP_TLS_GET.
20786
20787 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20788
20789         * declsec.c|h: Added functions to cache the declarative stack modifiers
20790         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20791         structure.
20792         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20793         created. Register internal calls for System.Security.SecurityFrame::
20794         _GetSecurityFrame and _GetSecurityStack.
20795         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20796         the definitions for the new stack walk/callback mechanism.
20797         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20798         first security frame for LinkDemands and InheritanceDemands) and
20799         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20800         from lupus.
20801         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20802         walk initialization (lupus).
20803
20804 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20805
20806         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20807         idiom.
20808         (handle_loaded_temps): Do not create a temporary variable for
20809         things that we know are temps. They will never be modified.
20810         (mono_spill_call): Set MONO_INST_IS_TEMP
20811         (mono_emulate_opcode): ditto
20812         (emit_tree): ditto
20813         (mono_method_to_ir.CEE_DUP): ditto
20814
20815 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20816
20817         * mini.c (type_to_eval_stack_type): Make this handle the void type
20818         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20819         (emit_tree): use ip_in_bb to special case some common idioms
20820         Update all callers to pass in the IP.
20821         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20822
20823         This gives us a nice 2% speedup in mcs bootstrap.
20824
20825         * mini-x86.c (peephole_pass): Peephole pass to make
20826         mov  [foo], eax
20827         push [foo]
20828
20829         into
20830
20831         mov [foo], eax
20832         push eax
20833
20834         * mini.c (ip_in_bb): new method.
20835         (mono_method_to_ir): use this method rather than doing the hash
20836         lookup ourselves.
20837
20838         * linear-scan.c (mono_linear_scan): When expiring actives, you
20839         don't need to keep around variables that expire on this
20840         instruction. This makes it so that:
20841              a = b + 1
20842         will turn into:
20843              store (ebx add (ebx, 1))
20844         which will become
20845              add ebx, 1
20846
20847 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20848
20849         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20850         combination to avoid doing two copies. Fix up problems with previous
20851         patch.
20852
20853         * mini.c: Fix 64 bit warnings.
20854
20855         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20856
20857 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20858
20859         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20860         changes from the x86 code.
20861
20862         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20863
20864 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20865
20866         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20867         throwing code to reduce its size, unify the AOT and non-aot code and 
20868         get rid of relocations in the AOT case.
20869
20870         * mini-x86.h mini.c exceptions-x86.c 
20871         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20872         raise corlib exceptions which doesn't require relocations in the 
20873         caller.
20874
20875         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20876
20877 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20878
20879         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20880         needed.
20881
20882         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20883         in the AOT case.
20884
20885 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20886
20887         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20888         with add function when used from Inc/dec atomic 
20889         functions. Re-enabled optimization on x86.
20890         * mini-ops.h: renamed atomic_add functions to
20891         allow _add to match the Interlocked::Add and
20892         _add_next to match Interlocked::Inc/Dec.
20893
20894 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20895
20896         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20897         linking of BBs to the end BB, and enabled SSAPRE also with
20898         consprop and copyprop (which was prevented by that bug).
20899
20900 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20901
20902         * mini-x86.c: disabling the Interlocked optimizing code. 
20903
20904 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20905
20906         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20907         file version check.
20908         
20909 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20910
20911         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20912         interlocked optimization due lack of support on x86, rewrote 
20913         exchange to take into account that base may be in eax.
20914         
20915         xsp works again; activated Interlocked optimizing code.
20916         
20917 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20918
20919         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20920
20921 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20922
20923         * mini-ops.h: Add new opcodes.
20924
20925         * mini.h: Add new patch types. Add got_var to MonoCompile.
20926
20927         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20928         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20929         make it work with all kinds of patchable code.
20930
20931         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20932         address of the GOT, and referencing entries in the GOT.
20933
20934         * mini.c: Add code to load the GOT address if needed by an opcode.
20935
20936         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20937         independent AOT code on the x86 using an elf-style Global Offset Table.
20938
20939 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20940
20941         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20942
20943 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20944
20945         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20946         when running xsp.
20947
20948 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20949
20950         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20951         of Interlocked:Increment/Decrement/Add as inline ops.
20952         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20953
20954 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20955
20956         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20957         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20958
20959 2004-12-12  Duncan Mak  <duncan@ximian.com>
20960
20961         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20962         again. `patch_info->table_size' is no longer valid after Zoltan's
20963         commit #37636.
20964
20965 2004-12-12  Martin Baulig  <martin@ximian.com>
20966
20967         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20968         if we are the "real" method, ie. not an inlined method inside it.
20969
20970 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20971
20972         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20973         before we look in the special fields table. This fixes
20974         ../tests/thread-static-init.cs.
20975
20976 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20977
20978         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20979         for Array get_Rank and get_Length. Fixes bug #70465.
20980
20981 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20982
20983         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20984         separate structure to reduce the size of MonoJumpInfo.
20985
20986 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20987
20988         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20989
20990 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20991
20992         * mini.c (mini_get_inst_for_method): Changed to allow ports
20993         to return a MonoInst instead of opcode 
20994         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20995         
20996         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20997         Allow ports to return a created MonoInst instead of op-code, will enable
20998         new optimizations.
20999         (renamed mini_get_opcode_for_method to better reflected the functionality)
21000
21001 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21002
21003         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21004
21005 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21006
21007         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21008         Fixes #69985.
21009
21010 2004-12-08  Martin Baulig  <martin@ximian.com>
21011
21012         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21013         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21014
21015 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21016
21017         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21018         correctly.
21019
21020         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21021         arithmetic.
21022
21023 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21024
21025         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21026
21027 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21028
21029         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21030         bug introduced by the previous patch.
21031
21032 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21033
21034         * mini-ppc.c, objectc.cs: handle large structs passed by value
21035         (fixes bug #69972).
21036
21037 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21038
21039         * mini-ppc.c: OP_ARGLIST implementation from
21040         Geoff Norton  <gnorton@customerdna.com>.
21041
21042 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21043
21044         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21045         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21046
21047 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21048
21049         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21050
21051 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21052
21053         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21054         support.
21055
21056 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21057
21058         * mini-sparc.c: Zero out localled-ed memory.
21059
21060         * iltests.il: Add tests for zeroing out localloc-ed memory.
21061
21062 2004-12-04  Martin Baulig  <martin@ximian.com>
21063
21064         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21065         mono_method_get_signature_full().       
21066
21067 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21068
21069         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21070         and some utility functions (always for SSAPRE), integrated SSAPRE.
21071         * mini.h: Likewise.
21072         * driver.c: Added ssapre option.
21073         * ssa.c: Small fix on OP_ARG handling.
21074         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21075         * Makefile.am: Likewise.
21076
21077 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21078
21079         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21080         now in the xp code.
21081
21082         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21083         icall.
21084
21085 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21086
21087         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21088         
21089         * cpu-s390.md : Increase instruction length of oparglist.
21090
21091         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21092
21093 2004-11-30  Martin Baulig  <martin@ximian.com>
21094
21095         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21096         virtual generic methods.  We call a special helper_compile_generic_method()
21097         icall to retrieve the method from the vtable, inflate and compile
21098         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21099
21100         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21101
21102 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21103
21104         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21105
21106 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21107
21108         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21109         Fixes #69929.
21110
21111 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21112
21113         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21114         platforms with PIC aot.
21115
21116 2004-11-28  Martin Baulig  <martin@ximian.com>
21117
21118         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21119         Fixes gen-112.cs.
21120
21121 2004-11-28  Martin Baulig  <martin@ximian.com>
21122
21123         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21124         the result of mono_type_get_underlying_type() to check whether
21125         we're byref.
21126
21127 2004-11-26  Martin Baulig  <martin@ximian.com>
21128
21129         * mini.c
21130         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21131         in the g_assert().
21132
21133 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21134
21135         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21136         the same way as the other arguments so they won't get clobbered.
21137
21138         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21139         calls through R11 since it is clobbered by the trampoline code.
21140
21141 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21142
21143         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21144         pick up in-tree mscorlib.dll.
21145
21146 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21147
21148         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21149
21150         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21151         runtime data/code are now stored in a table similar to the GOT in ELF. 
21152         This allows the code itself to be position independent.
21153
21154         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21155         loading changes.
21156
21157         * aot.c: Attach ELF type (object/function) directives to all global
21158         symbols.
21159
21160         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21161
21162         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21163
21164         * mini-amd64.h: Turn on PIC AOT code.
21165
21166         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21167         returning the offset within an OP_AOTCONST instruction where the GOT
21168         offset needs to be added.
21169
21170         * mini.h: Bump AOT file format version.
21171
21172 2004-11-25  Martin Baulig  <martin@ximian.com>
21173
21174         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21175         uninflated generic methods.
21176
21177 2004-11-25  Martin Baulig  <martin@ximian.com>
21178
21179         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21180
21181 2004-11-24  Martin Baulig  <martin@ximian.com>
21182
21183         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21184         original klass (this only applies for generic instances).
21185
21186 2004-11-24  Martin Baulig  <martin@ximian.com>
21187
21188         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21189         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21190         that array).
21191
21192 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21193
21194         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21195         localloc. Fixes #69678.
21196
21197         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21198         
21199 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21200
21201         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21202         used SSE registers on pinvoke calls. Fixes #69774.
21203
21204 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21205
21206         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21207         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21208
21209 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21210
21211         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21212         Refer directly to the mcs/ tree.
21213
21214 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21215
21216         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21217         Check if a trampoline for a synchronized method is required. 
21218
21219 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21220
21221         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21222         with localloc if needed. Throe arithmetric exception in
21223         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21224         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21225
21226 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21227
21228         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21229         types before switching on type.  Fixes #69622.
21230
21231 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21232
21233         * Makefile.am (check-local): New.  Integrate into 'make check'.
21234         (MCS,RUNTIME): Define using in-tree mono and mcs.
21235         (ILASM): New.
21236         (%.exe): Use $(ILASM).
21237
21238 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21239
21240         * mini-ppc.c: adjust initial prolog size (bug #69691).
21241
21242 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21243
21244         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21245         #69664.
21246
21247 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21248
21249         * Makefile.am (clean-local): Rename from 'clean'.
21250
21251 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21252
21253         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21254         to mono_arch_is_int_overflow. 
21255         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21256         SIGFPE events.
21257
21258 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21259
21260         * declsec.c|h: New files to support declarative security attributes.
21261         Added function to check if a method has (applicable) security.
21262         * mini.c|h: Add check for declarative security attributes in
21263         mono_method_check_inlining.
21264         * Makefile.am: Added declsec.c and declsec.h to the build.
21265
21266 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21267
21268         * mini.c, mini.h: update to keep dynamic code info per-domain.
21269
21270 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21271
21272         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21273         (mini_init): Get rid of it from here too.
21274
21275 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21276
21277         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21278         implemented OP_RETHROW (patch by Geoff Norton
21279         <gnorton@customerdna.com>).
21280
21281 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21282
21283         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21284         between appdomains.  Fixes appdomain-unload on PPC.
21285
21286 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21287
21288         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21289         mini-exceptions.c: handle the new wrapper types.
21290         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21291         token value as a MonoClass* when compiling a wrapper.
21292         mono_jit_create_remoting_trampoline now takes an additional
21293         MonoRemotingTarget parameter.
21294         
21295 2004-11-10  Martin Baulig  <martin@localhost>
21296
21297         * mini.c (mono_method_to_ir): Use `generic_container->context'
21298         rather than creating a new one.
21299
21300 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21301
21302         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21303
21304         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21305
21306 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21307
21308         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21309         the experimental aot cache stuff.
21310
21311 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21312
21313         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21314         mini-exceptions.c: update to exception clause structure changes.
21315
21316 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21317
21318         * exceptions-x86.c (throw_exception): Fix warnings.
21319
21320         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21321         for OP_RETHROW.
21322
21323 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21324
21325         * exceptions-sparc.c (get_throw_exception): Really fix this.
21326
21327 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21328
21329         * tramp-*.c: we no longer support icalls without wrappers, so
21330         a bit of code can be removed here
21331
21332 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21333
21334         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21335         patch.
21336
21337         * cpu-sparc.md: Add op_rethrow.
21338
21339         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21340
21341         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21342
21343         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21344         * mini-ops.h: Add OP_RETHROW.
21345
21346         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21347
21348         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21349
21350 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21351         
21352         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21353         Makes the output much easier to read
21354
21355 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21356
21357         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21358         prevents another huge leak when compiling with ssa. Secondly, the
21359         performance of doing this rather than freeing the lists is much
21360         better. GList does a lock every time you allocate a list link,
21361         so that it can use a memory pool. So, it is better to just use
21362         a memory pool of our own.
21363         
21364         * ssa.c, linear-scan.c: replace g_list_remove_link with
21365         g_list_delete.  The remove one does not free the GList, so we were
21366         leaking memory. On -O=all --compile-all with corlib, this cut down
21367         3 MB of allocations.
21368
21369 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21370
21371         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21372
21373         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21374
21375         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21376         into a new function mono_create_jit_trampoline ().
21377
21378 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21379
21380         * trace.c (get_spec): Allow tracing of classes without a namespace.
21381
21382 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21383
21384         * mini.c: Fix pointer overwrite in mini_method_compile.
21385
21386 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21387
21388         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21389         The darwin ABI needs some special handling for 1 and 2 byte structs
21390         Lets use lbz/lhz instead of lwz everywhere.
21391         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21392         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21393         Use stb/sth for the former, and put the latter always on stack instead of in
21394         argument registers.
21395
21396 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21397
21398         * trace.c (is_filenamechar): Add '_'.
21399
21400 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21401
21402         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21403
21404         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21405
21406 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21407
21408         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21409         depends on libmonogc. Fixes #68805.
21410
21411 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21412
21413         * mini.c (mono_jit_free_method): Provide extra information for
21414         this error.  Currently this leaks, but will be turned into a
21415         developer option in the future.
21416
21417 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21418
21419         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21420
21421 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21422
21423         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21424         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21425         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21426
21427 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21428
21429         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21430         trampolines for AOT code.
21431
21432 2004-10-22    <vargaz@freemail.hu>
21433
21434         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21435         constructed types. Fixes #68136.
21436
21437 2004-10-21  Martin Baulig  <martin@ximian.com>
21438
21439         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21440         if it returns true, unwind the stack to the call instruction.
21441
21442 2004-10-21    <vargaz@freemail.hu>
21443
21444         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21445
21446         * mini.h: Bump AOT version number.
21447
21448         * objects.cs: Add another test for unbox trampolines.
21449
21450         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21451         valuetype methods.
21452
21453 2004-10-20    <vargaz@freemail.hu>
21454
21455         * driver.c: Add SHARED to the set of optimizations tested.
21456
21457         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21458
21459         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21460         used by CEE_NEWARR.
21461
21462         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21463
21464 2004-10-20  Martin Baulig  <martin@ximian.com>
21465
21466         * mini-exceptions.c (mono_handle_exception): Call
21467         mono_debugger_handle_exception() to tell the debugger about
21468         catch/finally clauses.
21469
21470 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21471
21472         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21473
21474         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21475         #68447.
21476
21477 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21478
21479         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21480         methods as their native size, fixed bug #57543, #57545.
21481         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21482         This saves a temporary register and mullw call down into 1 (minor perf
21483         increase for cases like sum = sum * 5;  This use to translate into:
21484             li r11,5
21485             mullw r28,r28,r11
21486         It now translates to
21487             mulli r28,r28,5
21488
21489 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21490
21491         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21492         #68388.
21493
21494 2004-10-11  Martin Baulig  <martin@ximian.com>
21495
21496         * mini.c (mono_method_to_ir): If we're a generic method, get the
21497         MonoGenericContainer from our MonoMethodNormal and create a
21498         MonoGenericContext from it.
21499
21500 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21501
21502         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21503
21504         * basic-long.cs: Add test for checked i8->i2 cast.
21505
21506 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21507
21508         * inssel-ppc.brg: added a couple of speedup rules.
21509
21510 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21511
21512         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21513         to speed up rebuilds.
21514
21515 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21516
21517         * mini-s390.c: Minor fix to OP_OR_IMM.
21518
21519 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21520
21521         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21522         better. Fixes appdomain-unload.exe on sparc.
21523
21524 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21525
21526         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21527         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21528         see bug 67324.
21529
21530 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21531
21532         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21533
21534 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21535
21536         * mini.c: Always generate a field read/write wrapper for members
21537         of the class MarshalByRefObject since the actual instance could
21538         be a CBO.
21539
21540 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21541
21542         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21543
21544 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21545
21546         * driver.c mini.h trace.c: Move the setting of the main assembly into
21547         a separate function called mono_trace_set_assembly () and call it after
21548         actually loading the main assembly. Fixes #66872.
21549
21550 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21551
21552         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21553         using the code manager.
21554
21555 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21556
21557         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21558
21559 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21560
21561         * cpu-amd64.md: Fix bug in previous patch.
21562         
21563         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21564         #66650.
21565
21566 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21567
21568         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21569         mini-exceptions.c: updates for changed stack walk interface.
21570
21571 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21572
21573         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21574
21575 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21576
21577         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21578
21579 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21580
21581         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21582         since assemblies can't be unloaded.
21583         
21584 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21585
21586         * cpu-amd64.md: Fix more instruction lengths.
21587
21588         * cpu-amd64.md: Fix lengths of some instructions.
21589
21590 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21591
21592         * inssel.brg: Make the array ldelema check aot friendly.
21593
21594 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21595
21596         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21597
21598         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21599
21600 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21601
21602         * mini-x86.c: Fix build.
21603
21604         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21605         mono_type_get_underlying_type () helper function to simplify code.
21606         
21607 2004-09-09  Martin Baulig  <martin@ximian.com>
21608
21609         * mini-amd64.c: Don't access `type->data.klass' directly, call
21610         mono_class_from_mono_type() instead since the type may be a
21611         generic instance.
21612
21613 2004-09-09  Martin Baulig  <martin@ximian.com>
21614
21615         * mini-amd64.c (get_call_info): Fix support for generic instances.
21616         (add_valuetype): Use mono_class_from_mono_type() to get the class
21617         since we can be a generic instance.
21618
21619 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21620
21621         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21622
21623 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21624
21625         * liveness.c: reset spill costs on each scan: bug 62107
21626
21627 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21628
21629         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21630         unnecessary line that doesn't compile
21631
21632 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21633
21634         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21635         trampolines, make them call an error function so people can fix their
21636         code.
21637
21638 2004-09-06  Martin Baulig  <martin@ximian.com>
21639
21640         * mini.c (mono_method_to_ir): When initializing locals, handle a
21641         generic instances like a valuetype if it's a valuetype and like a
21642         class if it's a class.
21643
21644 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21645
21646         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21647         stack. Fixes #64674.
21648
21649         * exceptions.cs: Add test for unwinding of call arguments.
21650
21651 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21652
21653         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21654         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21655         set the carry/borrow flag). The sparc and s390 implementations
21656         can now use optimized versions (and simplify the code). ppc bugfixes.
21657
21658 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21659
21660         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21661
21662 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21663
21664         * inssel-amd64.brg: Remove leftover 32 bit rule.
21665
21666         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21667
21668 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21669
21670         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21671         mono_arch_find_jit_info functions into a new function. Fix a memory
21672         leak.
21673
21674         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21675         refactored code.
21676         
21677 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21678
21679         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21680         as well.
21681         
21682         * exceptions.cs: Add array size tests.
21683
21684         * mini.c: Allocate a separate icall wrapper for each arity of 
21685         mono_array_new_va. Fixes #59509.
21686
21687         * exceptions.cs: Add testcase for 64578.
21688
21689         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21690
21691         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21692         
21693 2004-09-02  Martin Baulig  <martin@ximian.com>
21694
21695         * mini.c (mono_method_to_ir): When initializing the locals, call
21696         handle_initobj() on the generic instance itself, not its
21697         underlying type.
21698
21699 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21700
21701         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21702         MonoJitInfo for dynamic methods.
21703
21704         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21705
21706         * mini.c: Add support for freeing JIT data for dynamic methods.
21707         
21708 2004-09-01  Martin Baulig  <martin@ximian.com>
21709
21710         * mini-x86.c (is_regsize_var): Added support for generic
21711         instances.
21712         (mono_arch_emit_prolog): Make this compile again, use
21713         `x86_push_imm_template (code)'.
21714
21715 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21716
21717         * mini-x86.c: make all push_imm instructions that get
21718         patched always emit the long form
21719
21720 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21721
21722         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21723         in a per-domain hash.
21724
21725         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21726         types.
21727
21728 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21729
21730         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21731         work.
21732         
21733         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21734         work.
21735
21736         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21737         Beginnings of SSE2 support.
21738
21739         * exceptions.cs: Add more tests for checked int<->uint casts.
21740
21741 2004-08-28  Martin Baulig  <martin@ximian.com>
21742
21743         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21744         generic instances.
21745
21746         * mini.c
21747         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21748         Handle generic instances recursively.
21749
21750 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21751
21752         * iltests.il: test for conv.u8 on a constant
21753
21754 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21755
21756         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21757         LCONV_x4 (shrun_32 (membase)).
21758
21759 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21760
21761         * inssel-x86.brg: c&p rules for push/setret of long
21762
21763 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21764
21765         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21766         compare (regvar, base)
21767
21768         * inssel-x86.brg: more burg love
21769
21770         * inssel.brg: more cleanup
21771
21772         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21773
21774 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21775
21776         * basic-long.cs, basic-calls.cs: new tests for optimization.
21777
21778 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21779
21780         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21781         patch.
21782
21783 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21784
21785         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21786         
21787 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21788
21789         * inssel.brg (mini_emit_memcpy): use 
21790         NO_UNALIGNED_ACCESS to disable memcpy optimization
21791
21792 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21793
21794         * mini-amd64.c: Handle generic types in various places.
21795
21796         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21797
21798 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21799
21800         * mini.c (handle_box): Fix warning.
21801
21802         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21803
21804         * mini-amd64.h: Enable the emit_state optimization.
21805
21806         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21807
21808         * mini-amd64.c: Add some new 64 bit peephole opts.
21809
21810         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21811
21812         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21813
21814         * mini-amd64.c: Register allocator fixes.
21815
21816         * mini.c: Add an optimization to emit_state to avoid allocation of new
21817         registers on some platforms.
21818
21819 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21820
21821         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21822
21823         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21824         allocation. Fixes #63085.
21825
21826         * basic-long.cs: Add new regression test.
21827
21828         * mini-amd64.c: Register allocator improvements.
21829
21830 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21831
21832         * mini-amd64.c (read_tls_offset_from_method): Add another code
21833         sequence.
21834
21835         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21836         instruction sequence for nullifying class init trampolines.
21837
21838         * objects.cs: Add new regalloc test.
21839
21840         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21841
21842 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21843
21844         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21845         
21846         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21847         arguments.
21848
21849         * driver.c: Fix profiling after TLS changes.
21850         
21851         * driver.c (mono_main): Set mono_stats.enabled if needed.
21852
21853         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21854         CEE_BOX.
21855
21856 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21857
21858         * mini-x86.c: use a 1 op rather than a 2 op tls access
21859         instruction -> faster.
21860
21861 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21864         x86 backend.
21865
21866 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21867
21868         * exceptions-sparc.c (throw_exception): fix typo
21869
21870 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21871
21872         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21873         set tree->dreg correctly with tls. Allow any
21874         register to be used.
21875
21876         * mini-x86.c (read_tls_offset_from_method): add new code
21877         generation pattern seen with GCC.
21878
21879
21880 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21881
21882         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21883         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21884         exceptions-sparc.c: fix some performance issues in exception
21885         handling and setting of the stack trace for exceptions that were
21886         already thrown.
21887
21888 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21889
21890         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21891         x86 backend.
21892         
21893         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21894         registers.
21895
21896 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21897
21898         This patch inlines tls access, when possible.
21899         
21900         * mini.h: new arch functions for TLS intrinsics.
21901         All platforms updated with a stub.
21902
21903         * mini.c: use the new intrinsics
21904
21905         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21906         arch specific intrinsic for tls variables
21907
21908 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21909
21910         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21911         under windows.
21912
21913 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21914
21915         * mini.c: thread local allocation
21916
21917 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21918
21919         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21920
21921         * Makefile.am: Link against the static version of libmonogc.
21922         
21923         * Makefile.am: Link the static versions of the convenience libraries
21924         into the mono executable.
21925
21926         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21927
21928 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21929
21930         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21931         on integer overflow.
21932
21933         * mini-amd64.c: Reorganize function call code.
21934
21935         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21936
21937 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21938
21939         * inssel-x86.brg: use xor eax,eax.
21940         
21941         * basic.cs: new tests
21942
21943 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21944
21945         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21946         in exception throwing code.
21947         
21948 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21949
21950         * inssel-x86.brg: use xor esi,esi.
21951
21952 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21953
21954         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21955         can trace methods compiled during mini_init () too.
21956
21957         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21958         CEE_CONV_U4.
21959
21960 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21961
21962         * Makefile.am: static link on x86 (r=zoltan)
21963
21964 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21965
21966         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21967         code since it causes some programs to fail.
21968
21969 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21970
21971         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21972
21973 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21974
21975         * mini.c: ovfops_op_map - add STACK_OBJ case for
21976         CONV_I 
21977         * basic.cs: add test_0_pin_string as test
21978         case for above.
21979
21980 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21981
21982         * Makefile.am: build C# if srcdir != builddir
21983
21984 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21985
21986         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21987         fall-through blocks.
21988
21989 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21990
21991         * driver.c: enable loop by default again and include abcrem in -O=all.
21992
21993 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21994
21995         * iltests.il: Add some localloc tests.
21996
21997         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21998
21999         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22000         Fixes #62574.
22001
22002         * inssel-amd64.brg: Add some optimizations.
22003
22004         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22005         for gcc-3.4.
22006
22007         * Makefile.am: Statically link mono against libmono on AMD64.
22008         
22009         * mini-amd64.c inssel-amd64.brg: Optimizations.
22010
22011 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22012
22013         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22014
22015         * tramp-amd64.c: Patch calling code in trampolines.
22016
22017 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22018
22019         * mini-amd64.c: pinvoke struct passing fixes.
22020
22021 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22022
22023         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22024         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22025
22026 2004-08-05  Duncan Mak  <duncan@ximian.com>
22027
22028         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22029         CEE_LDELEM_ANY.
22030
22031 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22032
22033         * mini-amd64.c (emit_move_return_value): Move return value for normal
22034         calls too.
22035
22036 2004-08-05  Martin Baulig  <martin@ximian.com>
22037
22038         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22039         `type->type'; just modify `type' itself when dealing with enums
22040         and generic instances.
22041         (check_call_signature): Make `simple_type' a `MonoType *'.
22042
22043 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22044
22045         * mini.c: Use OP_PADD to add offsets to addresses.
22046
22047         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22048
22049 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22050
22051         * mini-sparc.c (mono_arch_emit_epilog): fix check
22052         for folding last op into restore instruction
22053
22054 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22055
22056         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22057         helper methods using the code manager.
22058         
22059         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22060
22061         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22062
22063 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22064         
22065         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22066           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22067
22068         * mini-s390.c: fix tail processing
22069
22070 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22071
22072         * mini-ppc.c: mul.ovf.un exception name fix.
22073
22074 2004-08-03  Martin Baulig  <martin@ximian.com>
22075
22076         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22077         instances; before jumping to `handle_enum', also modify `ptype'.
22078
22079 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22080
22081         * cpu-sparc.md: fcall maximal length too small.
22082
22083 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22084
22085         * mini-amd64.c mini.h: Add initial support for passing/returning 
22086         structures to/from pinvoked methods.
22087
22088 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22089
22090         * mini-ppc.c: reg allocator fix.
22091
22092 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22093
22094         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22095
22096         * inssel.brg: Optimize memset on 64 bit machines.
22097
22098         * mini-amd64.c: Fix some vararg cases.
22099
22100 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22101
22102         * mini-s390.c: Corrected macro in emit_float_to_int
22103
22104         * s390-abi.cs: Tests to exercise the s390 ABI
22105
22106 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22107
22108         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22109         caller saved regs.
22110
22111         * basic.cs: Add a test for add.ovf.un.
22112
22113 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22114
22115         * mini-sparc.c: add case for OP_IDIV_UN
22116
22117 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22118
22119         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22120         
22121         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22122
22123 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22124
22125         * basic.cs: regression tests.
22126
22127         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22128         regressions.
22129
22130 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22131
22132         * basic.cs: Add a new test.
22133
22134         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22135         and AOT. Various fixes and optimizations.
22136
22137         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22138
22139 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22140
22141         * mini-ppc.c: make sure temp regs are not used for global reg
22142         allocation.
22143
22144 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22145
22146         * cpu-sparc.md: conv_i8 fix for 64bits
22147
22148         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22149
22150 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22151         
22152         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22153         add opcode for cmp BYTE PTR [eax], imm.
22154
22155         * inssel.brg: Make memcpy and memset takes bases.
22156
22157 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22158
22159         * *-amd64.*: More AMD64 work.
22160         
22161 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22162
22163         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22164         add a compare-not-equal opcode.
22165         
22166 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22167
22168         * mini.c: Use mono_init_from_assembly instead of mono_init.
22169         
22170 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22171
22172         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22173
22174         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22175
22176         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22177
22178         * inssel.brg: 64 bit fixes.
22179
22180         * mini.h (MonoCallInst): Add some AMD64 specific data.
22181
22182         * mini.h: Add some OP_P opcodes.
22183
22184 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22185
22186         * basic.cs: tests for 61797 and 61740
22187
22188 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22189
22190         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22191         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22192
22193 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22194
22195         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22196
22197         * *-amd64*.*: Ongoing AMD64 work.
22198
22199 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22200
22201         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22202
22203         * *-amd64*: Ongoing AMD64 work.
22204
22205         * mini-arch.h: Add AMD64 support.
22206
22207         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22208
22209         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22210
22211         * mini-ops.h: Add new opcodes.
22212
22213         * Makefile.am: Add AMD64 support.
22214
22215         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22216         rules into the inssel-long*.brg files.
22217
22218         * *-amd64.*: Add beginnings of AMD64 backend.
22219
22220 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22221
22222         * mini.c (print_dfn): commenting out the code that prints
22223         the cil. With -O=deadce, this makes -v -v crash.
22224         
22225         * cpu-pentium.md: make checkthis have a length of 2
22226
22227 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22228
22229         * mini-sparc.h: fix implementations of __builtin
22230         functions for Sun compiler for V9.
22231
22232 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22233
22234         * mini.c: use the new stelem.ref wrapper
22235         * exceptions.cs, arrays.cs: new stelem.ref tests
22236
22237 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22238
22239         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22240         new XSP should work with these changes).
22241
22242 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22243         
22244         * inssel-{long32,x86,}.brg: trivial optimizations.
22245         
22246 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22247
22248         * mini.c: load value when emitting box operation in
22249         constrained calls.
22250
22251 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22252
22253         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22254         is one byte shorter than cmp DWORD PTR [eax], 0.
22255
22256 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22257
22258         * inssel-ppc.brg: arguments on the stack are always
22259         relative to the stack pointer (spotted by Neale Ferguson).
22260
22261 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22262
22263         * exceptions-x86.c: delay appending the method name to the trace until
22264         after mono_jit_info_table_find is called, as this gets the real
22265         MonoMethod.
22266
22267 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22268
22269         * aot.c: register roots
22270
22271 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22272
22273         * aot.c : I could just use PLATFORM_WIN32 flag.
22274
22275 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22276
22277         * aot.c : Reverting the previous fix. This time it broke linux build.
22278
22279 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22280
22281         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22282
22283 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22284
22285         * mini.c (handle_stack_args): Remove some more debugging code.
22286         
22287         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22288
22289         * driver.c mini.h aot.c: Allow additional options to be specified with
22290         --aot and pass them to mono_compile_assembly.
22291
22292         * aot.c: Add experimental code to AOT compile all loaded assemblies
22293         on demand and save the code into a cache in the filesystem.
22294
22295         * aot.c: Add support for more wrapper methods.
22296         
22297         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22298         58863.
22299
22300         * cpu-*.md: Remove removed opcodes.
22301
22302         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22303         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22304         related icalls to marshal.c.
22305
22306 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22307
22308         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22309
22310         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22311
22312         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22313
22314 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22315         * liveness.c: If liveness is recomputated we need to reset the information
22316         for each variable. This way, if the liveness range has been narrowed
22317         by optimizations that happened after the last computation, we can return
22318         a smaller range.
22319         
22320         For example, if you have
22321         
22322         {
22323                 int i = 0;
22324                 
22325                 // Tons of code that does not affect i
22326                 
22327                 i = foo ();
22328                 ...
22329         }
22330         
22331         i = 0 is dead code and will be removed by SSA. However, when
22332         linear scan gets to the code, i will still appear to be live
22333         throughout the entire block. This prevents good register allocation.
22334
22335 2004-07-06  Martin Baulig  <martin@ximian.com>
22336
22337         * debug-mini.c (mono_debug_init_method): Allow
22338         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22339         (mono_debug_add_icall_wrapper): New method.
22340
22341         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22342
22343 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22344
22345         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22346         optimization.
22347
22348 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22349
22350         * aot.c (mono_aot_load_method): Fix loading of debug info.
22351
22352 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22353
22354         * aot.c: Add logging support.
22355
22356 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22357
22358         * mini.h: Add prototype for mono_print_method_from_ip.
22359
22360         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22361
22362         * inssel.brg: 64 bit fixes.
22363
22364         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22365         inssel-long32.brg.
22366
22367         * Makefile.am: Add SPARC64 support.
22368
22369 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22370
22371         * aot.c: Fix alignment problems on 32 bit platforms.
22372
22373 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22374
22375         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22376         SPARC64.
22377
22378         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22379         problems.
22380
22381         * mini.h: Bump AOT file version. Some 64 bit fixes.
22382
22383 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22384
22385         * inssel-sparc.brg: Add new rule to avoid register moves.
22386
22387         * inssel.brg: Add ldind_to_load_membase helper function.
22388
22389 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22390
22391         * mini.c: OffsetToStringData intrinsic.
22392         
22393 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22394
22395         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22396
22397         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22398         regression tests.
22399
22400         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22401 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22402
22403         * mini.c: reinstated mono_compile_get_interface_var()
22404         on x86, too, since the change breaks the Gtk# build there as well.
22405
22406 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22407
22408         * driver.c: remove loop from the default optimizations: it seems to
22409         interact badly with some of the other options (see bug #60613).
22410
22411 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22412
22413         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22414         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22415
22416 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22417
22418         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22419         vararg-using methods.
22420
22421 2004-06-21  Martin Baulig  <martin@ximian.com>
22422
22423         * mini/mini-exceptions.c
22424         (mono_handle_exception): Added `gpointer original_ip' argument.
22425         After calling mono_unhandled_exception(), call
22426         mono_debugger_unhandled_exception() and if that returns true,
22427         restore the context and return.
22428
22429 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22430
22431         * mini-ppc.c: prefer the use of relative branches so
22432         they won't need to be patched in aot code (patch from Patrick Beard).
22433
22434 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22435
22436         * aot.c: patch from Patrick Beard to make the output assembly
22437         more correct for the MacOSX assembler. Small tweak to
22438         generate sane images on Linux/PPC, too.
22439
22440 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22441
22442         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22443         case until bug #59509 is fixed (shows up in #60332).
22444
22445 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22446
22447         * mini.c: make sure the needed wrappers are compiled, too, with
22448         precomp.
22449
22450 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22451
22452         * driver.c: remove NPTL reference in --version output.
22453
22454 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22455
22456         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22457         generate valid assembly for the Mach-O assembler.
22458
22459 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22460
22461         * driver.c: don't include abcrem in the all optimization specifier
22462         since it slows down jit compilation too much for now.
22463
22464 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22465
22466         * mini.c: use BIGMUL only if both operands have the same signage.
22467         * iltests.il: Test for bug 60056. (errors related to signage in
22468         BIGMUL).
22469
22470         r=lupus.
22471
22472 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22473
22474         * mini.c, aot.c: memory leak fixes.
22475
22476 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22477
22478         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22479
22480 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22481
22482         * Makefile.am: remove the -static hack completely, it links in
22483         statically glib as well.
22484
22485 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22486
22487         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22488         * exceptions.cs: make it compile with new mcs/csc.
22489
22490 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22491         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22492         and added relevant test case.
22493
22494 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22495
22496         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22497         regressions in gtk-sharp.
22498
22499 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22500
22501         * exceptions.cs: New regression tests.
22502
22503         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22504
22505 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22506
22507         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22508
22509 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22510
22511         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22512
22513         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22514
22515 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22516
22517         * mini.c (mono_jit_runtime_invoke): Init class in this
22518         method instead of trusting mono_jit_compile_method to
22519         do the work (because wrappers can be in object class)
22520
22521 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22522
22523         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22524
22525         * basic-long.cs: New regression test.
22526
22527 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22528
22529         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22530         and div/rem checks.
22531
22532 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22533
22534         * Makefile.am: fix miguel's change to build mono statically against
22535         libmono (track build dependencies).
22536
22537 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22538
22539         * cfold.c: Some glib versions do not have G_MININT32.
22540
22541 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22542
22543         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22544         with precision of tan, atan, sin and cos, and implemented related
22545         regressions tests (fixes bug 54467, but one new problem appeared and
22546         is not fixed yet).
22547
22548 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22549
22550         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22551
22552         * exceptions.cs: Add test for constant folding && division by zero.
22553
22554         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22555         since driver.c is in libmono too, so the optimization was useless.
22556
22557         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22558         variable to driver.c so the compiler can emit more efficient code to
22559         access them.
22560
22561 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22562
22563         * Makefile.am: don't distribute generated inssel.[ch] files.
22564
22565 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22566
22567         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22568         into the default appdomain. Fixes #58707.
22569
22570         * jit-icalls.c: Remove the broken approximation for truncl, doing
22571         no conversion is better.
22572
22573         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22574         Fixes #58863.
22575
22576 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22577
22578         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22579         of the mcrxr instruction which is not available on some processors
22580         even if it's documented to be. Implement add and sub overflow correctly
22581         (still not complete for long unsigned). Speed up icalls a bit.
22582
22583 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22584
22585         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22586         we run .cctor in the current domain instead of target_domain.
22587         
22588         Fixes bug #58558, .cctor not being called in -O=shared.
22589
22590 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22591
22592         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22593
22594 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22595
22596         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22597         which can be done with an imm8, do it that way.
22598         (mono_arch_output_basic_block): ditto for a jmp
22599         (mono_arch_emit_prolog): Computate maximum offset of a label.
22600
22601 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22602
22603         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22604         now tries to allocate prefered physical reg's for virtual
22605         regs. This reduces the number of emited spills/loads with
22606         20-30% on our core assemblies.
22607
22608 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22609
22610         * jit-icalls.c: truncl() is not needed and trunc() is
22611         the correct thing to do anyway (bug #58287).
22612
22613 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22614
22615         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22616         if available.
22617
22618 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22619
22620         * driver.c: enable loop optimizations by default.
22621
22622 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22623
22624         * mini-x86.c: fix calc of max loop size when aligning loops start.
22625
22626 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22627
22628         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22629         the stack.
22630
22631 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22632
22633         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22634         should set carry.
22635
22636         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22637
22638         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22639         
22640         * mini.c (inline_method): Allways inline some wrappers even if the cost
22641         is too large. Fixes #58785.
22642
22643         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22644         
22645 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22646
22647         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22648         (crichton@gimp.org). Beginning of support for sparc/linux.
22649
22650         * mini-sparc.c: Optimize retrieval of LMF address.
22651
22652 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22653
22654         * exceptions-ppc.c:  handle alloca in methods with clauses.
22655
22656 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22657
22658         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22659
22660 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22661
22662         * mini.c: Delegate most of the abort signal work to 
22663           mono_thread_request_interruption, which also handles Stop and Suspend
22664           states.
22665
22666 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22667
22668         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22669         supports the save/restore lmf opcodes.
22670
22671 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22672
22673         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22674         by gcc-3.4 as well.
22675
22676         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22677
22678 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22679
22680         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22681         methods which contain array accesses.
22682
22683         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22684         boundaries. Fixes #58537.
22685
22686         * iltests.il: Add regression test for #58537.
22687
22688 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22689
22690         * mini-x86.c (mono_arch_local_regalloc): Last part of
22691         fix for bug #58633 (releasing register to early).
22692
22693 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22694
22695         * basic-long.cs: Add new regression test.
22696
22697 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22698
22699         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22700         register too early on the chain.
22701
22702 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22703
22704         * mini.c (create_helper_signature): Use a helper function to reduce
22705         the code which needs to be written. Also set the calling convention of
22706         icalls on windows. Fixes #57840.
22707
22708 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22709
22710         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22711         exceptions-ppc.c: added helper function to get the instruction address
22712         from a signal handler context.
22713
22714 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22715
22716         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22717         from gonzalo.
22718
22719 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22720
22721         * helpers.c: Add new env variable to pass args to objdump.
22722         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22723
22724 2004-05-17  Radek Doulik  <rodo@ximian.com>
22725
22726         * Makefile.am (common_sources): added abcremoval.h so it get
22727         disted and daily mono packages on go-mono.com will build again
22728
22729 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22730
22731         * abcremoval.c: Fixed coding style, added copyright header.
22732
22733         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22734
22735         * mini.h: Added prototype for abc removal main function.
22736
22737         * build_relations_propagation_table.pl: Added copyright header.
22738
22739 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22740
22741         * basic-long.cs: reg test for complex ceq_long bug.
22742
22743 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22744
22745         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22746         reg in long and clob case (bug #58343). Fixed/added comments.
22747
22748 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22749
22750         * mini.c (mono_jit_runtime_invoke): Follow new convention
22751         of calling the invoke method with an function pointer.
22752
22753 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22754
22755         * ChangeLog: Fix author of memory leak patch.
22756
22757 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22758
22759         * Makefile.am: fix make dist as well...
22760
22761
22762 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22763
22764         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22765         on archs where pointers are 4 bytes long.
22766
22767         * Makefile.am: Added abcremoval.c source file.
22768
22769         * abcremoval.c: Added abcremoval.c.
22770
22771         * abcremoval.h: Added abcremoval.h.
22772
22773         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22774
22775         * inssel.brg: Enabled bounds check removal.
22776
22777         * mini.c: Added support for abcrem optimization.
22778
22779         * mini.h: Added abcrem optimization label.
22780
22781         * driver.c: Added support for abcrem optimization.
22782
22783         * propagated_relations_table.def: Added propagated_relations_table.def.
22784
22785 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22786
22787         * mini.c, cfold.c: fix style.
22788
22789 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22790
22791         * mini.c: handle issue with the low-level implementation of
22792         some long opcodes (bug #54209).
22793
22794 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22795
22796         * basic.cs: test for my new cmov stuff.
22797
22798 2004-05-13      Patrik Torstensson
22799
22800         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22801         opt and added peephole documentation.
22802
22803 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22804
22805         * tramp-ppc.c: rewrote the generic trampoline code.
22806
22807 2004-05-11      Patrik Torstensson
22808
22809         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22810
22811 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22812
22813         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22814
22815         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22816         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22817
22818         * mini.c: Add new icalls for AsAny marshalling.
22819
22820 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22821
22822         * tramp-ppc.c, mini-ppc.c: more cleanups.
22823
22824 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22825
22826         * mini.c: no warnings.
22827
22828 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22829
22830         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22831
22832 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22833
22834         * mini.c: In the thread abort signal handler, if the thread is in the
22835         process of being stoped, don't throw the Abort exception, just stop the
22836         thread.
22837
22838 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22839
22840         * tramp-ppc.c: removed old code.
22841
22842 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22843
22844         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22845         do some simple speed optimizations on ppc.
22846
22847 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22848
22849         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22850         and large offsets in load/store.
22851
22852 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22853
22854         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22855         it causes regressions.
22856
22857 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22858
22859         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22860         support.
22861
22862 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22863
22864         * jit-icalls.c: remove warnings.
22865         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22866         speedups for unsafe code.
22867
22868 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22869
22870         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22871
22872 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22873
22874         * basic-calls.cs: Add new regression test.
22875
22876         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22877         more portable.
22878
22879         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22880
22881         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22882         is no longer used.
22883
22884 2004-05-06      Patrik Torstensson
22885
22886         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22887         long reg allocation in any reg (not only eax:edx) and implemented 
22888         long shl/shr ops in asm instead of helpers.
22889
22890 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22891
22892         * mini-sparc.h: Fix warnings.
22893
22894         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22895         stack.
22896
22897         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22898         separate statement for clarity.
22899
22900         * mini-sparc.c: Update status.
22901
22902 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22903
22904         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22905         here.
22906
22907 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22908
22909         * inssel-ppc.brg: another small pre-release workaround:
22910         we don't do overflow detection for long_sub_un.
22911
22912 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22913
22914         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22915         (also works around a weird ppc bug: 57957).
22916
22917 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22918
22919         * tramp-ppc.c: trampoline fixes.
22920
22921 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22922
22923         * mini-ppc.c: fixed typos.
22924
22925 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22926
22927         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22928         at the top of the stack. Fixed typos. Use a frame registers
22929         for all the methods with exception clauses.
22930
22931 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22932
22933         * exceptions-ppc.c: restore fp registers.
22934
22935 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22936
22937         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22938         order from the stack top (moved the stack room to save the
22939         return value for trace after the param area). Fixed corruption
22940         in restoring registers on unwind.
22941
22942 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22943
22944         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22945
22946 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22947
22948         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22949         and prolog/epilog for methods that use it. Allow
22950         enough param area room for varargs methods. Fix miguel's
22951         breakage in exception handling.
22952
22953 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22954
22955         * Makefile.am: run genmdesc only on current arch.
22956
22957 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22958
22959         * exceptions-x86.c:
22960         * mini-x86.h: fix the build on windows.
22961
22962 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22963
22964         * 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.
22965
22966         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22967
22968         * mini-exceptions.c: New file.
22969         
22970         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22971         Move some parts of the x86 exception handling code to an 
22972         arch-independent file so it can be shared with other ports.
22973
22974 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22975
22976         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22977
22978 2004-04-26  David Waite  <mass@akuma.org>
22979
22980         * driver.c: remove comma from end of enumeration declaration
22981
22982 2004-04-26  Jackson Harper  <jackson@ximian.com>
22983
22984         * driver.c: parse config file before loading first assembly. This
22985         allows the user gac to be enabled/disabled. 
22986         
22987 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22988
22989         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22990         simpler mechanism: we do not care what is encoded initially
22991         (branch absolute or relative), we care about the code and its
22992         target.  I kept the old code for reference for now.
22993
22994         The new code tries first to determine if the jump is anywhere in
22995         the -/+32 absolute meg range, if it succeeds, it encodes using the
22996         absolute branch;  If not, it tried to find something in the
22997         relative range, if not, it uses the handle_thunk code. 
22998
22999 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23000
23001         * exceptions-ppc.c: use the correct ip register on macosx.
23002
23003 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23004
23005         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23006
23007 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23008
23009         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23010         Raise exception on integer divide by zero by hand since the hw
23011         doesn't support it. Handle NaNs in FP compares.
23012
23013 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23014
23015         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23016         code reducing duplication between the platforms and enabled
23017         signal exception handling (on linux for now).
23018
23019 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23020
23021         * exceptions-ppc.c: more macosx support.
23022
23023 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23024
23025         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23026
23027 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23028
23029         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23030
23031 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23032
23033         * iltests.il: more tests.
23034
23035 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23036
23037         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23038         vars as well.
23039
23040 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23041
23042         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23043
23044 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23045
23046         * liveness.c: Mark variables as volatile in all basic blocks reachable
23047         from exception clauses.
23048
23049 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23050
23051         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23052         inlining.
23053
23054 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23055
23056         * iltests.il, basic.cs: more tests for regalloc.
23057
23058 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23059
23060         * iltests.il: Some tests for register allocation modifications
23061         I have locally.
23062
23063 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23064
23065         * exceptions.cs: Add regression test for bug #56782.
23066
23067         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23068         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23069         the beauty of fixing the same thing in 5 different files...
23070
23071 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23072
23073         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23074         methods.
23075
23076 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23077
23078         * mini.c: Add support for STRWLPARRAY marshalling convention.
23079
23080 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23081
23082         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23083         to init the context to setup the regs pointer).
23084
23085 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23086
23087         * exceptions-ppc.c: more exceptions work.
23088
23089 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23090
23091         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23092         not allowed.
23093
23094 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23095
23096         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23097         can use the memory directly.
23098
23099         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23100
23101         add x86_add_membase, x86_sub_membase, x86_mul_membase
23102
23103 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23104
23105         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23106         GENERAL_REGS they were also hardcoded for all PPC ports.
23107
23108         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23109
23110         Remove hard-coded limit for floating point registers, use
23111         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23112
23113         Notice that in MacOS X calling conventions you can fit a lot more
23114         floating point values in registers, so I should update the PInvoke
23115         test to excercise the passing of floating point values on the
23116         stack (currently broken).
23117         
23118 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23119
23120         * tramp-ppc.c (create_trampoline_code): Added
23121         JUMP_TRAMPOLINE_SIZE. 
23122         (ppc_magic_trampoline): Follow the pattern from
23123         x86_magic_trampoline: if code is set to zero, return. 
23124         (create_trampoline_code): Always pass MonoMethod to the jump
23125         trampoline, before it was passing a null.
23126         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23127         share the code with mono_arch_create_jit_trampoline. 
23128
23129         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23130         implemented.
23131         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23132         implemented.  
23133
23134         * cpu-g4.md: Added length for jmp instruction, the worst case
23135         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23136         for save_lmf).
23137
23138 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23139
23140         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23141
23142 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23143
23144         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23145         before each IL instruction.
23146
23147         * mini.c (CEE_BOX): Fix warnings.
23148
23149 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23150
23151         * mini.c: removed a few unused vars and extra whitespace.
23152
23153 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23154
23155         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23156         checks.
23157         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23158         index.
23159         (OP_GETCHR): use the above
23160         (CEE_LDELEMA): use the above.
23161
23162         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23163         version of the generic impl.
23164         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23165         (CEE_LDELEMA): use the above.
23166
23167 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23168
23169         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23170         Fixes #56317.
23171
23172         * iltests.il: Added new regression test for #56317.
23173
23174 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23175
23176         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23177         under NetBSD. Fixes #56450.
23178
23179         * liveness.c (update_gen_kill_set): Fix previous patch.
23180
23181 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23182
23183         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23184
23185 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23186
23187         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23188         ldsfld and ldsflda.
23189
23190         * inssel-sparc.brg: Add more optimizations.
23191
23192         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23193
23194 2004-04-01  Martin Baulig  <martin@ximian.com>
23195
23196         * mini.c (handle_box): New static function; moved the
23197         implementation of CEE_BOX here.
23198         (mono_method_to_ir): Added `constrained_call' variable.
23199         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23200         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23201         mono_method_get_constrained() to get the method.
23202
23203 2004-04-01  Martin Baulig  <martin@ximian.com>
23204
23205         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23206         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23207         (mono_method_to_ir): We don't need these macros anymore since
23208         mono_class_get_full() already takes care of it. 
23209
23210 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23211
23212         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23213         use @function (as doesn't accept #function here) and check the return
23214         value of system and stop if fails.
23215
23216 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23217
23218         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23219
23220 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23221
23222         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23223
23224         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23225
23226         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23227         #56223.
23228
23229         * basic-long.cs: Add test for negation of Int64.MinValue.
23230
23231 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23232
23233         * mini-sparc.c: Update status.
23234
23235         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23236
23237         * exceptions-sparc.c: Fix return value in filters.
23238
23239         * inssel-sparc.brg: Fix register allocation in some rules.
23240
23241 2004-03-28  Martin Baulig  <martin@ximian.com>
23242
23243         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23244         if neccessary.  
23245
23246 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23247
23248         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23249         
23250         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23251         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23252         remove unused conv_u4 opcode.
23253
23254         * mini-x86.c: Remove valgrind workaround since it slows down things
23255         even when mono is not run under valgrind.
23256
23257 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23258
23259         * mini-sparc.c: Update status.
23260
23261         * inssel-sparc.brg: Add some optimizations.
23262
23263         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23264         future delay slot filling. Add support for varargs, tail calls and JMP.
23265
23266         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23267         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23268
23269         * inssel.brg: Fix register allocation in OP_ARGLIST.
23270
23271         * inssel.brg: Fix warnings.
23272
23273 2004-03-25  Martin Baulig  <martin@ximian.com>
23274
23275         * mini.c (inflate_generic_field): Removed.
23276         (mini_get_method): Removed, use mono_get_method_full(),
23277         (mini_get_class): Removed, use mono_class_get_full().
23278         (mono_method_to_ir): Pass our generic context to
23279         mono_field_from_token().        
23280
23281 2004-03-25  Martin Baulig  <martin@ximian.com>
23282
23283         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23284         of a `MonoMethod *'.
23285         (mini_get_method): Take a `MonoGenericContext *' instead
23286         of a `MonoMethod *'.
23287         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23288         a new local variable called `generic_context' which holds the
23289         current `MonoGenericContext *'; use it to lookup things.
23290
23291 2004-03-24  Martin Baulig  <martin@ximian.com>
23292
23293         * mini.c (mini_get_class): New static method; if we're inside a
23294         generic instance, inflate the class if neccessary.
23295         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23296
23297 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23298
23299         * iltests.il: New regression test for #55976.
23300
23301         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23302         #55976.
23303
23304 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23305
23306         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23307         output.
23308
23309 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23310
23311         * liveness.c: Consider SSA stores as well as loads when making vars
23312         volatile.
23313
23314         * exceptions.cs: New regression tests for register allocation.
23315         
23316 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23317
23318         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23319         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23320           domain lock only to protect puntual access to data structures.
23321           Added access lock for sighash, jit_icall_hash_name, 
23322           jit_icall_hash_addr and domain->code_mp.
23323
23324 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23325
23326         * driver.c: Print SIGSEGV handling method.
23327
23328         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23329
23330         * mini.c (setup_jit_tls_data): Handle case when this is called
23331         multiple times for a thread.
23332
23333         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23334         is different from fbxx_un. Fixes #54303. Also use constants instead of
23335         magic numbers in a lot of places.
23336
23337 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23338
23339         * exceptions.cs: Fix cctor test when --regression is used.
23340
23341 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23342
23343         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23344         for Linux/ppc.
23345
23346 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23347
23348         * inssel-ppc.brg: fixed register assignments for some rules.
23349
23350 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23351
23352         * exceptions.cs: Add test for exceptions in static constructors.
23353
23354         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23355         static constructors outside the domain lock. Fixes #55720.
23356
23357 2004-03-17  Martin Baulig  <martin@ximian.com>
23358
23359         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23360         (inflate_generic_field): Take the `MonoMethod *' instead of the
23361         `MonoClass *' and added support for generic method.
23362         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23363         have a `field->parent->gen_params', only inflate the field if it's
23364         an open constructed type.
23365
23366 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23367
23368         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23369         exception object instead of the preconstructed ones.
23370
23371 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23372
23373         * mini.c: reverted changed to sigsegv_signal_handler commited
23374         accidentally in the previous patch.
23375
23376 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23377
23378         * mini.c:
23379         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23380         running --aot with an old assembly.
23381
23382 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23383
23384         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23385         point values.
23386
23387         * mini-sparc.c: Add support for v9 branches with prediction.
23388
23389 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23390
23391         * mini.c (mini_init): #warning is GNUC only
23392
23393         * mini-sparc.h: implement __builtin_frame_address
23394         and __builtin_return_address for Sun C compiler
23395
23396 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23397
23398         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23399
23400 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23401
23402         * basic-calls.cs: Add test for unaligned byref long argument passing.
23403
23404         * mini-ops.h: Add sparcv9 compare and branch instructions.
23405
23406         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23407         v9 instructions if we have a v9 cpu.
23408
23409         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23410         registers for global allocation.
23411
23412         * exceptions-sparc.c: Fixes.
23413         
23414 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23415
23416         * liveness.c (mono_analyze_liveness): Optimized version.
23417
23418         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23419
23420         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23421         sparc work.
23422
23423         * basic-float.cs basic-calls.cs: New regression tests.
23424
23425 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23426
23427         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23428         sigaltstack implementation.
23429
23430         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23431         
23432         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23433         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23434
23435 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23436
23437         * mini.c: Fix warnings.
23438         
23439         * mini.c (mono_resolve_patch_target): New function which contains the
23440         arch independent part of the patching process.
23441
23442         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23443         patching code to a separate function.
23444
23445 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23446
23447         * mini.c (add_signal_handler): ifdef out on Windows
23448
23449 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23450
23451         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23452         cpu-sparc.md: Add exception handling support + other fixes.
23453
23454         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23455         typed GC detection in --version.
23456
23457         * basic.cs exceptions.cs: New regression tests.
23458
23459         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23460         the arch specific code can store data during a compilation.
23461
23462         * mini-ops.h: Add OP_SETFRET.
23463
23464         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23465         function, register a separate icall for each arity, so the icalls can
23466         get a wrapper.
23467         
23468         * mini.c (mono_print_tree): Print negative offsets in a more readable
23469         form.
23470         
23471         * mini.c: Make signal handling work on sparc.
23472         
23473         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23474
23475         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23476
23477         * jit-icalls.c: Emulate truncl by aintl on solaris.
23478
23479         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23480
23481 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23482
23483         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23484
23485 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23486
23487         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23488         a MarshalByRef type, inline a method that performs the check, taking into
23489         account that the object can be a proxy. Also implemented tow new opcodes:
23490         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23491         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23492         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23493
23494 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23495
23496         * mini-ppc.c: if a relative branch displacement is too big
23497         but it points to and area reachable with an absolute branch, 
23498         avoid the thunks.
23499
23500 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23501
23502         * mini.c: optimize small copies in cpblk.
23503
23504 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23505
23506         * basic-calls.cs basic-float.cs: New regression tests.
23507
23508         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23509         negative offsets from %fp. Implement localloc. Fix local register 
23510         allocation. Fix the case when the this argument needs to be saved to
23511         the stack. Implement some missing opcodes.
23512
23513 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23514
23515         * mini.c (mini_method_compile): Reenable global regalloc in methods
23516         with exception handlers.
23517
23518         * linear-scan.c (mono_varlist_sort): Fix warning.
23519
23520         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23521
23522         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23523         regalloc costs.
23524
23525         * liveness.c: Make all variables uses in exception clauses volatile, to
23526         prevent them from being allocated to registers. Fixes #42136.
23527
23528 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23529
23530         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23531         causes regressions.
23532
23533         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23534         argument to mono_arch_regalloc_cost.
23535
23536         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23537         precisely.
23538
23539 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23540
23541         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23542         Make the cost of allocating a variable to a register arch dependent.
23543
23544         * basic-calls.cs: Fix compilation of tests.
23545         
23546         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23547         helper function to cut back on the number of #ifdefs needed.
23548
23549         * mini-ppc.c: Fix compilation.
23550
23551         * basic-calls.cs: New regression tests.
23552
23553         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23554
23555         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23556         of l0 since that is callee saved.
23557
23558         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23559         to virtual calls.
23560
23561         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23562         of delay instruction.
23563
23564         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23565
23566         * mini.h (MonoCallInst): Add 'virtual' flag.
23567
23568         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23569
23570 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * *.cs: New regression tests.
23573
23574         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23575         work.
23576
23577         * mini.c (mono_runtime_install_handlers): Fix build.
23578
23579         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23580         'signal_stack_size' members.
23581
23582         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23583         alternate signal stack.
23584
23585         * exceptions-x86.c: Add stack overflow handling.
23586
23587         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23588         functions to arch independent code.
23589
23590         * mini.c (mono_print_tree): Print more detailed info for load_membase
23591         opcodes.
23592         
23593 2004-02-23  Martin Baulig  <martin@ximian.com>
23594
23595         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23596
23597 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23598
23599         * mini-x86.c: fixed reg allocation for div/rem.
23600
23601 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23602
23603         * driver.c (mono_main): Report some configuratio options on --version.
23604
23605 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23606
23607         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23608         low in the address space. Correctly flush memory in thunks where we
23609         output native code.
23610
23611 2004-02-20  Martin Baulig  <martin@ximian.com>
23612
23613         * mini.c (mini_get_method): New static method; inflate all generic
23614         methods and methods in open generic instances.
23615         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23616         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23617
23618 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23619
23620         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23621
23622         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23623
23624 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23625
23626         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23627
23628         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23629         it compile using Sun's compiler.
23630
23631 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23632
23633         * 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.
23634
23635         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23636
23637 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23638
23639         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23640         code.
23641         * mini-ppc.c: handle calls outside of the allowed range with thunks
23642         allocated using the code manager.
23643         * tramp-ppc.c: use the code manager to hold generated native code.
23644         Fixed the magic trampoline to just patch vtable entries.
23645
23646 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23647
23648         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23649         independent file.
23650
23651 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23652
23653         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23654         PPC.
23655
23656         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23657         if we have a working __thread implementation.
23658
23659         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23660         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23661
23662 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23663
23664         * mini-x86.c: Fix compilation under gcc 2.
23665         
23666 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23667
23668         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23669         contains a call to the wrapped function.
23670
23671         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23672         OP_<CALL>_IMM opcodes, and use them under X86.
23673         
23674         * mini.c (mono_jit_find_compiled_method): Fix warning.
23675
23676         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23677
23678         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23679
23680         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23681         functionality to mini.c.
23682
23683         * mini.c (mono_create_jump_trampoline): New function to create a jump
23684         trampoline. Return a compiled method instead of a trampoline if it
23685         exists. Add a cache for jump trampolines.
23686
23687         * mini.c (mono_jit_find_compiled_method): New function to return a
23688         compiled method if it exists.
23689
23690         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23691         mono_arch_create_jit_trampoline.
23692
23693         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23694         a jump trampoline. Fixes #52092.
23695         
23696 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23697
23698         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23699         which is not up-to-date. Add check_corlib_version () instead.
23700
23701         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23702         have to call it.
23703         
23704         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23705         since newer valgrind versions do not need it.
23706
23707         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23708         compile a method with a given set of optimizations.
23709
23710         * mini.c: Compile icall wrappers on-demand instead of at startup.
23711
23712         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23713         wrapper for an icall.
23714
23715 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23716
23717         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23718         #54063.
23719
23720         * iltests.il: Add test for non-empty stack before switch instruction.
23721
23722 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23723
23724         * mini.c: Add support for new stringbuilder marshalling conventions.
23725
23726         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23727
23728 2004-02-01  Martin Baulig  <martin@ximian.com>
23729
23730         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23731         in `ginst->mtype_argv'.
23732
23733 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23734
23735         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23736         facilitate grepping.
23737
23738 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23739
23740         * mini.c: fixed buglet in initobj generic implementation for references.
23741
23742 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23743
23744         * Makefile.am: make the version script conditional.
23745         * jit-icalls.c: handle missing truncl().
23746
23747 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23748
23749         * exceptions.cs: Add more tests for double->int conversion.
23750
23751         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23752         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23753
23754 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23755
23756         * driver.c: make --verbose --version emit an error
23757         if the loaded corlib doesn't match the runtime version.
23758
23759 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23760
23761         * mini-ppc.h: export ppc_patch().
23762         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23763         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23764         on par or better than on MacOSX.
23765
23766 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23767
23768         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23769         mono_lookup_pinvoke_call.
23770
23771         * mini-x86.c: Under windows, the default pinvoke calling convention is
23772         stdcall. Fixes #52834.
23773
23774         * mini.c (optimize_branches): Add an upper bound to the number of
23775         iterations to prevent infinite loops on strange loops. Fixes #53003.
23776
23777 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23778
23779         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23780         and ISINST. Fixes #52093.
23781
23782         * objects.cs (test_0_vector_array_cast): New tests.
23783         
23784 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23785
23786         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23787         checking in Array.Set ().
23788
23789         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23790         #52590.
23791
23792         * object.cs (test_0_multi_array_cast): New regression test.
23793
23794 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23795
23796         * exceptions-ppc.c: fix build on Linux/PPC.
23797
23798 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23799
23800         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23801         running under valgrind.
23802         (x86_magic_trampoline): Fix build bustage.
23803
23804         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23805         negative values as well. This is needed for the encoding of the line number
23806         info, since sometimes the line numbers are not in increasing order.
23807
23808 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23809
23810         * cpu-pentium.md (localloc): Increase the size of the localloc 
23811         instruction since it is a loop under Win32.
23812
23813         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23814         allocation.
23815
23816 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23817
23818         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23819         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23820         Max Horn (max@quendi.de). Fix file names in comments.
23821
23822 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23823
23824         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23825         avoid stack overflow.
23826         (replace_usage): Avoid uninitialized variable warnings.
23827
23828         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23829         and taking the address of valuetype variables.
23830
23831 2004-01-03  Patrik Torstensson
23832
23833         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23834         for other purposes than FP later on.
23835
23836 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23837
23838         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23839         of tail calls.
23840
23841 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23842
23843         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23844
23845 2003-12-30  Patrik Torstensson <p@rxc.se>
23846
23847         * mini-x86.h: Decreased number of availiable fp regs.
23848         Solves corner cases with FP spilling.
23849
23850 2003-12-23  Patrik Torstensson <p@rxc.se>
23851
23852         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23853         for floating point stack tracking / spilling on x86. 
23854         Fixes bug #49012.
23855         
23856         * basic-float.cs: added float mul overflow test.
23857
23858 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23859
23860         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23861
23862 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23863
23864         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23865         supports for cond branches that overflow the immediate
23866         overflow offset. mcs can compile simple programs.
23867
23868 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23869
23870         * exceptions-ppc.c: exception handling support wip:
23871         finally handlers get run on exception.
23872
23873 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23874
23875         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23876         profiling.
23877
23878 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23879
23880         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23881         initial support for stack walking and unwinding.
23882
23883 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23884
23885         * driver.c (mono_main): Make corlib-out-of-sync message more 
23886         descriptive. Also remove verify_corlib call.
23887
23888 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23889
23890         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23891         not overlap with other call's arguments, too.
23892
23893 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23894
23895         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23896         move to arch-specific code the choice of arch-specific
23897         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23898         * mini.c: ensure emulation calls will not interleave
23899         with other calls.
23900
23901 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23902
23903         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23904         the magic trampoline stack frame is dropped before executing
23905         the new method.
23906
23907 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23908
23909         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23910         and integer to fp conversions. Added support for overflowing
23911         arguments on the stack. Reserve a couple more registers as temps.
23912         Added support for aot compilation (as output still needs to be
23913         tweaked, though).
23914
23915 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23916
23917         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23918         Don't overwrite return register in some corner cases.
23919
23920 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23921
23922         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23923         static constructors when AOT compiling.
23924
23925         * driver.c (mono_main): Call mono_check_corlib_version.
23926
23927 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23928
23929         * cpu-g4.md, basic.cs: fixed div target register.
23930
23931 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23932
23933         * mini-ppc.c, basic.cs: shl_imm fix with test.
23934
23935 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23936
23937         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23938         structures by value. Misc fixes.
23939         * objects.cs: more tests.
23940
23941 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23942
23943         * mini-ppc.c: lconv.ovf.i implemented.
23944
23945 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23946
23947         * mini.c:
23948         (mini_init): don't error out if someone already called g_thread_init.
23949
23950 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23951
23952         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23953         to be any type per the spec. Fix abnormal memory usage when
23954         the same object is repeatedly thrown.
23955
23956 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23957
23958         * mini.c: check for overruns in IL code.
23959
23960 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23961
23962         * TODO: Add/remove some todo entries.
23963
23964 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23965
23966         * driver.c (mono_main): Call mono_verify_corlib.
23967
23968 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23969
23970         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23971         This has been moved to mini.c
23972         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23973         type being casted is marshalbyref it could be a proxy, so instead of
23974         emitting the type check code, emit a call to a runtime method that will
23975         perform the check by calling CanCastTo if needed.
23976
23977 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23978
23979         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23980         methods with large stack frames under Win32.
23981
23982 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23983
23984         * Makefile.am: Distribute regression tests.
23985
23986         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23987         at the end instead of inserting each variable into the sorted list.
23988
23989         * linear-scan.c (mono_varlist_sort): New helper function.
23990         
23991 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23992
23993         * mini.c: ensure arguments and locals are within bounds.
23994
23995 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23996
23997         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23998         related fixes.
23999
24000 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24001
24002         * mini.c (mono_cprop_copy_values): Fix crash.
24003
24004         * aot.c: Set verbosity back to 0.
24005         
24006 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24007
24008         * regalloc.c: complete memory leak fix by Laurent Morichetti
24009         (l_m@pacbell.net).
24010
24011 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24012
24013         * driver.c (main_thread_handler): Revert the previous patch.
24014
24015         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24016         under valgrind.
24017
24018         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24019         memory from the memory pool.
24020
24021         * driver.c (main_thread_handler): Turn on all optimizations when
24022         --aot is used.
24023
24024         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24025         an array for better performance.
24026
24027         * regalloc.c (mono_regstate_assign): Fix memory leak.
24028
24029         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24030         serialize the debug info.
24031
24032         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24033         debug info from the serialized representation.
24034
24035         * aot.c: Save debug info into the generated file and load it when 
24036         loading a method.
24037
24038         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24039
24040 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24041
24042         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24043         More FP-related fixes.
24044
24045 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24046
24047         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24048         and register allocation buglet. Hello world now runs.
24049
24050 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24051
24052         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24053         * tramp-ppc.c: fixed class init trampoline.
24054         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24055
24056 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24057
24058         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24059         mini.c: more ppc changes/fixes.
24060
24061 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24062
24063         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24064         Also optimize the case when the arguments are the same in the caller 
24065         and in the callee.
24066
24067         * iltests.il: Add tests for tail calls with valuetype arguments.
24068
24069 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24070
24071         * mini-ppc.c: fixes for struct return type.
24072
24073 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24074
24075         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24076         mono_spillvar_offset() to arch-specific code.
24077
24078 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24079
24080         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24081
24082 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24083
24084         * exceptions-x86.c: Fix stack space leaks.
24085         
24086         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24087         registers from the lmf if the method has save_lmf set.
24088
24089 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24090
24091         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24092         of icall wrappers into InvokeInDomain, since these are now per-domain.
24093
24094 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24095
24096         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24097         make some opcode emulation and intrinsic ops enabled/disabled 
24098         according to the architecture. More fixes.
24099
24100 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24101
24102         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24103
24104 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24105
24106         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24107         arch-specific handling for 'this' and struct return type to
24108         arch-specific code.
24109
24110 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24111
24112         * aot.c: prevent divide by zero error when reporting (it happened with
24113         Accessibility.dll).
24114
24115 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24116
24117         * mini.h (inst_switch): Remove unused macro.
24118
24119 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24120
24121         * aot.c:
24122         (load_aot_module): free 'info->methods' and 'info' properly. No more
24123         "free(): invalid pointer blah" messages when you have an old aot
24124         compiled assembly.
24125
24126 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24127
24128         * jit-icalls.c, mini.c: Added support for context static fields.
24129
24130 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * mini.c (mono_method_blittable): Methods which set LastError are not 
24133         blittable either. Fixes #51108.
24134         
24135 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24136
24137         * mini.c: flush icache.
24138         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24139
24140 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24141
24142         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24143
24144 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24145
24146         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24147         safe on IA32.
24148
24149         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24150         vararg calls.
24151
24152         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24153
24154 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24155
24156         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24157         instruction when the result is discarded.
24158
24159         * iltests.il (test_0_div_regalloc): New regression test.
24160
24161         * arrays.cs: Fix compilation error.
24162
24163 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24164
24165         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24166         float rules to inssel-x86.brg: sane architectures with FP registers
24167         don't need to implement these rules.
24168
24169 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24170
24171         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24172
24173 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24174
24175         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24176         implementation of 32 bit systems.
24177
24178 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24179
24180         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24181         (Jeroen Zwartepoorte).
24182
24183 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24184
24185         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24186         the caller and the callee matches.
24187         
24188         * mini.c (mono_method_to_ir): Add comment.
24189
24190         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24191         signbit is missing on some platforms.
24192
24193 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24194
24195         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24196
24197         * mini.c (setup_jit_tls_data): Call the new function.
24198         
24199         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24200
24201         * mini-x86.c: Add experimental support for fast access to the lmf
24202         structure under NPTL/Linux 2.6.x.
24203
24204 2003-11-06  Martin Baulig  <martin@ximian.com>
24205
24206         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24207         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24208         the debugger.
24209
24210 2003-11-02  Martin Baulig  <martin@ximian.com>
24211
24212         * mini.c (inflate_generic_field): New static method.
24213         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24214         generic instance and the field is declared in a generic type, call
24215         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24216
24217 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24218
24219         * mini.h mini.c (mono_method_same_domain): New function to return
24220         whenever the caller and the callee are in the same domain.
24221
24222         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24223
24224 2003-10-30  Martin Baulig  <martin@ximian.com>
24225
24226         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24227         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24228         method parameters.
24229         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24230         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24231
24232 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24233
24234         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24235         propagation.
24236
24237         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24238         object here, so it is in the correct appdomain etc.
24239
24240 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24241
24242         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24243         already done.
24244         (mono_method_to_ir): Avoid freeing the type created returned from
24245         mono_type_create_from_typespec, since it is put into an internal cache
24246         by the function. Fixes pointer.exe.
24247
24248         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24249         trampolines for icalls and pinvokes as well. Fixes #33569.
24250
24251 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24252
24253         * mini.c: Update after appdomain changes.
24254
24255         * mini.c (mono_jit_compile_method_inner): Allways compile native
24256         method wrappers in the root domain, since there can only be one
24257         instance of them, whose address is stored in method->info.
24258
24259 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24260
24261         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24262         environment variable. Instead detect automatically whenever running
24263         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24264         valgrind.h.
24265
24266 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24267
24268         * trace.c, trace.h: New files that implement the new trace option
24269         parsing. 
24270
24271         * driver.c: Document new --trace options.
24272
24273         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24274         mini-x86.c: Apply:
24275
24276         -       if (mono_jit_trace_calls)
24277         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24278
24279         * mini.h: prototypes.
24280         
24281 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24282
24283         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24284
24285         * mini.c inssel.brg: Implement typedefbyref opcodes.
24286
24287         * mini.c (mono_jit_compile_method): Remove unused local variable.
24288
24289         * mini.c (mono_jit_compile_method_inner): Ditto.
24290         
24291 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24292
24293         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24294         
24295         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24296
24297 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24298
24299         * mini.c (mono_no_aot): Remove unused global variable.
24300
24301         * mini.c: Thread safety fixes.
24302
24303 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24304
24305         * mini.c (mono_create_class_init_trampoline): Add a lock around
24306         class_init_hash_addr.
24307
24308         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24309         #30073.
24310
24311         * mini.c: Decompose the NEWARR instruction before decomposing its
24312         arguments. Fixes #30073.
24313
24314 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24315
24316         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24317         convention.
24318
24319 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24320
24321         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24322
24323         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24324
24325         * driver.c: Add support for compiling icall wrappers to --compile.
24326
24327 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24328
24329         * inssel.brg: The empty value in class->interface_offsets is -1, not
24330         0. Fixes #49287.
24331
24332 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24333
24334         * objects.cs: New test for 'is' operator on an array of interfaces.
24335
24336 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24337
24338         * tramp-ppc.c: update trampoline code to support jumps
24339         and class initialization.
24340
24341 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24342
24343         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24344
24345         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24346
24347         * inssel.brg (OP_UNBOX): Remove unused rule.
24348
24349         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24350         region instead of one for each method. Fixes #47813.
24351
24352 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24353
24354         * exceptions.cs (test_0_nested_finally): New regression test for
24355         nested exception handlers.
24356
24357         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24358
24359         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24360
24361         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24362         inlining.
24363
24364         * mini.c (mono_method_check_inlining): Make the inlining limit 
24365         configurable by an environment variable.
24366         
24367         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24368
24369         * mini.h: Bump AOT file version.
24370
24371         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24372         token, store the image along with the token, since the token might not 
24373         refer to the same image as the method containing the relocation, 
24374         because of inlining.
24375
24376 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24377
24378         * mini.c (mono_precompile_assemblies): New function to compile
24379         all methods in all loaded assemblies.
24380
24381         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24382
24383         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24384         iassign and fassign to int*, since they can contain large negative
24385         values if the register is spilled. Also added some comments. Fixes
24386         #45817.
24387
24388         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24389         under Win32. Fixes #42964.
24390
24391 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24392
24393         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24394
24395         * aot.c: Added support for AOT compiling methods which contain calls
24396         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24397         handled.
24398         
24399         * driver.c (compile_all_methods): Run the compilation in a thread
24400         managed by mono. Fixes #44023.
24401
24402         * mini.c (mono_codegen): Print full method name in verbose output.
24403
24404         * mini-x86.c (mono_arch_patch_code): Fix warning.
24405         
24406         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24407         jumps, since the method we are jumping to might be domain-specific.
24408
24409         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24410
24411 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24412
24413         * inssel.brg: string chars are unsigned.
24414
24415 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24416
24417         * TODO: New todo item.
24418
24419         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24420         which calls mono_runtime_class_init and patches the call site to
24421         avoid further calls.
24422         (mono_arch_create_class_init_trampoline): New arch specific function 
24423         to create a class init trampoline.
24424         (create_trampoline_code): Generalized so it can create
24425         class init trampolines as well.
24426
24427         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24428         (mono_create_class_init_trampoline): New function to create and cache
24429         class init trampolines.
24430         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24431         vtable given the address of a class init trampoline. Used by the
24432         patching process.
24433         (mono_codegen): Generate a call to a trampoline instead of
24434         mono_runtime_class_init in LDSFLD[A].
24435         (mono_codegen): Add relocations for the new trampoline.
24436         
24437         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24438         MONO_PATCH_INFO_CLASS_INIT.
24439
24440         * mini.h: Bump AOT version number.
24441
24442         * aot.c: Create a copy of the loaded code instead of using the original
24443         so methods which call each other will be close in memory, improving
24444         cache behaviour.
24445         
24446         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24447         patch since it breaks the regression tests.
24448         
24449         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24450         for the register saving instruction sequence since the 
24451         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24452
24453 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24454
24455         * TODO: Fix todo item && remove another.
24456
24457 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24458
24459         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24460         previous checkin.
24461
24462         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24463         function of the module.
24464
24465         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24466         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24467         --no-aot command line option.
24468
24469 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24470
24471         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24472         by Bernie Solomon (bernard@ugsolutions.com).
24473
24474         * inssel.brg: Refactor the interface offset table related code into
24475         its separate functions and add support for the AOT case.
24476
24477 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24478
24479         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24480         
24481         * aot.c: Added mono_aot_verbose variable and made all debugging
24482         output depend on the value of this variable.
24483
24484         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24485         method_label and info_label.
24486
24487         * mini.h mini-x86.c aot.c: Added a new relocation type 
24488         MONO_PATCH_INFO_IID for klass->interface_id.
24489
24490         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24491         the MonoJitInfo structure.
24492
24493         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24494         a non-root appdomain in shared mode.
24495
24496 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24497
24498         * aot.c: make aot loader less verbose. Remove free of unused variable.
24499
24500 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24501
24502         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24503
24504         * .cvsignore: Added *.dll.
24505
24506         * mini.c (mono_print_tree_nl): New function callable while debugging.
24507
24508         * mini.c (mono_print_code): Export this.
24509
24510         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24511         patched code.
24512
24513 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24514
24515         * mini.h (MonoCompile): Added 'jit_info' field.
24516
24517         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24518         the cfg structure, since it is needed by the AOT compiler.
24519
24520         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24521
24522         * aot.c: A major rewrite. Changes include:
24523         - save exception tables for methods which have them.
24524         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24525         to g_module_symbol.
24526         - reworked the file format so it is now much smaller and needs
24527         fewer relocation entries.
24528         
24529 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24530
24531         * aot.c (load_aot_module): Fix build bustage on platforms without
24532         Boehm GC.
24533
24534 2003-09-04  Martin Baulig  <martin@ximian.com>
24535
24536         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24537
24538 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24539
24540         * TODO: Some new optimization ideas.
24541
24542         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24543
24544         * aot.c: Save the optimization flags used to compile the code into
24545         the AOT module.
24546
24547         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24548         support emitting domain specific code.
24549         
24550         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24551         no longer domain neutral. It can be made domain neutral by compiling 
24552         with --optimize=shared.
24553
24554         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24555         between appdomains.
24556
24557         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24558         loading of AOT code.
24559
24560         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24561         
24562         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24563         if there is no domain neutrality information.
24564
24565 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24566
24567         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24568         format version into the generated library.
24569
24570         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24571         callee method into the caller since one of them could be shared.
24572
24573         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24574         system exceptions from AOT code now works.
24575
24576         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24577         method if it is domain neutral and the callee is not.
24578
24579         * graph.c (cfg_emit_one_loop_level): Fix warning.
24580
24581 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24582
24583         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24584         last checkin.
24585
24586 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24587
24588         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24589         is needed  by code which is executed before mono_runtime_init ().
24590         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24591         
24592         * mini.c (mono_thread_abort): Fix warning.
24593         (mono_jit_compile_method): Call static constructor in the AOT case too.
24594
24595         * aot.c (mono_compile_assembly): Fix warning.
24596
24597 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24598
24599         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24600
24601 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24602
24603         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24604
24605         * cpu-pentium.md: Fix the length of call opcodes so they include the
24606         ESP restoring instruction. Fixes #47968.
24607
24608 2003-08-28  Martin Baulig  <martin@ximian.com>
24609
24610         * mini-x86.c (mono_arch_call_opcode): Added support for
24611         MONO_TYPE_GENERICINST.
24612
24613         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24614
24615 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24616
24617         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24618         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24619
24620         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24621         metadata_section.
24622
24623 2003-08-26  Martin Baulig  <martin@ximian.com>
24624
24625         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24626         when reporting an error, set this to the actual error location.
24627         (mono_method_to_ir): Report the correct error location if
24628         get_basic_blocks() returned an error.
24629
24630 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24631
24632         * mini.c (mono_type_blittable): OBJECT is not blittable.
24633         (mono_method_blittable): Methods which have marshalling descriptors
24634         are not blittable either. Fixes #47842.
24635
24636 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24637
24638         * driver.c mini.c: Use an environment variable instead of a global 
24639         variable. Also fix the build.
24640
24641         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24642         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24643         reporting this. 
24644
24645         * driver.c mini.c: Added --with-valgrind option to turn off some
24646         code which prevents mono from running under valgrind.
24647
24648         * mini.c (mono_emit_call_args): Fixed warning.
24649
24650         * mini.c (mono_emulate_opcode): Fixed warning.
24651
24652 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24653
24654         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24655         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24656         regalloc.c, regalloc.h: specify available registers in arch-specific
24657         code and support floats in the regallocator (patch by Laurent Morichetti 
24658         <l_m@pacbell.net>)
24659
24660 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24661
24662         * mini.c: mono_thread_current() can be called only after
24663         mono_runtime_init(): rearrange code to not call it early on.
24664
24665 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24666
24667         * mini.c: allocate jump tables in the code mempools.
24668
24669 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24670
24671         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24672         freed.
24673
24674 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24675
24676         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24677         12 to 16.  This fixes bug #47453.
24678
24679
24680 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24681
24682         * mini-ppc.c: fixed indexed load and unsigned compares.
24683
24684 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24685
24686         * mini.c: reenabled installation of handler for
24687           thread abort signal.
24688
24689 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24690
24691         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24692         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24693         until it's fixed and actually useful.
24694
24695 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24696
24697         * inssel-long32.brg: couple more opcodes implemented.
24698
24699 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24700         
24701         * mini-sparc.c: Even more opcodes implemeted.
24702
24703 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24704
24705         * mini-sparc.c: More opcodes implemented.
24706
24707 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24708
24709         * mini-sparc.c: More opcodes implemented.
24710
24711 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24712
24713         * inssel-sparc.brg: Add some needed rules.  Direct
24714         copy from PPC.
24715         * Makefile.am: Use inssel-sparc.brg
24716         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24717         an assert happy for now.
24718
24719 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24720
24721         * mini-sparc.c: Fixed compile errors.
24722         * exceptions-sparc.c: Same.  We now produce a mono binary 
24723         on sparc-linux.  Yea.
24724
24725 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24726
24727         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24728         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24729         They compile, but do not work.
24730
24731 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24732
24733         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24734         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24735         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24736         (ct@gentoo.org).
24737
24738 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24739
24740         * mini.c: more opcodes implemented and better support for generics.
24741
24742 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24743
24744         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24745         * mini.c, mini.h: first cut at generics support: some new instructions 
24746         added and changed the behaviour of some of the existing ones.
24747
24748 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24749
24750         * mini.c: Removed definition of metadata_shared mutex here.
24751
24752 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24753
24754         * mini-x86.c: make vararg calls work for instance methods.
24755
24756 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24757
24758         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24759         returns the arguments in a separte list, now.
24760
24761 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24762
24763         * aot.c, mini.c: updates for array type representation changes.
24764
24765 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24766
24767         * mini.c: register function to perform jit shutdown.
24768
24769 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24770
24771         * mini.c: use a faster allocator if possible.
24772
24773 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24774
24775         * aot.c: some cleanups and portability changes.
24776
24777 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24778
24779         * mini.c: use faster allocation for CEE_BOX if possible.
24780
24781 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24782
24783         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24784         Moved inlined mempcy code to its own function so that is can be
24785         reused. Added an inline memset function as well (optimized initobj).
24786         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24787
24788 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24789
24790         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24791
24792 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24793
24794         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24795         arch code can setup the cpu for CLR execution, if needed.
24796         We use it on x86 to set the precision of FP operations.
24797
24798 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24799
24800         * mini.c: disable some optimizations if we can guess they'll cost too
24801         much for a given method.
24802
24803 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24804
24805         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24806         
24807 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24808         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24809         info collection support.
24810
24811 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24812
24813         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24814         is now implemented in the profiling API. Get rid of a couple of
24815         unnecessary global variables.
24816
24817 2003-06-15  Nick Drochak <ndrochak@gol.com>
24818
24819         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24820         * cpu-g4.md: add op_bigmul and op_bigmul_un
24821         * cpu_pentium.md: add op_bigmul_un
24822         * inssel-long32.brg: add rule for unsigned bigmul
24823         * mini-ops.h: define OP_BIGMUL_UN
24824         * mini-x86.c: THE BUG: handle (un)signed properly
24825         * mini.c: choose unsigned opcode if needed.
24826         This set of patches fixes bug #44291
24827
24828 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24829
24830         * mini.c (optimize_branches): improved to handle all kinds of
24831         conditional branches.
24832
24833 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24834
24835         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24836         don't raise exceptions.
24837
24838 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24839
24840         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24841         to arch-specific files.
24842
24843 2003-06-09  Martin Baulig  <martin@ximian.com>
24844
24845         * Makefile.am (libs): Added $(LIBGC_LIBS).
24846
24847 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24848
24849         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24850         and OP_ATAN (fixes bug#44293).
24851
24852 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24853
24854         * Makefile.am, mini-x86.c: rename cpu description array to
24855         pentium_desc, since some compilers define the 'pentium' preprocessor
24856         symbol.
24857
24858 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24859
24860         * mini.c (mini_select_instructions): add explicit branch if the
24861         following block is not the false target of a conditional branch -
24862         we need this with any optimization that reorder or remove bblocks
24863
24864         * mini.c (optimize_branches): bug fixes
24865
24866 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24867
24868         * mini.c (mono_method_to_ir): inline static readonly fields
24869
24870         * ssa.c (fold_tree): start cfold support for long (very simple
24871         cases only)
24872
24873         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24874
24875 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24876
24877         * inssel.brg: fixed memcpy (bug #44219).
24878
24879 2003-06-05  Dick Porter  <dick@ximian.com>
24880
24881         * driver.c: Set the glib log levels to not abort if g_message
24882         recurses.
24883
24884         g_set_prgname() has to happen before mini_init() so that the
24885         process handle gets the info.
24886         
24887 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24888
24889         * driver.c: add intrins to the default optimizations to get wider
24890         exposure.
24891
24892 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24893
24894         * mini.h: some large basic blocks will overflow a 16-bit
24895         integers for symbolic registers.
24896
24897 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24898
24899         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24900         (mono_arch_output_basic_block): fix bug 43499 
24901
24902 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24903
24904         * mini.c: kill duplicated definition of mono_debug_format.
24905
24906 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24907
24908         * mini-x86.c, arrays.cs: fixed register allocation bug.
24909
24910 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24911
24912         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24913
24914         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24915
24916 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24917
24918         * mini.c:
24919         (print_method_from_ip): also print source location information if
24920         available.
24921
24922 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24923
24924         * mini.c (mono_find_block_region): bug fix in region code
24925         (mini_method_compile): enable removing unreachable code again, but
24926         only in methods without exception clauses.
24927
24928 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24929
24930         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24931         Implemented arglist opcode and handling of TypedReference type.
24932         Fixed x86 call convention when a structure is returned.
24933         Minimal support for calling static vararg methods.
24934
24935 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24936
24937         * mini.c (mini_method_compile):  always remove unreachable code,
24938         because the code in them may be inconsistent  (access to dead
24939         variables for example).
24940
24941 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24942
24943         * driver.c, debug-mini.c: warning fixes.
24944
24945 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24946
24947         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24948
24949 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24950
24951         * mini.c: thread-static fields are registered in mono_class_vtable(),
24952         so ensure the function is called before checking for them.
24953
24954 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24955
24956         * mini.c (optimize_branches): fix for bug 43586
24957
24958         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24959         overflow (fixes Bug #43639)
24960
24961 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24962
24963         * mini.c, objects.cs: allow the use of stobj for primitive types.
24964
24965 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24966
24967         * mini.c: be less strict about argument checking until we support
24968         running the verifier.
24969
24970 2003-05-27  Nick Drochak <ndrochak@gol.com>
24971
24972         * basic-long.cs: tests for (ulong)int * (ulong)int also
24973         * mini.c: use the same trick for (ulong)int * (ulong)int
24974
24975 2003-05-27  Nick Drochak <ndrochak@gol.com>
24976
24977         * basic-long.cs: add regression test for (long)int * (long)int
24978         * cpu-pentium.md: add op_bigmul specification
24979         * inssel-long32.brg: add OP_BIGMUL rule
24980         * mini-ops.h: add OP_BIGMUL
24981         * mini-x86.c: register allocator: handle case where src1 needs to be
24982         in EAX.
24983         * mini.c: substitute special BIGMUL opcode in the tree for 
24984         (long)int * (long)int
24985
24986 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24987
24988         * jit-icalls.c: call the type ctor on field access if needed.
24989
24990 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24991
24992         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24993         to a method (including results of ldelema, bug#43207).
24994
24995 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24996
24997         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24998         colors to show exception handler blocks.
24999
25000         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25001         (fix for pinvoke7.cs).
25002
25003 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25004
25005         * mini.h, mini.c: ensure correct initialization order for types that
25006         require it. Prepare for lazy compilation of jit icall wrappers.
25007         Provide a name for opcode emulation to reduce unneeded mallocing.
25008
25009 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25010
25011         * mini-x86.c: better register restoring code and profiling
25012         support for tail calls.
25013
25014 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25015
25016         * mini.h, driver.c: prepare for leaf methods optimization.
25017
25018 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25019
25020         * mini.c: get targets of branches before converting a method.
25021
25022 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25023
25024         * mini.c (optimize_branches): added some experimental code (disbaled) 
25025
25026 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25027
25028         * mini.c (optimize_branches): fix branch to branch optimization 
25029
25030         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25031
25032         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25033
25034         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25035
25036         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25037         if needed.
25038
25039 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25040
25041         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25042         enable use of interface variables again.
25043
25044         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25045         I1 to registers because there is no simply way to sign extend 8bit
25046         quantities in caller saved registers on x86.
25047
25048         * inssel-float.brg: set costs of some rules to 2 so
25049         that monobure always select the arch. specific ones if supplied,
25050         regardless of the order we pass the files to monoburg.
25051
25052 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25053
25054         * mini.c, mini-x86.c: since the magic trampoline for jumps
25055         can't patch the code directly, we do it as soon as the
25056         method gets compiled.
25057
25058 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25059
25060         * mini-x86.c, mini.h: introduce a new patching method
25061         to support CEE_JMP and tail calls.
25062         * mini.c: obey tail.call. Don't precompile methods target
25063         of CEE_JMP.
25064         * tramp-x86.c: new trampoline code to handle methods
25065         reached through a jump.
25066
25067 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25068
25069         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25070         bit values to registers
25071
25072 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25073
25074         * mini.c (mono_compile_get_interface_var): share interface
25075         variables if possible.
25076
25077 2003-05-16  Martin Baulig  <martin@ximian.com>
25078
25079         * debug-mini.c (mono_init_debugger): New function to initialize
25080         the debugger.  This is not in the debugger since it needs to
25081         access some of mini's internals.
25082
25083 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25084
25085         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25086
25087 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25088
25089         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25090         for value type handling.
25091
25092 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25093
25094         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25095         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25096
25097 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25098
25099         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25100           the constructor through a proxy.
25101
25102 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25103
25104         * jit-icalls.c, inssel.brg: fixes to array element address
25105         calculations.
25106
25107 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25108
25109         * mini-x86.c (is_regsize_var): allocate pointer to registers
25110
25111 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25112
25113         * driver.c: fixed typo, added intrins to the set of optimizations
25114         tested with regressions.
25115
25116 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25117
25118         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25119         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25120         test case.
25121
25122 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25123
25124         * inssel.brg: remove some common pop instructions without side effects
25125
25126 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25127
25128         * inssel-x86.brg: fixed thinko in int to double conversions.
25129
25130 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25131
25132         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25133
25134 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25135
25136         * inssel-long32.brg: two more missing instructions.
25137
25138 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25139
25140         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25141         if not already set.
25142
25143 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25144
25145         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25146         correctly.
25147
25148         * basic-float.cs: Added tests for negative zero.
25149
25150 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25151
25152         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25153         a couple of missing operations for long casts, with test cases.
25154
25155 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25156
25157         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25158
25159 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25160
25161         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25162         code size estimation.
25163
25164 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25165
25166         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25167         abstract methods (fix bug 42542)
25168
25169         * aot.c: add ability to handle array types
25170         
25171 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25172
25173         * mini.c: Call the _specific versions of the object allocation
25174         functions if possible.
25175
25176 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25177
25178         * driver.c: call setlocale ().
25179
25180 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25181
25182         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25183         windows build.
25184
25185 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25186
25187         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25188
25189         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25190         wrappers (fix bug 42122)
25191
25192 2003-05-04  Martin Baulig  <martin@ximian.com>
25193
25194         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25195
25196         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25197         s/mini_set_defaults/mono_set_defaults/g.
25198
25199 2003-05-04  Martin Baulig  <martin@ximian.com>
25200
25201         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25202
25203 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25204
25205         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25206         (reported by Don Roberts).
25207
25208 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25209
25210         * mini.c: temporarily work around two bugs for this release.
25211
25212 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25213
25214         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25215         that contains -export-dynamic and it makes using the ld script
25216         useless.
25217         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25218
25219 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25220
25221         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25222         specific cpu.
25223
25224 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25225
25226         * mini.c: make sure leave calls all the needed finally blocks,
25227         even when the target jumps out of multiple exception clauses.
25228
25229 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25230
25231         * ldscript, Makefile.am: add linker script to reduce the number of
25232         exported symbols (should also fix the issues with libwine defining
25233         some of the same symbols in io-layer).
25234
25235 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25236
25237         * driver.c (mini_main): Avoid assertion when no file name is given on 
25238         the command line.
25239
25240 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25241
25242         * driver.c: added --version/-V command line option.
25243         Added the inline optimization in the regression tests.
25244
25245 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25246
25247         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25248         to the type in the method signature (fixes bug#42134).
25249
25250 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25251
25252         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25253
25254 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25255
25256         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25257
25258 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25259
25260         * driver.c: fixed bug #42100.
25261
25262 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25263
25264         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25265
25266 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25267
25268         * mini.c: moved most of the code required to do inlining to its own
25269         function so it can be reused. Inline also ctors if appropriate.
25270
25271 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25272
25273         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25274         the runtime can call mono API functions.
25275
25276 2003-04-27  Martin Baulig  <martin@ximian.com>
25277
25278         * debug-mini.c (mono_debug_init_method): Added
25279         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25280         send a notification to the debugger.
25281
25282         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25283         running in the Mono Debugger, just pass the breakpoint number to
25284         mono_debug_init_method().
25285
25286         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25287
25288 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25289
25290         * mini.c: allow some more unsafe compares.
25291
25292 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25293
25294         * mini-x86.c, Makefile.am: make distcheck works (partially from
25295         a patch by Richard Lee <r.h.lee@attbi.com>).
25296         * regset.c, regset.h: removed, they are unused.
25297
25298 2003-04-25  Dick Porter  <dick@ximian.com>
25299
25300         * driver.c: Usage reports the name as 'mono' not 'mini'
25301         * exceptions-x86.c: Build and run on freebsd
25302
25303 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25304
25305         * Makefile.am: install the program with the 'mono' name and
25306         the library as libmono instead of mini and libmini.
25307
25308 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25309
25310         * driver.c: provide the APIs for the embedding interface of the old jit.
25311
25312 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25313
25314         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25315
25316 2003-04-23  Martin Baulig  <martin@ximian.com>
25317
25318         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25319
25320         * driver.c: Added `--debug' command line argument to enable
25321         debugging support.
25322
25323 2003-04-23  Martin Baulig  <martin@ximian.com>
25324
25325         * debug.[ch]: Removed.  The code is now in
25326         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25327
25328         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25329         last six months.
25330
25331 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25332
25333         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25334
25335 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25336
25337         * mini.c:
25338         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25339         mono_domain_finalize.
25340         (mini_method_compile): use mono_method_profile* if the the option is
25341         enabled.
25342
25343 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25344
25345         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25346         methods with their wrapper.
25347
25348         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25349         methods with their wrapper.
25350
25351         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25352         their wrapper.
25353
25354         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25355         wrapper.
25356
25357         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25358         methods.
25359
25360 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25361
25362         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25363
25364 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25365
25366         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25367         of the mempool. This is slightly faster and uses less memory
25368
25369 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25370
25371         * mini.c: avoid O(n) allocation for variables.
25372
25373 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25374
25375         * mini.c: handle items on the stack after inlining methods.
25376
25377 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25378
25379         * mini.c: make the method->opcode optimization dependent
25380         on MONO_OPT_INSTRINS and do it lazily.
25381
25382 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25383
25384         * driver.c: print overall results at the end of regression run.
25385
25386 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25387
25388         * inssel.brg: don't overwrite symbolic registers.
25389
25390 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25391
25392         * inssel-x86.brg: fix conversion from long to float.
25393
25394 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25395
25396         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25397
25398 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25399
25400         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25401
25402         * driver.c: Added --print-vtable option as in the old JIT.
25403
25404 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25405
25406         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25407
25408 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25409
25410         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25411
25412 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25413
25414         * mini.c regalloc.c regalloc.h: Fix memory leak.
25415
25416 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25417
25418         * aot.c (mono_aot_get_method): register all used strings
25419
25420 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25421
25422         * mini.c: always intern strings references with ldstr at compile time.
25423
25424 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25425
25426         * Makefile.am: add BUILT_SOURCES.
25427
25428 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25429
25430         * driver.c: give a better error message when the assembly to execute
25431         doesn't have an entry point.
25432
25433 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25434
25435         * Makefile.am: added hack for automake
25436
25437         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25438         correct sematics.
25439
25440         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25441
25442 22003-04-07  Martin Baulig  <martin@ximian.com>
25443
25444         * Makefile.am: Added Makefile.am.
25445
25446         * debugger-main.c: Removed, this is now in the debugger where it
25447         belongs.
25448
25449         * mini.pc.in: Call this package `mini' for the moment.
25450
25451
25452
25453
25454
25455
25456
25457
25458
25459
25460
25461
25462
25463
25464