e42201b6a8f41d8ce5c199cc31d37bbe6769936a
[mono.git] / mono / mini / ChangeLog
1
2 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
3
4         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
5         unsafe optimization that will remove bound checks.
6
7 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
8
9         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
10         CompareExchange not to be inlined for I8.
11
12         Contributed under MIT/X11 license.
13
14 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
15
16         * array.cs: Add tests for cast between primitive array types.
17
18 2010-04-07 Andreia Gaita  <avidigal@novell.com>
19
20         * Makefile.am: create a convenience library for moon to link with
21
22 2010-04-07 Paolo Molaro <lupus@ximian.com>
23
24         * method-to-ir.c: optimize array accesses from generic interfaces.
25
26 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
27
28         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
29
30 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
31
32         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
33         of marshalbyref classes.
34
35         Fixes #515884.
36
37 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
38
39         * aot-compiler.c (emit_exception_debug_info): Encode try holes
40         information.
41
42         * aot-runtime.c (decode_exception_debug_info): Decode try holes
43         information.
44
45         * mini.h: Increase AOT version.
46
47 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
48
49         * mini-x86.h: Only enable soft debugger when using sigaction or on
50         Windows. Fixes build on Haiku (lacks siginfo_t).
51
52         Code is contributed under MIT/X11 license.
53
54 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
55
56         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
57         BeOS-style signal handlers.
58
59         Code is contributed under MIT/X11 license.
60         
61 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
62
63         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
64
65 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
66
67         * mini-exceptions.c: Fix win32 build.
68
69 2010-04-01  Mark Probst  <mark.probst@gmail.com>
70
71         * mini.c, driver.c: Call mono_gc_base_init() before
72         mono_debug_init().
73
74 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
75
76         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
77         call_method]): Delegate the actual work in security-core-clr.c
78         to ease code sharing.
79
80 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
81
82         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
83         float conv.ovf.un opcodes are encountered, instead of asserting later.
84         Fixes #566296.
85
86 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
87
88         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
89
90         * iltests.il.in: Add a test.
91
92 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
93
94         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
95         large. Fixes #567040.
96
97         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
98
99 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
100
101         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
102         #592711.
103
104 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
105
106         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
107         mono_create_handler_block_trampoline with the proper #ifdef so that it
108         compiles on amd64.
109
110 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
111
112         * mini-exceptions.c: Introduce mono_walk_stack_full, which
113         allows to select if it's new or old context that is passed to 
114         the callback.
115
116         * mini-exceptions.c (mono_handle_exception_internal): Handle the
117         case when executing a guarded handler from the EH machinery.
118
119         * mini-exceptions.c (mono_install_handler_block_guard): New function
120         responsible for checking for handler blocks, installing the guard and
121         clearing abort state.
122
123         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
124         to check for handler blocks and skip interruption logic if one was found.
125
126         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
127         by the handler block guard trampoline. Resumes interruption by raising the
128         pending ThreadAbortException.
129
130         * mini.c (create_jit_info): Calculate the end address of a finally block.
131
132         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
133         of a finally block to a specified address and return the old one.
134
135         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
136         trampoline patches the original return address and calls the trampoline function.
137
138 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
139
140         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
141
142         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
143         does the patching if the callee is in the same domain.
144
145         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
146         of mono_arch_patch_plt_entry ().
147
148 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
149
150         * mini.c (create_jit_info): Fix try block hole length encoding.
151
152 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
153
154         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
155         duplicate information and print offsets instead of absolute addresses.
156
157 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
158
159         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
160         event is sent. Fixes #591733.
161
162 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
163
164         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
165         OpenBSD.
166
167 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
168
169         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
170         thread_to_tls hash table.
171
172         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
173         section. Fixes #591000.
174
175 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
176
177         * Makefile.am (version.h): Check for pure .git directory only,
178         fixes SVN revision when using git without git-svn.
179
180         Contributed under MIT/X11 license.
181
182 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
183
184         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
185
186 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
187
188         * basic-simd.cs: Test for vector x scalar binary operators.
189
190 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
191
192         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
193         intrinsics with expanded scalar arguments.
194
195 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
196
197         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
198         don't have an exception class, so don't decode it. This would crash
199         with filter clauses.
200
201 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
202
203         Make sure that trunk builds with DISABLE_JIT, an update to the
204         PlayStation 3 port.
205         
206         * mini.c (mini_get_shared_method): this code seems to be necessary
207         regardless of whether DISABLE_JIT has been defined.
208
209         (mono_jit_compile_method_inner): it seems that this method is
210         required even in full AOT mode, so ifdef out only the pieces that
211         try to genrate code (the body of code that applies patches to the
212         code).  
213
214         (mini_method_compile): do not compile when using DISABLE_JIT.
215
216         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
217         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
218         compile when DISABLE_JIT is set.
219
220 2010-03-24  Mark Probst  <mark.probst@gmail.com>
221
222         * mini.c (mono_create_tls_get): Only create a TLS operation if the
223         arch really supports it.
224
225 2010-03-24  Mark Probst  <mark.probst@gmail.com>
226
227         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
228
229 2010-03-23  Neale Ferguson <neale@sinenomine.net>
230
231         * exceptions-s390x.c: Add support for
232         mono_arch_get_throw_corlib_exception and fix throw by name.
233
234         * mini-s390x.c: Add IMT support; Fix stack parameter passing
235         logic (especially for varargs); Correct localloc sizing; Add
236         mono_arch_get_this_arg_from_call and
237         mono_arch_get_this_arg_from_call.
238
239         * mini-s390x.h: Add support for facility list extraction;
240         Correct/update MONO_ARCH_xxx settings.
241
242         * mini-s390.c: Minor corrections to instruction output for
243         varargs. No IMT implementation - I think it's time to deprecate
244         s390 and just leave s390x.
245
246         * tramp-s390x.c: Correct creation of trampoline instruction
247
248
249         * cpu-s390x.md: Update some instruction lengths
250
251 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
252
253         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
254         can be hit with partial sharing.
255
256         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
257         in non-shared classes correctly.
258         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
259         Turn on partial sharing.
260
261 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
262
263         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
264         by mistake.
265
266 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
267
268         * method-to-ir.c (mono_method_to_ir): Handle the failure of
269         mono_method_signature ().
270
271         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
272
273         * mini.c (mini_method_compile): Get the signature of cfg->method early with
274         error checking, so later calls do not need error checking.
275
276 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
277
278         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
279
280         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
281
282 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
283
284         * mini-exceptions.c (mono_handle_exception_internal): Don't
285         check try_end for archs different than s390. 
286
287         * mini.c (create_jit_info): Don't crash if the finallt block is the
288         last one.
289
290 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
291
292         * driver.c (mono_main): Don't free global codeman under linux since
293         glic now peeks at code on stack for more archs than just amd64.
294
295 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
296
297         * mini.c, method-to-ir.c: changes to support compressed interface
298         bitmaps.
299
300 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
301
302         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
303         Use sigaction on OpenBSD too.
304
305 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
306
307         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
308
309 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
310
311         * debugger-agent.c: #include sys/select.h for fd_set.
312
313         Code is contributed under MIT/X11 license.
314
315 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
316
317         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
318         (openbsd+amd64 ?).
319
320 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
321
322         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
323         some large methods with lots of exception handlers. Fixes #440924.
324
325 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
326
327         * method-to-ir.c: remove code duplication for interface checks.
328
329 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
330
331         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
332         (assembly_unload): Clear all event requests referencing the to-be unloaded
333         assembly.
334
335
336 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
337
338         * mini.h, mini-exceptions.c: restore the state of the stack
339         guard page permissions.
340
341 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
342
343         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
344         call site patching code, it doesn't appear to be needed.
345
346 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
347
348         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
349         sharing generic methods whose type arguments are a mix of reference and
350         non-reference types. Not yet turned on.
351
352         * mini.c (mini_get_shared_method): New helper function to return
353         the method which will be compiled/registered in the JIT tables when doing
354         generic sharing.
355         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
356         use mini_get_shared_method ().
357
358         * mini.c (mini_method_compile): Register the same method which is compiled when
359         doing generic sharing.
360
361         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
362
363         * generics.cs: Add partial sharing tests.
364
365 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
366
367         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
368                    Add an enum value that or's all possable values together. Add an enum value
369                    that marks the end of the used bit indexes.
370
371         * mini-amd64.c : Make changes to match the changes in mini.h 
372
373         * mini-x86.c : Make changes to match the changes in mini.h
374
375         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
376                    simd_version to support more simd versions. Changed the name of
377                    simd_version to simd_version_flags to make it more intuitive that
378                    it now contains bit flags. Reordered the *_intrinsics arrays to
379                    match the changes above. Changed emit_intrinsics() to use the new
380                    setup mentioned above.
381
382         Code is contributed under MIT/X11 license.
383
384 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
385
386         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
387         remaining archs. Alpha and hppa maintainers, please stand up.
388
389 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
390
391         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
392         is needed even when fail_tramp!=NULL.
393
394 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
395
396         * debugger-agent.c (insert_breakpoint): Write a log message.
397
398 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
399
400         * iltests.il.in: Add a few tests for LEAVE going over multiple
401         finally clauses.
402
403 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
404
405          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
406
407 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
408
409         * mini.h (MonoBasicBlock): Add native_length field.
410         * mini.h (MonoCompile): Add try_block_holes field.
411         * mini.h (MonoInst): Add exception_clause pointer to
412         the data union.
413
414         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
415         * mini.c (mono_cfg_add_try_hole): New function to register possible
416         holes in try blocks.
417         * mini.c (create_jit_info): Fill in the holes information.
418
419         * mini-exceptions.c: Verify for holes when checking if an IP is covered
420         by a try block.
421
422         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
423
424 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
425
426         * jit-icalls.c: adjusted for the array API changes.
427
428 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
429
430         * iltests.il.in: Disable the fconv_to_i test on sparc too.
431
432 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
433
434         * debugger-agent.c: Simplify the way breakpoints are processed by removing
435         the 'pending' flag. This fixes support for appdomains too.
436
437
438 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
439
440         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
441
442 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
443
444         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
445         when using LLVM, LLVM generates it itself when needed.
446
447         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
448
449         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
450         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
451         OP_ANDNPS/OP_ANDNPD.
452
453 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
454
455         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
456         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
457         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
458
459 2010-03-11  Martin Baulig  <martin@ximian.com>
460
461         * debugger-agent.c (type_commands): Add NULL check to
462         `CMD_TYPE_GET_SOURCE_FILES'.
463
464 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
465
466         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
467
468 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
469
470         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
471         #586664.
472
473         * iltests.il.in: Add a test.
474
475 2010-03-05  Martin Baulig  <martin@ximian.com>
476
477         Add support for aborting invocations.
478
479         * debugger-agent.c
480         (InvokeData): Added `InvokeData *last_invoke'.
481         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
482         added a new `invoke' field to keep the `InvokeData *' throughout
483         the invocation.
484         (ErrorCode): Added `ERR_NO_INVOCATION'.
485         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
486         (mono_debugger_agent_handle_exception): Don't report any exception
487         if an abort was requested.
488         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
489         a thread abort if necessary.
490         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
491
492 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
493
494         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
495         so we can release the whole list and not just the first one. Free
496         it in more places as well.
497
498 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
499
500         * method-to-ir.c: Revert r153222 as it doesn't belong here.
501
502 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
503
504         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
505
506 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
507
508         * driver.c: report also other misc build options.
509
510 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
511
512         * method-to-ir.c: Generate better code for the NewObject
513         intrinsic.
514         
515 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
516
517         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
518         is disabled. Fixes #582322.
519
520         * iltests.il.in: Add a test.
521
522 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
523
524         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
525         the handling of obj->synchronization == null and owner != current thread to
526         mono_monitor_exit ().
527
528         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
529
530
531 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
532
533         * mini.c: change the way emulated opcode info is stored and save about
534         4 KB of runtime memory.
535
536 2010-03-04  David S. Miller  <davem@davemloft.net>
537
538        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
539        that don't provide the siginfo in the second signal handler argument
540        are buggy, and this has been fixed for years.
541        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
542        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
543
544 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
545
546         * aot-runtime.c (find_symbol): Fix a leak.
547         (decode_patch): Ditto.
548
549 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
550
551         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
552
553 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
554
555         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
556
557 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
558
559         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
560
561 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
562
563         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
564         to check for errors, it's enough to create the metadata open.
565
566         Fixes #562150
567
568 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
569
570         * trace.c|h:
571         * mini-exceptions.c: Add support for printing stack traces when handling
572         exceptions, and when printing exceptions thrown while tracing also print
573         the exception message.
574
575 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
576
577         * trace.c: We need to parse exclude tokens ('-') before string tokens,
578         since the exclude token is a valid string character.
579
580 2010-03-02  Levi Bard  <levi@unity3d.com>
581
582         * debugger-agent.c: Invalidate thread stacks on domain unload.
583
584 2010-03-02  Mark Probst  <mark.probst@gmail.com>
585
586         * method-to-ir.c: Emit dummy_use for stored reference after write
587         barriers to make sure the object is pinned if the GC interrupts
588         before the write barrier is done.
589
590 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
591
592         * cpu-<ARCH>.md: dummy_use was missing src1:i.
593
594 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
595
596         * debugger-agent.c: Add a log message printing the protocol version.
597
598 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
599
600         * debugger-agent.c: Add a new command to communicate the protocol version used
601         by the client. This could be used to allow newer runtimes to communicate with
602         older clients.
603
604 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
605
606         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
607
608 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
609
610         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
611         type.
612
613 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
614
615         * mini-arm.c: make the arm cpu arch configurable with the
616         MONO_CPU_ARCH env var (for example: "armv4 thumb").
617         Bug #584198.
618
619 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
620
621         * mini.c, mini.h, driver.c: added the --jitmap option to enable
622         support for the perf tool on Linux.
623
624 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
625
626         * method-to-ir.c: make string.InsertenalSetChar() specialization
627         effective.
628
629 2010-03-01  Robert Jordan  <robertj@gmx.net>
630
631         * Makefile.am: fix the non-static build.
632
633 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
634
635         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
636         here.
637
638 2010-02-26  Robert Jordan  <robertj@gmx.net>
639
640         * tasklets.c (continuation_store): Return from an error condition
641         immediately.
642
643 2010-02-26  Martin Baulig  <martin@ximian.com>
644
645         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
646
647         * debug-mini.c
648         (MonoDebuggerThreadInfo): Added `internal_flags'.
649         (MonoDebuggerInternalThreadFlags): New enum.
650         (_mono_debugger_throw_exception): Don't signal the debugger if a
651         type abort was requested.
652         (_mono_debugger_unhandled_exception): Likewise.
653         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
654         (mono_debugger_runtime_invoke): If the debugger requested a thread
655         abort during the invocation, reset it here.
656
657 2010-02-26  Martin Baulig  <martin@ximian.com>
658
659         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
660         instead of `MonoThread *'.
661
662 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
663
664         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
665         code offsets table, as it is mostly sorted.
666
667 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
668
669         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
670         Fixes #582991.
671
672 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
673
674         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
675
676 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
677
678         * Makefile.am: build the new ABI version of the libmono library.
679         * debugger-agent.c, mini.c: fix warnings with the new API.
680         * jit.h: don't depend on glib.h being included.
681
682 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
683
684         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
685
686 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
687
688         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
689         ThreadStatic variables.
690
691 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
692
693         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
694         data is not freed yet. Fixes #582460.
695
696 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
697
698         * debugger-agent.c: Add support for the caught/uncaught flags on exception
699         event requests. Bump protocol minor version.
700
701 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
702
703         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
704
705 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
706
707         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
708         #581950.
709
710         * iltests.il.in: Add a test.
711
712 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
713
714         * mini.c (inline_method): Check for loader errors.
715
716 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
717
718         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
719         instead of mono_method_get_header as it doesn't decode locals
720         so the called method can have unresolved dependencies that will only
721         be satisfied after the current method is JIT'd.
722
723         Fixes #550968.
724
725 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
726
727         * basic.cs (test_0_div_opt): Speed this up a bit.
728
729 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
730
731         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
732
733         * mini.c (mono_jit_create_remoting_trampoline): Call
734         mono_create_specific_trampoline () instead of
735         mono_arch_create_specific_trampoline ().
736
737         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
738
739 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
740
741         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
742         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
743
744         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
745
746         * mini-amd64.c: Fix DISABLE_JIT support.
747
748 2010-02-20  Geoff Norton  <gnorton@novell.com>
749
750         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
751
752 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
753
754         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
755         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
756         CATCH_TXT. Send normal exception events for unhandled exceptions too.
757         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
758         handle_exception.
759
760 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
761
762         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
763         edx/ecx too. This is needed to support OP_SEQ_POINT.
764
765 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
766
767         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
768
769         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
770
771 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
772
773         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
774         LLVM+AOT+exceptions, not enabled yet.
775
776 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
777
778         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
779
780 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
781
782         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
783         xdebug info for these.
784
785         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
786         in a few places.
787
788         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
789         not used yet.
790
791 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
792
793         * aot-compiler.c (load_profile_files): Update after the profiler changes.
794
795 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
796
797         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
798         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
799
800         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
801         for mtouch.
802
803 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
804
805         * debugger-agent.c: handle incomplete reads and EINTR in
806         recv()/send(). This could have been causing random
807         disconnections.
808
809 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
810
811         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
812         points.
813
814         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
815         so they have small offsets. Fixes #566311.
816
817 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
818
819         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
820
821 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
822
823         * mini-amd64.c: Remove the special casing of byref in a few places now that
824         mini_type_get_underlying_type () handles it.
825
826         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
827         by returning native int. Fixes #577984.
828
829 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
830
831         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
832         a macro.
833
834         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
835         of putting the clause itself.
836
837         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
838
839 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
840
841         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
842         might be unaligned.
843
844 2010-02-10  Geoff Norton  <gnorton@novell.com>
845
846         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
847
848 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
849
850         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
851         llvm methods too.
852
853         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
854         it is not an LLVM generated symbol.
855
856         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
857
858         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
859         implementation in gshared mode because it causes regressions.
860
861         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
862
863         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
864         should be done by the caller.
865
866         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
867
868         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
869
870         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
871         since mono_jit_info_table_find () doesn't do it anymore.
872
873         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
874         instead of mono_jit_info_table_find ().
875
876 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
877
878         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
879
880         * aot-compiler.c (encode_method_ref): Update after the removal of
881         mono_gc_get_managed_allocator_type ().
882
883         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
884         Fixes #564538.
885
886 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
887
888         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
889         generic params as well.
890         (handle_isinst): Ditto.
891
892         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
893         instead of always calling an icall.
894
895         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
896         computing the size of the got.
897
898         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
899         when using LLVM. Instead of emitting it as an LLVM method, emit it using
900         the assembly directive '.set' so it points to the first LLVM emitted method.
901
902 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
903
904         * mini.c (mini_method_verify): Report the method which failed to verify.
905
906 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
907
908         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
909         to avoid JIT'ng dead basic blocks. This is the same behavior as the
910         runtime MS verifier.
911
912 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
913
914         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
915         #561962.
916
917 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini-llvm.c: Init the jit module only when first JITting.
920
921         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
922
923         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
924
925         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
926         replaced with the real got.
927
928         * debugger-agent.c (type_commands): Return the enumness if the type as well.
929
930         * image-writer.c: Reduce the amount of #ifdefs a bit.
931
932         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
933         llvm on darwin/arm.
934
935         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
936
937         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
938         global.
939
940 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
941
942         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
943         (mono_llvm_emit_method): Fix unaligned stores too.
944
945         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
946         so async stack walks don't crash.
947
948 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
949
950         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
951         was not patched if the callee needed an rgctx trampoline.
952
953 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
954
955         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
956         vtable address in AOT code.
957
958 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
959
960         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
961         MonoInst's.
962
963 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
964
965         * genmdesc.pl: remove dependency on external cpp.
966
967 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
968
969         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
970         using LLVM, its not needed, and abcrem can't handle it.
971
972 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
973
974         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
975         it easier to group instructions and reduce duplication.
976
977 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
978
979         * decompose.c: Move the array/soft float decompose routines here from
980         method-to-ir.c.
981
982         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
983
984 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
985
986         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
987         to tell LLVM that the got is constant, not used yet.
988
989         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
990
991 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
992
993         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
994         managed wrappers.
995
996 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
997
998         * aot-compiler.c (add_wrappers): Commit the hack which generates
999         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1000         custom attribute.
1001
1002 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1005         a fault, only used by the LLVM backend.
1006
1007         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1008         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1009
1010         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1011         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1012
1013         * mini-llvm.c: Only generate volatile loads from load instructions which have
1014         the MONO_INST_FAULT flag set.
1015
1016 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1019         64 bit platforms.
1020
1021 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1022
1023         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1024         sequence points. Fixes #571236.
1025
1026 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1029         end of the appdomain unload process, after assemblies have been unloaded.
1030         Fixes #574842.
1031
1032 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1035         works.
1036
1037         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1038         Fixes #573988.
1039
1040 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1043
1044 2010-01-26  Geoff Norton  <gnorton@novell.com>
1045
1046         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1047         with struct marshalability.
1048
1049 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1050
1051         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1052         it supports class names as well.
1053
1054         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1055         needed by the GC map code.
1056
1057         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1058         flags if needed.
1059
1060         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1061         if cfg->init_ref_vars is set.
1062
1063         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1064         cfg->disable_initlocals_op_refs is set.
1065
1066         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1067         using liveness info if cfg->compute_precise_live_ranges is set.
1068
1069         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1070         volatile variables correctly. Add comments about the live ranges. Not enabled
1071         yet.
1072
1073 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1076         0x2a into them in method prologs.
1077
1078         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1079
1080 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1081
1082         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1083         classes, since llvm is compiled with -fno-rtti.
1084
1085         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1086
1087         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1088         llvm does not require it.
1089
1090         * aot-runtime.c (load_method): Print the full name of the last aot method.
1091
1092 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1093
1094         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1095         thread has not fully started yet.
1096
1097 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1098
1099         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1100
1101 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1102
1103         * driver.c: Do not abort if LLVM is not supported, print a
1104         warning and add the information to the Mono JIT information.
1105
1106 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1107
1108         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1109         using explicit null checks.
1110
1111 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1114         related code.
1115
1116         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1117         () in one place.
1118         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1119         its no longer needed.
1120
1121         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1122
1123         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1124         define for platforms still using it (s390). Get rid of the
1125         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1126
1127         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1128         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1129
1130         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1131         the caller pushed the arguments.
1132
1133         * mini-llvm.c: Enable throwing exceptions on x86.
1134
1135         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1136         "Thread (nil) may have been prematurely finalized" messages if this is called
1137         on a thread not registered with the runtime.
1138
1139         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1140
1141 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1142
1143         * jit-icalls.c (mono_array_new_3): New jit icall.
1144
1145         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1146
1147         * arrays.cs: Add a test for 3 dimensional arrays.
1148
1149 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1150
1151         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1152         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1153         used.
1154
1155         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1156         thrown on x86.
1157
1158         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1159
1160         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1161
1162         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1163
1164 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1165
1166         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1167           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1168
1169         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1170
1171         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1172
1173         Code is contributed under MIT/X11 license.
1174
1175 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1176
1177         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1178
1179         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1180
1181         * mini.c (mini_method_compile): Set the new flag when running under the
1182         debugger.
1183
1184 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1185
1186         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1187         a ref/noref value + a global pin flag, so parts of stack frames can still be
1188         precisely marked even if they include stuff which needs pinning. Improve logging.
1189         Fix many bugs. Not enabled yet.
1190
1191         * gc-test.cs: Add a few tests.
1192
1193         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1194         the normal -v options. Avoid propagating liveness information through bblocks
1195         which end with a NOT_REACHED opcode.
1196
1197         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1198         after cfg has been freed.
1199
1200 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1203         if a clause is skipped because it uses the exception object, since it could
1204         have caught the exception.
1205
1206         * exceptions.cs: Add a test.
1207
1208 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1209
1210        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1211
1212         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1213         ICollection<T> wrappers.
1214
1215 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1216
1217         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1218
1219 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1220
1221         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1222         NOMAP32BIT or optimize_for_xen is set.
1223
1224 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1225
1226         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1227         mono_metadata_str_hash () instead.
1228
1229 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1230
1231         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1232         sizeof (void*).
1233
1234         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1235
1236 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1239         flag is set.
1240
1241         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1242         throwing code correctly.
1243
1244         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1245
1246 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1247
1248         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1249         ftnptrs created by us, handle RGCTX_FETCH correctly.
1250         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1251
1252         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1253         ftnptr added by mono_aot_get_named_code ().
1254
1255 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1256
1257         * mini-arm.c: Fix a few LLVM problems.
1258
1259         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1260
1261 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1262
1263         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1264         AOT compiling.
1265
1266 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1267
1268         * jit.h, method-to-ir.c: added ability to set the policy for
1269         inserting breakpoints from the break IL instruction or the
1270         Debugger.Break () API call.
1271
1272 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1275         assemblies need to be eagerly loaded.
1276
1277 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1280
1281 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1284         an argument which matches any exception.
1285
1286 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1287
1288         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1289         optimization if the called method is gshared and marshalbyref, since gshared
1290         methods can' have wrappers. Fixes #569390.
1291
1292         * generics.cs: Add a test.
1293
1294 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1295
1296         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1297         callable from gdb.
1298
1299 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1300
1301         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1302
1303 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1306         since it is not supported in win2000.
1307
1308 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1309
1310         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1311         error if loading an assembly fails.
1312         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1313
1314         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1315         if exists.
1316
1317         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1318         compiled methods.
1319
1320         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1321
1322         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1323         is not supported yet.
1324
1325         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1326
1327 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1328
1329         * method-to-ir.c: All types with variant arguments must fallback to the
1330         slow path. This makes cast of variant delegates work.
1331
1332         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1333         argument that is set to TRUE is the returned vtable slot is for a variant
1334         interface. Changed a g_print + g_assert_not_reached to a g_error.
1335
1336         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1337         a similar fashion of generic virtual methods.
1338
1339 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1340
1341         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1342         when cfg is null.
1343
1344         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1345         method using a variance aware function.
1346
1347         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1348
1349 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1350
1351         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1352         do an icall for now.
1353
1354 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1357         If LLVM decides to set the code model to Large, reset it to Default.
1358
1359 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1360
1361         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1362         stripped binaries as well.
1363
1364 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1367         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1368
1369         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1370         reg.
1371
1372 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1375         separate function.
1376
1377         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1378         as the type info to llvm.eh.selector.
1379         (exception_cb): Use the type info for filling out some fields of
1380         MonoJitExceptionInfo like the flags and the exception class. This is needed
1381         because the LLVM produced exception handling clauses might not match the original
1382         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1383
1384         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1385         separate function. Add an extra argument which returns the type infos
1386         corresponding to the exception clauses.
1387
1388         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1389         exception handling clauses.
1390
1391 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1392
1393         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1394         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1395         to fix an AOT case.
1396
1397 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1398
1399         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1400         internal assembly.
1401
1402 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
1405         llvm code.
1406
1407 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1408
1409         * mini.c (mini_method_compile): Verify the method before calling
1410         mono_compile_create_vars as this might crash since it uses method
1411         information.
1412
1413         Fixes #560196.
1414
1415 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1416
1417         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
1418         one case if AOTing, since the class might not be a concrete class.
1419
1420 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
1421
1422         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1423         functions which are now defined in mempool-internals.h.
1424
1425         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1426
1427         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1428
1429 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1430
1431         * mini.c:
1432         * method-to.ir.c:
1433         * mini-*.c: Properly handle generic enums.
1434
1435         Fixes #566294
1436
1437 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1438
1439         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1440         in a few more places.
1441
1442 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1443
1444         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1445         nullable parameters. Fixes #567351.
1446
1447 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1448
1449         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1450
1451 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1452
1453         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1454         mono_get_generic_context_from_code () call.
1455
1456         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1457
1458 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1459
1460         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1461         needed.
1462
1463 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1464
1465         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1466         mono_method_get_signature returns NULL. Fix #567084
1467
1468 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1469
1470         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1471         instead of once for each module.
1472
1473 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1474
1475         * debugger-agent.c (ss_start): Implement step over for the last sequence
1476         point in methods.
1477
1478         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1479         have the STEP_LOC flag set.
1480
1481         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1482         fails. Fixes #566689.
1483
1484 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * mini.c (mono_add_seq_point): New helper function.
1487         (mono_save_seq_point_info): New function to save sequence point info, extracted
1488         from mini_method_compile ().
1489
1490         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1491
1492         * mini.h (MonoSeqPointInfo): New structure containing information about
1493         the sequence points of a JITted method.
1494         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1495         'bucket' field.
1496
1497         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1498         point information is stored, use a MonoSeqPointInfo structure instead of a
1499         GPtrArray. For each seq point, compute a list of successor seq points.
1500
1501         * debugger-agent.c: Use the successor list to implement step-over more
1502         efficiently: instead of single stepping until a different line/IL offset is
1503         reached, place breakpoints into all successor seq points.
1504
1505         * mini.h: Bump AOT file format version.
1506
1507 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1508
1509         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1510
1511         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1512
1513 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1514
1515         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1516         build.
1517
1518 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1519
1520         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1521         alloca as g_malloc is not signal safe.
1522
1523 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1524
1525         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1526         VALGRIND_DISCARD_TRANSLATIONS.
1527
1528         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1529         checks, they are no longer needed.
1530
1531         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1532         a function into a sigctx which can handle function pointers.
1533
1534         * mini-ppc.c: Implement soft debugger support on ppc64.
1535
1536         * mini-ppc.c: Implement soft debugger support.
1537
1538 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1539
1540         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1541
1542 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1543
1544         * mini.c (mono_get_runtime_build_info): include Mono version in
1545         the returned value.
1546
1547         * driver.c (mono_main): VERSION is now included in the string
1548         returned from mono_get_runtime_build_info()
1549
1550 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1553         signatures. Fixes #565143.
1554
1555         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1556
1557 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1558
1559         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1560
1561 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1562
1563         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1564         making max stack 10x smaller.
1565
1566 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1567
1568         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1569
1570 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1571
1572         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1573
1574 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1575
1576         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1577         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1578
1579         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1580
1581         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1582
1583         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1584
1585         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1586         the compilation.
1587
1588 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1589
1590         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1591         raise an invalid program exception.   
1592
1593         For other opcodes that we might not handle use a g_warning and
1594         raise the exception.   Beats termination.
1595
1596         Fixes #561724
1597
1598 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
1599
1600         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
1601
1602         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
1603         by merging the LLVM and !MAP_32BIT cases.
1604
1605 2009-12-13 Jonathan Chambers <joncham@gmail.com>
1606
1607         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
1608         sigctx being passed in, as we have no CONTEXT available in the APC.
1609
1610         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
1611         for now.
1612
1613         Code contributed under MIT/X11 license.
1614
1615 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
1616
1617         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
1618         in the LLVM backend on AMD64.
1619
1620         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
1621         FDE.
1622
1623         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
1624
1625         * mini-llvm.c: Export mono_personality for AOT.
1626
1627         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
1628
1629         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
1630         implicit exception can occur.
1631
1632         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
1633         OP_IMPLICIT_EXCEPTION instruction.
1634
1635         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
1636
1637         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
1638
1639         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
1640         inside a protected block.
1641
1642         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1643         trampolines doesn't include the argument.
1644
1645         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1646         trampolines on amd64.
1647
1648         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1649         of RDI.
1650
1651         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1652         disabled for methods with clauses.
1653
1654         * mini-llvm.c: Enable support for catch clauses.
1655
1656         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1657         end of an LLVM compiled finally clause.
1658         (mono_handle_exception_internal): Save the exception handling state in TLS
1659         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1660         resume unwinding from that point.
1661
1662         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1663         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1664         to obtain the addresses of the exception handling regions.
1665
1666         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1667         finally clauses are supported.
1668
1669         * mini.c (mini_method_compile): Add support for LLVM code with exception
1670         handlers.
1671
1672 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1673
1674         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1675         proper size.
1676
1677 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1678
1679         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1680         as a primitive type.
1681
1682 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1683
1684         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1685         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1686         #564000.
1687
1688 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1689
1690         * method-to-ir.c (mini_redirect_call): do not redirect the
1691         InternalAllocateStr internal call if string profiling is enabled.
1692
1693 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1694
1695         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1696         generic methods.
1697
1698         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1699         unwind.h header file.
1700
1701         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1702         newer valgrind versions seems to handle this fine.
1703
1704 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1707         on the debugger thread.
1708
1709 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1712
1713         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1714
1715         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
1716
1717         * cpu-<ARCH>.md: Make call_handler clob:c.
1718
1719         * mini.c: Reenable SSA for methods with clauses.
1720
1721         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
1722         as it causes failures on x86.
1723
1724 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
1725
1726         * driver.c: Fail gracefully with --compile-all if mono_method_signature
1727         returns NULL (e.g. a bad assembly).
1728
1729 2009-12-08  Geoff Norton  <gnorton@novell.com>
1730
1731         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
1732         stepping out into native code.  There were issues with nested invokes
1733         like .cctors.
1734
1735 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
1736
1737         * mini.c (mini_method_compile): Do the disable_llvm checks early
1738         and avoid the LLVM compile pass if the checks fail.
1739
1740         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
1741
1742         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
1743         LLVM optimizations don't try to remove them.
1744
1745         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
1746         different file so the original remains.
1747
1748 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
1749
1750         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
1751
1752         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
1753
1754         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
1755         support for non-inline unwind descriptors.
1756
1757 2009-12-07  Geoff Norton  <gnorton@novell.com>
1758
1759         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
1760         the interrupt_count slightly differently.  Native threads were never
1761         marked as resumed.
1762
1763 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
1766         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
1767         yet generate this info.
1768
1769         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
1770
1771         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
1772         client can distinguish between intptrs and longs.
1773
1774 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
1777         blob.
1778
1779         * aot-runtime.c (load_function): Update after the change above.
1780
1781         * mini.h: Bump AOT file format version.
1782
1783         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
1784         if the delegate class is dynamic.
1785
1786         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
1787         in gshared code too using the new rgctx info type
1788         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
1789
1790 2009-12-04  Geoff Norton  <gnorton@novell.com>
1791
1792         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
1793         we need to track the original suspend count so the thread properly
1794         wakes up in resume_thread.
1795
1796 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
1799         code.
1800
1801         * generics.cs: Add a test.
1802
1803         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
1804         is 0. Simplify a lot of code using this.
1805
1806         * mini-trampolines.c (mono_delegate_trampoline): Call
1807         mono_create_static_rgctx_trampoline () before saving the final address in
1808         delegate->method_code, to avoid calling it each time a delegate is first called.
1809
1810         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1811         which need static rgctx trampolines.
1812
1813         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1814         keyed on the method+addr pair, since addr could be either the method addr or
1815         an unbox trampoline in the AOT case. Fixes #560246.
1816
1817 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1818
1819         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1820         place it was called before too.
1821
1822 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1825         if no security manager is present, to speed up the AOT case. Call
1826         mono_class_vtable () full with raise_on_error == TRUE instead.
1827
1828 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1831         the local optimization passes can take its result into account. Fixes
1832         #559876.
1833
1834         * exceptions.cs: Add a test.
1835
1836 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1837
1838         This patch is contributed under the terms of the MIT/X11 license
1839
1840         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1841
1842 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1843
1844         * mini.h (MonoInst): Remove unused 'ssa_op' field.
1845
1846         * debugger-agent.c: Rework the handling of stack traces of running threads to
1847         avoid crashes if compute_frames () tries to walk the stack of running thread.
1848
1849         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
1850
1851         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
1852
1853         * mini.h (StackFrameInfo): Add an 'lmf' field.
1854
1855 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
1856
1857         * debugger-agent.c (suspend_current): Always set really_suspended.
1858
1859         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
1860
1861         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
1862
1863 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
1866         really suspended.
1867
1868 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
1871
1872 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1873
1874         * mini-trampolines.c: Fix MSVC build.
1875
1876 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1877
1878         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
1879
1880 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1881
1882         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
1883         the instruction following an OP_FCOMPARE is optimized away.
1884
1885 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
1888         emit_autoreg () into this arch-specific function.
1889
1890         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
1891         code, it is no longer needed.
1892
1893         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
1894
1895         * mini.h: Bump AOT file format version.
1896
1897         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
1898         using the sorted_code_offsets array, instead of reading it from the
1899         exception debug info.
1900         (load_method): Call mono_aot_find_jit_info instead of
1901         decode_exception_debug_info ().
1902
1903         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
1904         LLVM compiled as a flag.
1905
1906 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
1907
1908         * debugger-agent.c (resume_thread): Fix a warning.
1909
1910         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1911         generated.
1912
1913 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
1916         contents to MonoAotFileInfo.
1917
1918 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1919
1920         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
1921         Put all binary data into a giant blob, similarly to the way .net assemblies
1922         store binary data. Emit offset tables in a compact form to reduce their size.
1923
1924         * mini.h: Bump AOT file format version.
1925
1926         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
1927         places.
1928
1929         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
1930         avoid linear searches at runtime.
1931
1932         * aot-runtime.c (find_symbol): Update this to use the hash.
1933
1934         * mini.h: Bump AOT file format version.
1935
1936 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1937
1938         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
1939         container.
1940
1941         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
1942         too.
1943
1944         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
1945         the distribution of got slot types.
1946
1947         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
1948
1949         * method-to-ir.c: Add support for generating explicit null checks.
1950
1951 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
1954         on a random thread if possible.
1955
1956         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
1957         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
1958         correctly.
1959
1960         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
1961         regs. Pass the real size of the regs array to mono_unwind_frame ().
1962
1963         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
1964         ones instead.
1965
1966 2009-11-24  Geoff Norton  <gnorton@novell.com>
1967
1968         * mini-darwin.c: Work around apple bug rdar://7209349  See
1969         http://openradar.appspot.com/7209349 for details.  Synopsis,
1970         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
1971         never been initialized before.
1972
1973 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1974
1975         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
1976
1977         * mini-arm.c (mono_arm_thumb_supported): New helper function.
1978
1979 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
1982         OP_SHL_IMM is not 32 bit.
1983
1984 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
1987
1988 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
1991         encountered.
1992
1993         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
1994         > 0 since some threads can resume if their resume_count is > 0.
1995         (invoke_method): Avoid reading freed memory.
1996
1997         * debugger-agent.c (process_suspend): Extract the suspend code from
1998         process_single_step_inner () to a separate function. Rework the code to prevent
1999         races between this function and thread interrupts.
2000
2001         * debugger-agent.c (suspend_current): Check the resume_count field instead
2002         of resume_one so suspends+resumes during single threaded invokes work
2003         correctly.
2004
2005 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2008         to make the generated code smaller.
2009
2010         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2011         sequence generated by recent LLVM versions.
2012
2013         * mini-llvm.c: Add support for a few simple cases which weren't supported
2014         before.
2015
2016         * mini-trampolines.c (mono_magic_trampoline): Don't call
2017         mono_arch_get_vcall_slot () when llvm is enabled.
2018
2019         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2020
2021         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2022         into a new function called common_call_trampoline () which is used by the
2023         llvm vcall trampoline as well.
2024
2025         * debugger-agent.c: Implement single threaded invokes.
2026
2027         * debugger-agent.c: Revert change which broke the agent on linux.
2028
2029         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2030         #557606.
2031
2032         * generics.cs: Add a test.
2033
2034 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * debugger-agent.c: Fix the cygwin build.
2037
2038 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2039
2040         * cprop.c: Remove this unused file.
2041
2042 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2043
2044         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2045         #557262.
2046
2047         * basic.cs: Add a test.
2048
2049 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2052         in one more place.
2053
2054 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2055
2056         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2057         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2058         it. Use this flag to control llvm related code paths instead of #ifdef
2059         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2060         AOT code.
2061
2062         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2063
2064         * mini.h: Bump AOT file format version.
2065
2066         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2067         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2068
2069         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2070         was used as an assembly filter.
2071
2072 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2073
2074         * unwind.c: Fix support for ppc.
2075
2076         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2077         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2078
2079 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2080
2081         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2082         port.
2083         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2084         added by the ps3 changes.
2085
2086 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2087
2088         * mini-gc.c: Resurrect this, so at least it compiles.
2089
2090         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2091
2092 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2095         create_event_list () so assembly filters can be used.
2096
2097         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2098         from the LMF.
2099
2100 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2101
2102         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2103         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2104         is disabled.
2105
2106         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2107         classes for char/bool too.
2108
2109         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2110
2111         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2112         used.
2113
2114         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2115         Fix warnings.
2116
2117 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2118
2119         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2120         
2121         Code contributed under MIT/X11 license.
2122
2123 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2124
2125         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2126         threads in native code work.
2127
2128         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2129         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2130         version.
2131
2132 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2133
2134         * debugger-agent.c: Implementation for Windows platform.
2135
2136         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2137         primitives. Use SEH to implement breakpoints and single stepping.
2138
2139         * mini-x86.h: Enable soft debugger on Windows.
2140
2141         Code contributed under MIT/X11 license.
2142
2143 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2144
2145         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2146         under XEN. Fixes #522894.
2147
2148         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2149
2150         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2151         interface calls in LLVM AOT code.
2152
2153         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2154         is found.
2155
2156         * mini-llvm.c: Add support for OP_VPHI.
2157
2158         * objects.cs: Add a test.
2159
2160 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2161
2162         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2163         this is called on the debugger thread.
2164
2165 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2166
2167         * mini-llvm.c: Add soft-float support.
2168
2169         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2170         FCALL which returns an R4.
2171
2172         * driver.c (mono_main): Add a missing '\n'.
2173
2174         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2175         platforms which doesn't support the LLVM IMT trampoline.
2176
2177 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2178
2179         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2180
2181         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2182
2183         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2184         virtual calls.
2185
2186         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2187
2188 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2191         Instead of emitting a method_order table, sort the contents of the code_offsets
2192         table and do a binary search in the sorted table. The previous approach doesn't
2193         work with LLVM which emits methods in a arbitrary order.
2194
2195         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2196         in the .eh_frame section in ELF files.
2197
2198         * mini.h: Bump corlib file format version.
2199
2200         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2201
2202         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2203         LDMIA->LDM macro name change.
2204
2205 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2206
2207         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2208         x86.
2209
2210         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2211         SVN.
2212
2213         * aot-compiler.c: Ditto.
2214
2215         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2216         &align to mini_type_stack_size_full ().
2217
2218         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2219
2220         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2221
2222 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2223
2224         * mini-arm.c: Compute the stack space used by arguments using
2225         mini_type_stack_size_full ().
2226
2227 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * optflags-def.h: Remove dead TREEPROP optimization.
2230
2231 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2232
2233         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2234
2235         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2236
2237 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * driver.c (mono_jit_parse_options): New public API function to parse options
2240         as done by the runtime executable.
2241
2242         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2243         when handling named arguments.
2244
2245 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2246
2247         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2248         for passing small vtypes in registers, make the CallInfo structures more
2249         similar to the code on the other platforms.
2250
2251         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2252         the code in the prolog requires it.
2253
2254 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2255
2256         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2257         (koush@koushikdutta.com).
2258
2259         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2260         where the thunk memory should be allocated from. Fixes appdomain unloading
2261         on arm.
2262
2263 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2266         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2267
2268 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2269
2270         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2271         AOT, as it is not implemented yet.
2272
2273         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2274
2275 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2276
2277         * debugger-agent.c: Fix windows build.
2278
2279 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2280
2281         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2282         after the client connects/disconnects.
2283
2284         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2285         when an exception of a given type is thrown.
2286
2287         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2288         only on an uncaught exception.
2289
2290         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2291
2292         * debugger-agent.c: Add a 'launch' option.
2293
2294 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2295
2296         * debugger-agent.c: Add a 'timeout' option.
2297
2298 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2299
2300         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2301         the JDWP agent.
2302
2303 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2304
2305         * debugger-agent.c (set_breakpoint): Emit a log message.
2306
2307 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * mini-arm.c: Fix the arm build.
2310
2311 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2312
2313         * aot-compiler.c: don't leak the value returned from
2314         mono_type_full_name().
2315
2316 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2317
2318         * debugger-agent.c: defer including mono-mutex.h until we know the
2319         agent is supported.
2320
2321 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2322
2323         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2324         of pthreads directly.
2325
2326         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2327         exception handlers. Pass info argument.
2328
2329         * mini.h: Adjust signatures of soft debugger functions to pass void*
2330         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2331
2332         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2333         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2334         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2335         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2336
2337         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2338
2339         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2340         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2341         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2342         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2343
2344         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2345
2346         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2347
2348         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2349
2350         * mono-semaphore.h: Skeleton implementation for Windows.
2351
2352         Code contributed under MIT/X11 license.
2353
2354 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2355
2356         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2357
2358         Code contributed under MIT/X11 license.
2359
2360 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2361
2362         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2363
2364         Code contributed under MIT/X11 license.
2365
2366 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2367
2368         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2369         debug info to 100 because 10 still slows down gdb too much.
2370
2371         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2372         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2373         them in the wrappers.
2374
2375 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2376
2377         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2378
2379         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2380
2381         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2382         function mono_aot_get_array_helper_from_wrapper ().
2383
2384         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2385         array helper methods.
2386
2387 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2388
2389         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2390         the value was loaded from memory.
2391
2392         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2393         the value was loader from there.
2394
2395         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2396         without constant swizzle.
2397
2398 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2399
2400         * mini-amd64.c: Put soft debugger functions behind a
2401         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2402
2403         * mini-amd64.h: disable the soft debugger in windows.
2404
2405         Code contributed under MIT/X11 license.
2406
2407 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2408
2409         * mini-x86.c: Put soft debugger functions behind a
2410         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2411
2412         Code contributed under MIT/X11 license.
2413
2414 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2415
2416         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
2417         to mono_arch_find_jit_info_ext.
2418
2419         Code contributed under MIT/X11 license.
2420
2421 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2422
2423         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2424
2425         * debugger-agent.c: Add support for filtering events by assemblies.
2426
2427         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2428         the agent is not enabled.
2429
2430 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2431
2432         * exceptions-x86.c: hopefully last change to fix the windows build.
2433         This one courtesy of Jonathan Chambers.
2434
2435 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2436
2437         * debugger-agent.c: remove unused function.
2438
2439 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2440
2441         * debugger-agent.c: add #ifdefs for a few header files.
2442         * mini-x86.h: disable the soft debugger in windows.
2443         Step 1 of 2 to make this compile on windows with gcc.
2444
2445 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2446
2447         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2448         as it breaks the build.
2449
2450 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2451
2452         Merge the soft debugger branch.
2453
2454         * debugger-agent.h debugger-agent.c: New files containing the soft
2455         mode debugger module.
2456
2457         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2458         at the appropriate locations.
2459
2460         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2461         opcode.
2462
2463         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2464         enable/disable single stepping.
2465
2466         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2467         which returns all information in a StackFrameInfo structure, and can handle the
2468         LMF frames added by the debugger.
2469
2470         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2471         about an LMF frame.
2472
2473         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2474         walker function which works on a specific thread and passes a StackFrameInfo
2475         structure to its callback.
2476
2477         * mini.c (mini_init): Initialize the debugger agent.
2478
2479         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2480
2481         * mini-ops.h: Add OP_SEQ_POINT opcode.
2482
2483         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2484         arguments to the debugger agent.
2485
2486 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2487
2488         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2489         speed things up.
2490
2491         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2492
2493         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2494
2495         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2496
2497         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2498         if needed.
2499         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2500         sets the IMT argument and makes a virtual call.
2501
2502         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2503
2504 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2505
2506         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2507         the windows build.
2508
2509 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2510
2511         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2512         runtime. Fixes #551228.
2513
2514 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2517
2518         * basic.cs: Add a test.
2519
2520         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2521         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2522         CONSTRAINED. Fixes #550964.
2523
2524         * generics.cs: Add a test.
2525
2526 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2527
2528         * mini-posix.c (add_signal_handler): Use
2529         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2530
2531 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2532
2533         Contributed under the terms of the MIT/X11 license by
2534         Jerry Maine <crashfourit@gail.com>.
2535
2536         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2537         sse4a for simd intrinsics.
2538
2539         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2540         sse4a for simd intrinsics.
2541
2542 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2545         instead of inst_p1 which is not the same on ILP32 platforms.
2546
2547 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2550         not the mscorlib one before calling mono_get_lmf_addr.
2551
2552         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2553         of the ip to the LMF.
2554
2555         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2556         immediate in the op->op_imm optimization.
2557
2558         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2559         understand. VTypes now work, but are not abi compliant, as they are
2560         split into 4 byte parts instead of 8.
2561         (emit_memcpy): Fix the unrolled case to work on the PS3.
2562
2563         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2564
2565         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2566         the default when static linking.
2567
2568         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2569
2570         * aot-compiler.c: Add an autoreg option to automatically register
2571         statically linked aot modules using ELF .ctors.
2572
2573         * genmdesc.pl: Add __ppc64__ to allowed defines.
2574
2575 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2576
2577         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2578         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2579
2580 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2581
2582         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2583
2584 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2587         which will contain the domain where the method was found.
2588
2589         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2590         mini_jit_info_table_find ().
2591
2592         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2593
2594         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2595
2596 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2597
2598         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
2599         set, its not supported yet.
2600
2601 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2602
2603         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
2604         iface wrapper is not found.
2605         (mono_aot_get_method): Ditto for GetGenericValueImpl.
2606
2607 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
2608
2609         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
2610         which have a different name.
2611
2612         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
2613         wrappers and Array.GetGenericValueImpl ().
2614
2615         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
2616         because of the change above.
2617
2618         * generics.cs: Add a test for full aot + generic array ifaces.
2619
2620 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
2621
2622         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
2623         that hides the previous one.
2624
2625 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
2626
2627         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
2628         marshalled. Fixes #541623.
2629
2630 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
2631
2632         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
2633
2634 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
2635
2636         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
2637
2638 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2639
2640         * mini-posix.c (sigprof_signal_handler):
2641         Implemented support for building stat call chans in different ways.
2642
2643 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2644
2645         * mini-exceptions.c (mono_find_jit_info):
2646         Also check that a jit info has been found (fixes a profiler crash).
2647
2648 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2649
2650         * mini.c (mono_codegen):
2651         Call mono_profiler_code_buffer_new with correct code address.
2652
2653 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * driver.c (mono_main): Change the date in the copyright.
2656
2657 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2658
2659         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2660         allocator in shared generic code for open classes, because we
2661         can't get those classes' vtables.  We need to make managed
2662         allocators not depend on the vtable at compile-time to solve this.
2663
2664 2009-10-13  Martin Baulig  <martin@ximian.com>
2665
2666         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2667         `const guint8 *trampoline' argument; send both the old and the new
2668         notification.
2669
2670 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2673         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2674         (can_marshal_struct): Skip structures with auto layout.
2675
2676         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2677
2678 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2679
2680         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2681         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2682         a variable to hold the stack slot used by the int<->float conversion opcodes.
2683
2684         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2685
2686 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2687
2688         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2689         when using full-aot.
2690
2691 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2692
2693         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2694         each instance of Comparer<T>.
2695
2696         * generics.cs: Add a new test.
2697
2698 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2699
2700         * driver.c (parse_debug_options): Add a 'gdb' option.
2701
2702         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2703
2704         * image-writer.c: Add support for emitting the image into a memory buffer.
2705
2706         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2707
2708         * aot-compiler.c: Add support for registering debug info with GDB using the
2709         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2710         MONO_XDEBUG to 'gdb'.
2711
2712 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2713
2714         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
2715         gdb mode.
2716
2717 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
2718
2719         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
2720         can be used to set breakpoints in gdb.
2721
2722         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
2723         segment to an absolute address.
2724
2725 2009-10-13  Mark Probst  <mark.probst@gmail.com>
2726
2727         * method-to-ir.c: Use the managed array allocator method if
2728         available.
2729
2730 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
2731
2732         * aot-compiler.c : Fix the MSVC builds
2733
2734         Code is contributed under MIT/X11 license.
2735
2736 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
2737
2738         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
2739         avoid registering 1 symbol file per method with gdb.
2740
2741 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * mini-sparc.c: Fix the handling of enums with base type long.
2744
2745         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
2746
2747         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
2748         instead of using type->data.klass as the later doesn't work with generics.
2749
2750 2009-09-25  Mark Probst  <mark.probst@gmail.com>
2751
2752         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
2753         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
2754         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
2755         works differently now and we don't handle it in the JIT anymore.
2756
2757         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
2758         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
2759         the Thread class split.
2760
2761 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
2762
2763         * driver.c: Don't run tests with the obsolete treeprop optimization.
2764
2765         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
2766         variable volatile. Fixes #541577.
2767
2768         * basic-calls.cs: Add a new test.
2769
2770         * basic-long.cs: Remove tests which are now in basic-calls.cs.
2771
2772 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
2775         work/required with recent iphone sdk versions.
2776
2777         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
2778         structures.
2779
2780         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
2781         in the VCALL decomposition code.
2782
2783 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
2784
2785         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
2786
2787         * basic.cs: Add a test.
2788
2789         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
2790         generic invokes.
2791
2792         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
2793         searches all the domains of the current thread.
2794
2795         * exceptions-<ARCH>.c: Use it. Fixes #539394.
2796
2797 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
2798
2799         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
2800         so catching exceptions thrown in the same method works. Fixes exception17.exe.
2801
2802         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
2803         for non-jit trampolines.
2804
2805         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
2806
2807         * aot-compiler.c (add_wrappers): Ditto.
2808
2809         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2810         the size of the param area used by dyn_call to 6 which covers the majority of
2811         methods.
2812
2813         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2814
2815         * mini-arm.c: Implement support for passing/receiving
2816         longs and receiving floats in the dyn_call code.
2817
2818         * mini-amd64.c: Implement support for receiving vtypes in registers in
2819         the dyn_call code.
2820
2821         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2822         the dyn_call code.
2823
2824 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2825
2826         * mini-arm.c (get_call_info): Return more precise information in
2827         ArgInfo->regtype.
2828         (dyn_call_supported): Use the information in CallInfo.
2829
2830         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2831
2832         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2833         code.
2834
2835         * mini-arm.c: Update after the dyn_call api changes.
2836
2837         * mini.c (mini_create_jit_domain_info): Register a destructor function
2838         for the runtime_invoke_hash.
2839
2840         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2841         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2842         this function.
2843         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
2844         (dyn_call_supported): Simplify this by using get_call_info ().
2845         (mono_arch_dyn_call_free): New destructor function.
2846
2847         * generics.cs: Remove a printf.
2848
2849         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
2850
2851         * mini-arm.c: Add support for enum return values and passing a few arguments
2852         on the stack.
2853         
2854         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
2855         dyn invoke.
2856
2857         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
2858
2859         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
2860         the dynamic invoke wrappers.
2861
2862         * mini-arm.c: Implement OP_DYN_CALL for arm.
2863
2864         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
2865         supported by the dynamic runtime invoke wrapper.
2866
2867         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
2868         runtime invoke wrapper.
2869
2870         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
2871         if possible when running with full-aot.
2872
2873         * mini-ops.h: Add OP_DYN_CALL opcode.
2874
2875         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
2876         with dynamic arguments lists similar to libffi.
2877
2878 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
2879
2880         * method-to-ir.c: Fix the previous change on 64 bit platforms.
2881         
2882         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
2883         to NEWARR.
2884
2885         * iltests.il.in: Add a new test.
2886         
2887 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
2888
2889         * aot-compiler.c (add_generic_instances): Add more instances of
2890         GenericEqualityComparer.
2891
2892 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2893
2894         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
2895
2896 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2897
2898         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
2899         comments on some functions that now can fail.
2900
2901 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
2902
2903         * Makefile.am: Add Info.plist to EXTRA_DIST
2904
2905 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2906
2907         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
2908         static synchronized wrappers. Fixes #539500.
2909
2910 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2911
2912         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2913         properly.
2914
2915 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
2918         lmf before calling filter clauses as well. Fixes #539550.
2919
2920         * exceptions.cs: Add a test.
2921         
2922 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
2923
2924         * aot-compiler.c (add_generic_class): Add instances of
2925         Array.GetGenericValueImpl as well.
2926
2927         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
2928         can be tested too.
2929
2930         * generics.cs: Add a fullaot linq test.
2931
2932 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
2933
2934         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
2935         reg r1 on arm.
2936
2937 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2938
2939         * mini-trampolines.c (mono_delegate_trampoline) : Call
2940           mono_cominterop_get_invoke if the delegate target object
2941           is a COM object.
2942
2943         Code is contributed under MIT/X11 license.
2944
2945 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
2946
2947         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
2948         internal call is defined outside platform code. Reduce code 
2949         duplication with existing [Method|Field]AccessException
2950
2951 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2952
2953         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
2954         if the return value is a small struct passed on regs.
2955
2956 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
2957
2958         * cpu-arm.md mini-arm.c: Remove unused opcodes.
2959
2960         * mini-codegen.c: Enable the cpu description validation for arm.
2961
2962 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
2963
2964         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
2965         test which depends on structs to objects.cs.
2966         
2967         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
2968         require object model related stuff working.
2969
2970         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
2971
2972         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
2973
2974         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
2975         against the instruction metadata in mini-ops.h. amd64 only for now.
2976
2977         * mini-ops.h: Fix some instruction descriptions.
2978
2979         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
2980         unused instructions.
2981
2982 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2983
2984         * exceptions.cs: Add a new test.
2985
2986 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2987
2988         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
2989
2990 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
2991
2992         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
2993         skip empty phi opcodes.
2994         
2995         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
2996         correctly by zero extending after loads. Skip methods containing calls
2997         to the monitor enter/exit trampolines.
2998
2999         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3000         when calling mono_thread_force_interruption_checkpoint ().
3001
3002         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3003
3004         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3005         64 bit thunks.
3006         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3007
3008         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3009         bootstrap could run.
3010
3011 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3014
3015 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3016
3017         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3018         of the method to
3019         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3020         LLVM might be very short.
3021
3022         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3023         in OP_THROW/RETHROW.
3024
3025         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3026         alignment on osx.
3027
3028 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3029
3030         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3031         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3032         LLVM might be very short.
3033
3034 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3037         the alignment for the value of sp.
3038
3039 2009-09-01  Geoff Norton  <gnorton@novell.com>
3040
3041         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3042         managed wrappers in full aot.
3043
3044 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3045
3046         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3047
3048 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3051
3052 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3053
3054         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3055
3056         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3057         saved info.
3058
3059         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3060
3061         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3062         depend on the info MonoMethodHeader which could be missing in IL stripped
3063         assemblies.
3064
3065 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3066
3067         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3068         they are only 4 byte aligned.
3069
3070 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3071
3072         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3073         was done previously, since using SP causes too many problems.
3074
3075         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3076         frames without a frame pointer works.
3077
3078         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3079         global register in methods with calls, since the calls can go through
3080         a static rgctx trampoline which doesn't save it.
3081
3082 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3083
3084         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3085
3086 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3087
3088         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3089
3090 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3091
3092         * method-to-ir.c: Fix warnings for uninitialized variables.
3093
3094 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3095
3096         * mini-exceptions.c:
3097         * aot-compiler.c: Fix printf warnings.
3098
3099 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3100
3101         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3102         Add GetGenericValueImpl<string>.
3103         
3104         * aot-compiler.c (add_generic_instances): Add instances of
3105         GenericEqualityComparer<T> for primitive types. Only emit the array
3106         wrappers into the mscorlib image.
3107
3108 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3109
3110         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3111         the methods_loaded array using amodule->info->nmethods.
3112
3113         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3114         (MONO_AOT_FILE_VERSION): Bump this.
3115
3116         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3117         to work.
3118
3119         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3120         MonoJitInfo doesn't belong to its methods aot image.
3121
3122 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3123
3124         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3125
3126         * mini-arm.c: Fix warnings.
3127         
3128         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3129
3130         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3131         supports it.
3132
3133 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3136         avoid clobbering IP.
3137
3138         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3139         hold the trampoline argument, so its initial value is available during
3140         debugging.
3141
3142 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3143
3144         * exceptions-arm.c:
3145         * exceptions-hppa.c:
3146         * mini.c:
3147         * exceptions-s390x.c:
3148         * exceptions-mips.c:
3149         * exceptions-ppc.c:
3150         * exceptions-sparc.c:
3151         * exceptions-alpha.c:
3152         * aot-runtime.c:
3153         * mini-trampolines.c:
3154         * exceptions-x86.c:
3155         * exceptions-s390.c: add and use #define's instead of sizeof()
3156         for MonoJitInfo and MonoJitInfoTable.
3157
3158 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3159
3160         * tramp-arm.c:
3161         * tramp-amd64.c:
3162         * tramp-ppc.c:
3163         * tramp-x86.c: use a #define instead of sizeof() for a few
3164         structures that use a zero-length array.
3165
3166 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3167
3168         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3169         case when the method is dynamic. Fixes #529238.
3170
3171 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3174         of asserting when a method is JIT compiled in full-aot mode.
3175
3176 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3177         
3178         Contributed under the terms of the MIT/X11 license by
3179         Jerry Maine <crashfourit@gail.com>.
3180         
3181         * fixed wrong dates in changelog.
3182
3183 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3184         
3185         Contributed under the terms of the MIT/X11 license by
3186         Jerry Maine <crashfourit@gail.com>.
3187
3188         * basic-simd.cs: added test for packed double square root.
3189         * cpu-amd64.md: added opcode info for packed double square root.
3190         * cpu-x86.md: added opcode info for packed double square root.
3191         * mini-ops.h: added IR opcode for packed double square root.
3192         * mini-x86.c: added IR to native translation code for packed double square root.
3193         * mini-amd64.c: removed todo for packed double square root.
3194         * simd-intrinsics.c: added method to IR opcode converstion for
3195         packed double square root.
3196
3197 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3198
3199         Contributed under the terms of the MIT/X11 license by
3200         Jerry Maine <crashfourit@gail.com>.
3201
3202         * mini-amd64.c: Added a change to help tell the difference as 
3203         to what perpose the xmm register is being used--mainly to help
3204         with debuging.
3205         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3206         (one used for special cases) xmm registers for both fp
3207         and simd ops. Added define to turn on new feature in the regalloc
3208         that allows fp and simd ops to share the xmm regs happily.
3209         * codegen.c: Added code to detect for which perpose an xmm reg is
3210         being used (fp or simd) and to translate back and forth to the
3211         correct logical reg bank (fp or simd) for 'spill load's.
3212
3213 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3214
3215         Contributed under the terms of the MIT/X11 license by
3216         Jerry Maine <crashfourit@gail.com>.
3217
3218         * basic-simd.cs: Added tests for stressing the regalloc when running with
3219         16 simd regs and when simd and fp ops share the same reg bank.
3220
3221 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3222
3223         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3224         in shared generic code, we might have to look up the class in the
3225         RGCTX.  If we use the class directly, compute its GC descriptor.
3226
3227 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3228
3229         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3230
3231 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3232
3233         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3234         check for errors. Fixed the case when the class with the Main
3235         method is broken.
3236
3237 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3238
3239         Contributed under the terms of the MIT/X11 license by
3240         Jerry Maine <crashfourit@gail.com>.
3241
3242         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3243
3244 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3245
3246         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3247
3248 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3249
3250         * method-to-ir.c: Fix naming of stelem and ldelem.
3251
3252 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3253
3254         * driver.c (main_thread_handler): Check that the assembly loaded
3255         matches the filename when doing AOT.
3256
3257 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3258
3259         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3260         call it anymore.
3261
3262         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3263         utils/mono-sigcontext.h).
3264
3265         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3266         #ifdef.
3267
3268 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3269
3270         * mini.c (mono_codegen):
3271         Call profiler hook to keep track of method code buffers.
3272
3273 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3274
3275         * method-to-ir.c: Invoke write barriers for the
3276         Interlocked.(Compare)Exchange JIT intrinsics.
3277
3278 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3279
3280         * Makefile.am (version.h): Fix issues when built out of tree.
3281         Remove some redundant 'grep's piped through 'sed's.
3282
3283 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3284
3285         This patch is contributed under the terms of the MIT/X11 license
3286
3287         * mini-ppc.c (mono_arch_output_basic_block):
3288         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3289         for bits 32-47 with signed load/store diplacements for bits
3290         48-63.  Use prefered base/offset order for indexed form.
3291         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3292         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3293         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3294         OP_LOADI2_MEMBASE): Same.
3295         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3296         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3297         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3298         indexed form.
3299         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3300         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3301         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3302         OP_LOADI1_MEMINDEX): Same
3303         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3304         OP_STORER8_MEMINDEX): Same
3305         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3306         computations.
3307         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3308         for bits 32-47 with signed load/store diplacements for bits
3309         48-63.  Use prefered base/offset order for indexed form.
3310
3311 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3312
3313 This patch is contributed under the terms of the MIT/X11 license
3314
3315         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3316         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3317         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3318         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3319         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3320         cfg->stack_usage to avoid size warnings.
3321         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3322         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3323         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3324         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3325         to convert.
3326         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3327         after code varible is initialized.
3328         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3329         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3330         (mono_arch_emit_epilog): 
3331         Move Use ppc_load32 for cfg->stack_usage to avoid size
3332         warnings.
3333
3334 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3335
3336         * method-to-ir.c: The write barrier doesn't do the store anymore,
3337         so we have always to emit it.  Also, emit the wbarrier after the
3338         store.
3339
3340 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3341
3342         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3343         for argument count 3 too.
3344
3345 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3346
3347         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3348         the caller handle the exceptions.
3349         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3350         method. Fixes #524498.
3351
3352 2009-07-22  Geoff Norton  <gnorton@novell.com>
3353
3354         * mini-exceptions.c: Fix build on ia64.
3355
3356 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3357
3358         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3359         barriers.
3360
3361 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3362
3363         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3364         code.
3365
3366 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3367
3368         * basic-simd.cs (Main): Pass args to the test driver.
3369
3370 2009-07-20  Geoff Norton  <gnorton@novell.com>
3371
3372         * mini-x86.h: Fix the x86 version guards to use Apple's
3373         properly defined macros.
3374
3375 2009-07-20  Geoff Norton  <gnorton@novell.com>
3376
3377         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3378         aligned access.
3379
3380 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3383         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3384         the information which is needed for invokes, so only one locking+hash table
3385         lookup is needed.
3386
3387         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3388         
3389         * aot-compiler.c (add_generic_instances): Emit instances of 
3390         GenericComparer<T> for primitive types.
3391
3392 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3393
3394         * mini-posix.c: Fix linux build.
3395
3396 2009-07-19  Geoff Norton  <gnorton@novell.com>
3397
3398         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3399         mono_gdb_render_native_backtraces
3400         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3401         so we implement the sane semantics to the runtime here
3402         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
3403         so we need to call it differently (mono_gdb_render_native_backtraces)
3404         * mini-posix.c: Move the old semantics from mini.c to the prototypes
3405         here for default implementations.
3406         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
3407         support Apple's weird syscall (SYS_fork) implementation and not busy
3408         loop in abort() on native crashes on OSX anymore.
3409
3410 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
3411
3412         * aot-runtime.c (load_method): Change the handling of the
3413         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
3414         are used.
3415
3416         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
3417
3418 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * mini.c (mono_patch_info_equal): Revert the last change for now as it
3421         seems to break the aot tests.
3422         
3423         * mini.c (mono_patch_info_equal): Fix the handling of 
3424         MONO_PATCH_INFO_RGCTX_FETCH.
3425
3426 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3429
3430         * mini.c (mono_patch_info_hash): Fix the handling of 
3431         MONO_PATCH_INFO_INTERNAL_METHOD.
3432         (mono_patch_info_equal): Ditto.
3433
3434 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3435
3436         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3437         in a few places.
3438         
3439         * mini-llvm.c: Add some infrastructure for AOT support.
3440
3441 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3442
3443         * mini-llvm-cpp.c: Update to the latest llvm api.
3444         
3445         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3446         option to false to prevent llvm from installing signal handlers which
3447         trip up the gc.
3448         
3449 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3450
3451         * cpu-x86.md:
3452         * cpu-amd64.md: Revert previous change as those instructions
3453         take 2 separate arguments. Remember to read the arch docs more
3454         carefully next time.
3455
3456 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3457
3458         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3459
3460 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3461
3462         * mini-ppc.c: exploit multiple load/store units if available (rest of
3463         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3464         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3465
3466 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3467
3468         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3469         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3470
3471 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3472
3473         * cpu-x86.md: Fix missing clobbering from trancendental simd
3474         ops.
3475
3476         * cpu-amd64.md: Same.
3477
3478 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3479
3480         Contributed under the terms of the MIT/X11 license by
3481         Jerry Maine <crashfourit@gail.com>.
3482
3483         * basic-simd.cs: Added tests for single and doulble indexers.
3484
3485         * cpu-amd64.md: Added simd opcode information.
3486
3487         * mini-amd64.c: Added IR to native simd generation code.
3488         Added simd register names and function that returns them.
3489
3490         * mini-amd64.h: Added marcos to turn on simd code compilation in
3491         amd64. Added max simd register count marco. Added caller/callee
3492         register mask marcos. Added marcos to use simd register bank.
3493
3494         * mini.h: Added helper marco for shufling dwords and simple
3495         floats.
3496
3497 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3498
3499         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3500
3501         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3502
3503         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3504         the length of the native code as well.
3505
3506         * basic-simd.cs: Add a test for #521662.
3507
3508 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3509
3510         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3511
3512 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3513
3514         * mini.c: Register function for getting the IP from a signal
3515         context with metadata.
3516
3517 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3518
3519         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3520         call a generic class init trampoline if needed. Fixes #519336.
3521
3522         * generics.cs: Add a test.
3523         
3524 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3525
3526         * method-to-ir.c: When doing a call which might be remote from
3527         shared generic code to other shared code with open type arguments,
3528         get the remoting invoke wrapper from the RGCTX and do an indirect
3529         call to it.
3530
3531 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3532
3533         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3534         after the unbox trampoline in the full-aot case.
3535
3536 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3537         
3538         * mini.c: Move initialization of jit_mutex before debugger initialization
3539         
3540         to avoid crashes.
3541         
3542         
3543         * Info.plist: added Info.plist and link flag to enable the mono executable
3544         to access other processes. Requires codesigning of the executable to work.
3545         
3546         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3547         
3548         compile on OS X.
3549         
3550
3551 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3552
3553         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3554
3555 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3556
3557         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3558         when the generic instance is an instantiation of a subclass of the
3559         methods class. Fixes #517166.
3560
3561 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3564         code.
3565
3566         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3567         AOTed code.
3568
3569         * CMakeLists.txt: Add minimal support for installation.
3570
3571 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3572
3573         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3574         determine whenever a method is directly callable to a separate function.
3575
3576         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3577         needed ones as a result of the previous change.
3578
3579         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3580         type of register arrays.
3581
3582         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3583         type of register arrays.
3584
3585 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3586         
3587         Contributed under the terms of the MIT/X11 license by
3588         Jerry Maine <crashfourit@gail.com>.
3589
3590         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3591
3592 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3593
3594         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3595
3596 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3597
3598         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
3599         dump of structure return value. Fix some formatting.
3600         * cpu-s390x.md: Fix lengths of instruction sequences.
3601         * mini-s390.c: Minor formatting changes.
3602
3603 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3604
3605         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
3606         Use sigaction on freebsd as well.
3607
3608 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
3609
3610         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
3611         uses #ifdef on it.
3612         
3613         * mini.c (mini_init): Revert a change which breaks cross-compilation.
3614
3615 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3616
3617         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
3618
3619 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3620
3621         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
3622
3623 2009-06-20  Martin Baulig  <martin@ximian.com>
3624
3625         * debug-mini.c
3626         (MonoDebuggerThreadFlags): New enum typedef.
3627         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
3628         (mono_debugger_thread_created): Added `gpointer func' argument;
3629         initialize the new `thread_flags' field.
3630
3631 2009-06-18  Martin Baulig  <martin@ximian.com>
3632
3633         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
3634         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
3635
3636         * debug-debugger.c
3637         (mini_debugger_set_attach_ok): New function; sets the attach-ok
3638         flag in `MONO_DEBUGGER__info.runtime_info'.
3639
3640         * driver.c
3641         (mono_main): Call mini_debugger_set_attach_ok() if generics
3642         sharing is disabled.
3643
3644 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3645
3646         * aot-compiler.c (add_wrappers): Fix a warning.
3647
3648         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3649         the ppc load/store macro changes.
3650
3651 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3652
3653         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3654
3655         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3656         not just the got symbol.
3657
3658         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3659         on ppc.
3660
3661         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3662         ppc.
3663         
3664         * aot-compiler.c: Remove some fixmes.
3665
3666         * driver.c (mono_main): Print a helpful message when cross-compiling.
3667
3668         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3669
3670         * method-to-ir.c (initialize_array_data): Do the optimization if the
3671         target byte order is little endian, instead of the host byte order.
3672
3673         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3674         wrappers into the mscorlib image, Emit a unique plt symbol for each
3675         image, emit symbols for plt entries.
3676
3677         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3678         a .size directive.
3679         
3680 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3681
3682         * aot-compiler.c (add_wrappers): Avoid calling 
3683         mono_marshal_get_type_info () since it can assert for some types.
3684
3685         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3686         ldtoken are used inside wrappers.
3687
3688         * helpers.c: Add support for prefixing tools with the arch name.
3689
3690         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3691         quantities when using ilp32.
3692
3693         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3694         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3695
3696         * image-writer.c: Use .long on ilp32.
3697
3698         * aot-compiler.c: Use 32 bit loads on ilp32.
3699         
3700 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3701
3702         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3703
3704         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3705
3706         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3707
3708         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3709         second got slot of every aot image.
3710         
3711         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3712         aot on platforms with function pointers.
3713
3714         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
3715         support for aot/full aot on ppc/ppc64.
3716         
3717         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
3718         arguments which are needed on ppc.
3719
3720         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
3721         argument.
3722
3723         * mini-trampolines.c aot-runtime.c: Update after the above changes.
3724         
3725         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
3726
3727         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
3728
3729         * aot-compiler.c (emit_got_info): Fix reading unused memory.
3730
3731         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
3732
3733 2009-06-17  Geoff Norton  <gnorton@novell.com>
3734
3735         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
3736
3737 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
3738
3739         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
3740         to control whenever the dwarf writer is in xdebug or aot mode.
3741         (emit_class_dwarf_info): Use a separate abbrev for structures without
3742         children.
3743
3744         * aot-compiler.c: Pass the appending parameter to 
3745         mono_dwarf_writer_create ().
3746
3747         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
3748         falls through to its next bblock. Fixes #513931.
3749
3750         * iltests.il: Add a test.
3751
3752         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
3753         infor even if emit_line is FALSE, as the apple linker seems to require it.
3754
3755         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
3756
3757         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
3758         gcc does.
3759         (emit_fde): Ditto.
3760
3761 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
3762
3763         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
3764         mips build.
3765
3766 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
3767
3768         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
3769         'has_call_handler' fields.
3770
3771         * method-to-ir.c (mono_method_to_ir): Set them if needed.
3772
3773         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
3774         first bblock if not needed. Fixes #512790.
3775         
3776 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3777
3778         * aot-compiler.c (mono_compile_assembly): Fix a warning.
3779         
3780         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
3781         wrappers.
3782
3783         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
3784         remoting-invoke-with-check wrappers, which are not needed when running with
3785         full-aot, since it doesn't support remoting.
3786         
3787 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3788
3789         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
3790
3791         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
3792         method info, it is not used anymore.
3793
3794         * mini.h: Bump AOT file format version.
3795         
3796         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
3797         word smaller.
3798
3799         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
3800         change above.
3801         
3802         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
3803
3804         * mini.h: Bump AOT file format version.
3805         
3806 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3809         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3810         iphone.
3811
3812         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3813         of CKFINITE and FBGE for VFP.
3814
3815 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3816
3817         * aot-compiler.c: Don't align code to 16 bytes on arm.
3818         
3819         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3820         before the methods they belong to.
3821
3822         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3823         the full-aot case if possible, since the trampoline will be called right 
3824         away.
3825
3826         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3827         trampolines to 1024 after the change above.
3828
3829         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3830         trampoline to save 8 bytes per trampoline.
3831
3832         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3833         change above.
3834
3835 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3836
3837         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3838
3839 2009-06-08  Martin Baulig  <martin@ximian.com>
3840
3841         * debug-mini.c
3842         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3843         (_mono_debugger_throw_exception): Don't make this static.
3844         (_mono_debugger_unhandled_exception): Likewise.
3845         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3846
3847         * debug-mini.c
3848         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3849         (_mono_debugger_throw_exception): Add function prototype.
3850         (_mono_debugger_unhandled_exception): Likewise.
3851
3852         * mini-exceptions.c
3853         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3854         arg; return the first exception handler if the exception is caught
3855         and we're running inside the debugger.
3856         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3857         improve exception handle inside runtime-invoke, check whether the
3858         exception is actually caught in the method being invoked and not
3859         by the runtime-invoke-wrapper.
3860
3861 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * image-writer.c: Improve support for the osx assembler.
3864
3865         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
3866         support them.
3867
3868 2009-06-08  Martin Baulig  <martin@ximian.com>
3869
3870         * debug-mini.c
3871         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3872         (_mono_debugger_throw_exception): Don't make this static.
3873         (_mono_debugger_unhandled_exception): Likewise.
3874         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3875
3876         * debug-mini.c
3877         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3878         (_mono_debugger_throw_exception): Add function prototype.
3879         (_mono_debugger_unhandled_exception): Likewise.
3880
3881         * mini-exceptions.c
3882         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3883         arg; return the first exception handler if the exception is caught
3884         and we're running inside the debugger.
3885         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3886         improve exception handle inside runtime-invoke, check whether the
3887         exception is actually caught in the method being invoked and not
3888         by the runtime-invoke-wrapper.
3889
3890 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
3891
3892         * image-writer.c (append_subsection): Don't align subsections of the
3893         debug_line section as a workaround.
3894
3895         * dwarfwriter.c: Emit line number info in the AOT case as well.
3896
3897 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
3898
3899         This patch is contributed under the terms of the MIT/X11 license
3900
3901        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
3902        code_len <= code_size
3903
3904 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
3905
3906         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
3907
3908 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3909
3910         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3911         invoke wrappers, we now use trampolines instead.
3912
3913 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3914
3915         * mini-darwin.c: The exception thread must not be registered with
3916         the GC.
3917
3918 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3919
3920         * mini-gc.c: Disable the code because it makes SGen crash.
3921
3922 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3923
3924         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
3925         instead of asserting.
3926
3927 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3928
3929         * aot-compiler.c (mono_compile_assembly): Move the creation of the
3930         output file after the code has been compiled.
3931
3932 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
3933
3934         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
3935
3936 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3937
3938         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
3939         entries distinction to simplify the code.
3940
3941         * mini.h: Bump AOT file format version.
3942         
3943 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * objects.cs: Fix the signature of one of the tests.
3946
3947         * mini.c (mini_create_ftnptr): New helper function, moved here from
3948         object.c.
3949         (mini_get_addr_from_ftnptr): Ditto.
3950         (mini_init): Install the new helpers.
3951
3952 2009-05-28  Martin Baulig  <martin@ximian.com>
3953
3954         Correctly initialize the debugger when embedding Mono.
3955
3956         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
3957         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
3958         see documentation in mini_debug_running_inside_mdb().
3959
3960         * debug-debugger.c
3961         (mini_debug_running_inside_mdb): New function to check whether
3962         we're running inside mdb.
3963
3964         * mini.c (mini_init): Call mini_debugger_init() if we're running
3965         inside the debugger.
3966
3967         * driver.c (mono_main): Moved the call to mini_debugger_init()
3968         into mini_init() to make this work when embedding Mono.
3969
3970         * debug-debugger.c (mini_debugger_init): Warn about duplicate
3971         calls to mini_debugger_init().
3972
3973         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
3974         mono_debugger_main() -> mini_debugger_main() and put them inside a
3975         `MONO_DEBUGGER_SUPPORTED' conditional.
3976
3977 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3978
3979         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
3980         this is no longer in use.
3981         * mini.h: Same.
3982
3983 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
3984
3985         * mini-sparc.c (add_outarg_load): Fix the sparc build.
3986
3987         * aot-compiler.c (emit_method_code): Always write out C style symbols for
3988         methods.
3989
3990 2009-05-27  Martin Baulig  <martin@ximian.com>
3991
3992 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3993
3994         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
3995         long_conv_to_r_un to 64 bits.
3996
3997         * cpu-x86.md: Increase the instruction size due to the changes.
3998
3999         * iltests.il.in: Add regression test.
4000
4001         Fixes #467201.
4002
4003 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4004
4005         * objects.cs: Move the previous test from basic.cs to here.
4006
4007 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4008
4009         * basic.cs: Add regression test for #506915.
4010
4011 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4012
4013         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4014         optimization we must check the bb of the first byte of stobj as
4015         it's the only one set in cil_offset_to_bb.
4016
4017         Fixes #506915.  
4018
4019 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4020
4021         * image-writer.c: Fix pointer directive on ppc64.
4022
4023 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * image-writer.c (asm_writer_emit_section_change): Avoid using
4026         .bss subsections on ppc too.
4027
4028 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4029
4030         * image-writer.c: Fix the definition of TARGET_ASM_....
4031         
4032         * image-writer.c: Fix the emission of assembler directives in the last
4033         change.
4034
4035         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4036         exception throwing code to accomodate ppc64.
4037
4038         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4039         size to work on ppc64 too.
4040
4041         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4042         too.
4043
4044         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4045         the assembler dialect instead of using platform specific defines.
4046
4047 2009-05-22  Geoff Norton  <gnorton@novell.com>
4048
4049         * mini-arm.c (get_call_info): If a structure is split between the stack
4050         and argument registers, we should not advance the stack pointer by the entire
4051         native size, but just by the amount that spilled.
4052
4053 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4054
4055         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4056         correctly.
4057
4058 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4061         wrappers normally.
4062         
4063         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4064         methods so wrapper don't get added twice.
4065         (add_generic_instances): Don't add methods of arrays.
4066
4067         * generics.cs: Mark one test as !FULLAOT.
4068
4069 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4070
4071         * mini-x86.c (emit_move_return_value): Remove unused vars.
4072
4073 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4074
4075         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4076         decomposing 8 bytes structs into a LCALL.
4077
4078         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4079         pointer for where to store the returned regs.
4080
4081         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4082         state the concern.
4083
4084         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4085
4086 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4087
4088         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4089         without getenv.
4090
4091 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4094
4095         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4096         generics.
4097
4098 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4099
4100         * local-propagation.c (mono_local_cprop): Avoid local propagation
4101         across paired add/sub if the first instruction dest reg is it's
4102         source reg. For example:
4103
4104         int_add_imm R12 <- R12 [1] clobbers: 1
4105         int_sub_imm R42 <- R12 [1] clobbers: 1
4106
4107         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4108         maintain the math identify.
4109
4110         Fixes #505375.
4111
4112 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4113
4114         * Makefile.am: avoid going on the network just to get the revision,
4115         use git log instead
4116
4117 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4118
4119         Fixed estimate for short branches on amd64 (they were off mark, and
4120         enabling call prolog-epilog instrumentations caused assertions).
4121         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4122         estimate for the maximum length of this basic block.
4123         * mini-amd64.c:
4124         - mono_arch_emit_prolog: compute max_length for each basic block
4125           (instead of max_offset), and inflate size estimate also for entry bb
4126           in case of code instrumentation.
4127         - mono_arch_output_basic_block: get rid of "cpos" (the current
4128           estimated "position" in the code), and always use "offset" instead,
4129           which is accurate; at the beginning of the function quickly recompute
4130           max_offset for all the remaining blocks, starting from the current
4131           cfg->code_len (which is correct, and not estimated) and using the
4132           estimated block lengths computed previously.
4133
4134 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4135
4136         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4137         functions, it is already done in the caller.
4138
4139         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4140
4141         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4142         MONO_ARCH_GSHARED_SUPPORTED define.
4143
4144         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4145
4146         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4147         function.
4148
4149 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4150
4151         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4152         call to mono_marshal_get_rgctx_invoke ().
4153
4154         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4155         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4156         gshared use the static rgctx trampolines now.
4157         
4158         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4159         platform supports it.
4160
4161 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4162
4163         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4164
4165         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4166
4167 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4168
4169         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4170
4171         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4172         for ppc.
4173
4174 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4175
4176         Made it possible for mono_arch_instrument_epilog to preserve
4177         argument registers, otherwise instrumenting the "epilogue" before
4178         a tail call would clobber them.
4179         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4180         if like mono_arch_instrument_epilog but with an additional parameter
4181         that states if argument registers must be preserved.
4182         * mini.c: implemented mono_arch_instrument_epilog as a call to
4183         mono_arch_instrument_epilog_full without asking to preserve argument
4184         registers (this makes the existing code work as usual).
4185         * mini-amd64.c:
4186         - mono_arch_instrument_epilog: add parameter to transform it into
4187         mono_arch_instrument_epilog_full, and preserve argument registers
4188         when required.
4189         - mono_arch_output_basic_block, OP_TAILCALL case: call
4190         mono_arch_instrument_epilog_full.
4191         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4192         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4193         only transformed mono_arch_instrument_epilog into
4194         mono_arch_instrument_epilog_full.
4195
4196 2009-05-15  Geoff Norton  <gnorton@novell.com>
4197
4198         * mini-darwin.c: This works on arm now.
4199
4200 2009-05-14  Geoff Norton  <gnorton@novell.com>
4201
4202         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4203         embedding api.
4204
4205 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4206
4207         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4208         label names.
4209
4210         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4211         wrappers during full aot mode correctly.
4212
4213         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4214         methods correctly.
4215
4216         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4217         mono_metadata_type_hash ().
4218
4219 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4220
4221         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4222         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4223         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4224         Removed MONO_INST_BRLABEL from the instruction flags, and the
4225         remaining code that used it, because we do not support branches inside
4226         basic blocks (and branch target labels) anymore.
4227         * Makefile.am: As part of the above cleanup, remove reference to
4228         BURG files which don't exist anymore.
4229
4230 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4231
4232         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4233         osx.
4234
4235         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4236         to use mono_arch_throw_corlib_exception.
4237
4238         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4239         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4240
4241         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4242         domain mempool.
4243
4244         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4245
4246         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4247         for the got to make debugging easier and to avoid confusing it with the
4248         system got.
4249         
4250         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4251         method so a breakpoint can be set when using gdb.
4252
4253 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4254
4255         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4256         on mono_method_get_imt_slot ().
4257
4258         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4259         num_decodes variables.
4260
4261         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4262         change as it doesn't seem to work.
4263         
4264         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4265         wrappers.
4266
4267 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4268
4269         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4270         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4271
4272         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4273         builder when using full aot.
4274
4275         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4276         here, it is already handled.
4277         
4278         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4279         correctly for IMT.
4280
4281         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4282
4283         * mini-arm.h: Enable IMT for full aot.
4284         
4285         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4286         arch doesn't support it.
4287
4288         * mini.c (mini_init): Don't disable IMT for full aot if the
4289         architecture supports it.
4290
4291         * mini.h (MonoAotTrampoline): New enum containing the different types
4292         of 'numerous' trampolines.
4293         (MONO_AOT_FILE_VERSION): Bump this.
4294
4295         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4296         static rgctx trampolines. Add support for full-aot IMT thunks.
4297
4298         * mini-amd64.h: Enable IMT for full aot.
4299
4300         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4301         to exclude tests belonging to a category.
4302
4303         * generics.cs: Mark some tests with a !FULLAOT category.
4304
4305         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4306         generics tests.
4307
4308 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4309
4310         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4311         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4312         (emit_plt): Fix a warning.
4313
4314 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4315
4316         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4317         back into aot-compiler.c to a place where the other functions shared by
4318         the runtime and aot compiler are.
4319         
4320         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4321         as done previously, instead of in MonoAotFileInfo, since pointers might have
4322         alignment requirements.
4323
4324         * mini.h: Bump AOT file format version.
4325
4326 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4327
4328         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4329         that is used at runtime from the aot-compiler.c, this makes it
4330         work on setups that remove the AOT compiler from the output
4331         image. 
4332
4333 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4336         PPC.
4337
4338         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4339
4340         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4341
4342         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4343         stuff to mono_arch_decompose_long_opts ().
4344         (mono_decompose_opcode): Remove some dead code.
4345
4346 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4347
4348         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4349         cmethod can be null for quite a some reasons.
4350
4351 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4352
4353         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4354
4355 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4356
4357         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4358
4359 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4362         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4363         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4364         calls returning structures by addr on amd64.
4365
4366         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4367
4368         * iltests.il.in: Restructure the tail call tests a bit.
4369         
4370 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4371
4372         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4373         for virtual methods too.
4374
4375 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4376
4377         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4378         due to regression in verifying System.dll.
4379
4380 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4381
4382         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4383         in dynamic methods.
4384
4385         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4386         instances.
4387
4388         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4389         g_str_hash () which can change.
4390
4391         * driver.c (mini_regression): Disable optimizations not supported by
4392         the cpu. Fixes #500019.
4393
4394         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4395         build.
4396
4397 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4398
4399         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4400         to the latest LLVM code.
4401
4402 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
4403
4404         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
4405
4406 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
4409         x86/amd64.
4410
4411         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
4412         no longer saving offsets, so just save the patch types along with the other
4413         info.
4414         * aot-runtime.c (load_patch_info): Update after the changes to 
4415         encode_patch_list ().
4416         (decode_got_entry): Removed, merged into load_patch_info ().
4417         (is_shared_got_patch): Removed, call the same function from
4418         aot-compiler.c.
4419
4420         * mini.h: Bump aot file format version.
4421         
4422         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4423         half-finished no-dlsym code.
4424
4425         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4426         option.
4427
4428         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4429         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4430
4431 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4432
4433         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4434         buffer length to work with AOT code.
4435
4436         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4437         ldfld/stfld opcodes.
4438
4439         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4440         as it is not used.
4441
4442         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4443
4444         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4445
4446         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4447         LLVM API.
4448
4449         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4450         if needed. Don't decompose long operations when using llvm.
4451
4452 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4455         PAGESIZE constant.
4456
4457         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4458
4459 2009-05-03  Martin Baulig  <martin@ximian.com>
4460
4461         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4462         mono_debugger_insert_method_breakpoint() since the class init
4463         handler we're inserting at the top of the method already gives us
4464         a notification.
4465
4466 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4467
4468         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4469         to mono_arch_decompose_long_opts () for x86 and arm.
4470
4471 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4472
4473         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4474         TARGET_AMD64 here.
4475
4476 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4477
4478         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4479         JIT code.
4480
4481 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4482
4483         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4484         number of trampolines used in full-aot mode.
4485
4486         * aot-compiler.c: Add an ntrampolines option to set the number of 
4487         trampolines emitted in full-aot mode.
4488
4489 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4492         a volatile load. Get rid of get_tempname (), llvm assigns names
4493         automatically.
4494
4495         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4496         builder function.
4497
4498         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4499         a value.
4500
4501         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4502         level 1.
4503
4504         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4505         to the same register as a fixed sreg2. Fixes #497271.
4506
4507         * iltests.il.in: Add a new test.
4508
4509 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4510
4511         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4512         stack, since pushes complicate exception handling.
4513
4514         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4515         the stack if they are passed using moves.
4516
4517         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4518
4519         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4520         when using llvm.
4521
4522         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4523         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4524         of FMOVE if it is an R4.
4525
4526 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4527
4528         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4529
4530         * mini.h (LLVMCallInfo): New structure to store calling convention 
4531         information for the LLVM back end similar to the CallInfo structures in 
4532         the back-ends.
4533
4534         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4535         call information in a format usable by LLVM.
4536         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4537
4538         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4539         mono_llvm_emit_call () when compiling using LLVM.
4540
4541         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4542         comments to all functions. Fix memory leaks. Add a public init/cleanup
4543         function.
4544
4545         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4546
4547         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4548         mono_array_new_va () jit icall.
4549         
4550 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4551
4552         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4553         multiple machine description files to be specified.
4554         * mini-ops.h: fixes for cross-compilation.
4555
4556 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4557
4558         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4559         some porting work.
4560
4561 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4562
4563         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4564         to prevent asserts in various passes. Fixes #497220.
4565
4566 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4567
4568         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4569         a racy assert.
4570
4571         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4572         table to avoid duplicates.
4573
4574         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4575         
4576         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4577         option is used.
4578
4579 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4580
4581         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4582         is for method or field access.
4583
4584 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4585
4586         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4587         a Value to stdout.
4588
4589         * mini-llvm.c (mono_llvm_emit_method): Use it.
4590         
4591         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4592         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4593         on volatile values.
4594
4595         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4596         synchronized methods.
4597
4598         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
4599
4600         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
4601
4602         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
4603         OP_LOADI8_MEM.
4604
4605         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
4606         allowing some options to be set dynamically.
4607
4608 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
4611         unconditional branch.
4612
4613         * mini.h (MonoTrampolineType): Add new trampoline type 
4614         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
4615         compiled code.
4616
4617         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
4618         function.
4619
4620         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
4621         creation function.
4622
4623         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
4624         is enabled. Instead, use the llvm vcall trampoline.
4625         
4626         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
4627
4628         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
4629         
4630         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
4631         functions.
4632
4633         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
4634         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
4635
4636         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
4637         OP_IA64_CSET opcode.
4638
4639         * mini.c: Fix a warning.
4640
4641         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4642         THROW to the appropriate llvm type.
4643
4644 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4645
4646         * mini.c (mini_method_compile): Add statistics for methods JITted
4647         with/without LLVM.
4648
4649 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4650
4651         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4652         OP_IA64_CMP_<cond>_IMM opcodes.
4653
4654 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4655
4656         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4657         corlib exceptions.
4658
4659         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4660         correctly.
4661
4662         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4663         GENERICINST.
4664
4665 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4666
4667         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4668
4669 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4672         support.
4673
4674         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4675         rgctx invoke trampolines for x86.
4676
4677         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4678         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4679         (mono_arch_get_vcall_slot): Simplify this.
4680
4681 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4682
4683         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4684         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4685
4686 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4687
4688         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4689         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4690
4691         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4692
4693         * liveness.c (visit_bb): Remove a needless assert.
4694
4695 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4696
4697         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4698         full aot support to the arch specific code.
4699
4700         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4701
4702         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4703
4704         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4705         
4706         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4707         collect information about the delegate invoke impl trampolines.
4708
4709         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4710         to save trampolines during full-aot mode.
4711
4712         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
4713         creation function which returns a trampoline which sets the rgctx
4714         argument.
4715         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
4716         wrapper if possible.
4717         (mono_delegate_trampoline): Ditto.
4718
4719         * mini.c (mono_jit_runtime_invoke): Ditto.
4720
4721         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
4722         
4723         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
4724
4725         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4726         
4727 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
4730         just setting the opcode to OP_NOP.
4731
4732 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
4733
4734         * mini.c (mini_method_compile): Put the last change inside an 
4735         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
4736         
4737         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
4738         and extend live ranges to cover the whole method when using xdb.
4739
4740         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
4741         do it in the trampolines.
4742
4743         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
4744         needed.
4745
4746         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
4747         
4748         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
4749         call code in full-aot mode since IMT is disabled there.
4750         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
4751         new JIT no longer has that restriction.
4752
4753         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4754
4755         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
4756         a more compact format.
4757         (mono_aot_wrapper_name): New function to return a unique name for a
4758         wrapper method, also used by the AOT runtime.
4759
4760         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
4761         aot-compiler.c.
4762
4763         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
4764         when a ICollection<T> etc is encountered.
4765         (add_generic_instances): Process method arguments/locals too.
4766         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
4767         trampoline names.
4768
4769         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
4770         
4771 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
4774
4775         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
4776
4777         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
4778         representing the result of the decomposition. Nullify instructions
4779         instead of setting them to OP_NOP since nops can't have registers
4780         set.
4781
4782 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * aot-compiler.c (mono_compile_assembly): Split this huge function into
4785         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
4786         info. Strip 'mapping symbols' on ARM.
4787
4788         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
4789         
4790         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
4791         this with the native genmdesc.
4792
4793 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
4794
4795         * aot-runtime.c:  Fixing the MSVC build.
4796
4797         Code is contributed under MIT/X11 license.
4798
4799 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4800
4801         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
4802         JITted code depends on it.
4803
4804 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4805
4806         * aot-compiler.c: Use new MonoGenericParam accessors.
4807
4808 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4809
4810         Reduce memory usage and improve correctness wrt MonoGenericParam
4811         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4812         handing.  Avoid allocating MonoGenericParams, but use the ones in
4813         the container itself.
4814
4815 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4816
4817         * tasklets.c: Return exceptions in the out argument.
4818
4819 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4820
4821         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4822         opcode. Use pointer types in more places instead of casting them to 
4823         integers.
4824
4825         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4826         optimizations.
4827         (mono_llvm_optimize_method): New helper function to optimize a method.
4828
4829         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4830         widening code so it could be called from more places.
4831         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4832         code paths in the call opcodes.
4833
4834 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4835
4836         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4837
4838 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4839
4840         * dwarfwriter.c: Use _ to separate class name 
4841         components as gdb can't handle '.'. Represent reference variables
4842         as 'class <NAME>&'.
4843         
4844         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
4845
4846         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
4847         
4848         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
4849
4850         * gc-test.cs: New file with GC stack marking tests.
4851         
4852         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
4853         negative numbers for vfp.
4854
4855         * basic-float.cs: Add a test.
4856         
4857 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
4858
4859         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
4860
4861 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
4862
4863         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
4864         part of tasklet/continuation support.
4865
4866 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
4867
4868         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
4869         amd64 opcodes inside an ifdef.
4870
4871         * dwarfwriter.c: Emit inheritance information for classes, emit fields
4872         of complex types.
4873         
4874         * dwarfwriter.c (emit_type): Emit the class info for classes.
4875
4876 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
4879
4880         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
4881
4882         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
4883
4884         * ssa.c (mono_ssa_compute): Fix some memory leaks.
4885
4886 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
4887
4888         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4889
4890         * mini-llvm.c: Update comments.
4891
4892         * mini.h (COMPILE_LLVM): New macro.
4893
4894         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
4895
4896         * ssa.c (mono_ssa_compute): Ditto.
4897         
4898         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
4899         the unwind ops from a DWARF FDE.
4900
4901         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
4902         methods by extracting the dwarf unwind ops from the unwind info generated
4903         by LLVM.
4904         
4905         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4906         calls.
4907
4908         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
4909         addressing modes.
4910
4911 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4912
4913         * Makefile.am (llvm_sources): Enable this.
4914
4915         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
4916         failing back to the JIT if something cannot be handled.
4917
4918         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
4919         compiling with LLVM.
4920
4921         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
4922         compiling with LLVM.
4923
4924         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
4925         compiling with LLVM.
4926
4927         * mini-ops.h: Add a few opcodes needed by LLVM.
4928
4929         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
4930         has no unwind info.
4931
4932         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
4933         backend.
4934
4935         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
4936
4937         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
4938
4939 2009-04-01  Mark Probst  <mark.probst@gmail.com>
4940
4941         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
4942         ridiculously large methods.
4943
4944 2009-03-31  Martin Baulig  <martin@ximian.com>
4945
4946         * debug-debugger.c (debugger_remove_breakpoint): Call
4947         mono_debugger_remove_class_init_callback ().
4948
4949 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
4950
4951         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
4952         right before emitting code, not at the start.
4953
4954         * mini.c (mono_postprocess_patches): Extract this into a separate function
4955         from mono_codegen ().
4956
4957         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
4958         byref types correctly.
4959
4960 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
4963         by the last change.
4964
4965 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
4966
4967         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
4968         indirect calls, this avoids problems where get_vcall_slot () would get
4969         confused by the native code for the instruction preceeding the call.
4970         (mono_arch_get_vcall_slot): Simplify this.
4971         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
4972
4973         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
4974         register allocator now seems to depend on them instead of the data in
4975         cpu-<ARCH>.md.
4976
4977         * mini.c (mini_method_compile): Throw the correct type of exception if
4978         mono_method_get_header () fails because of a loading error.
4979
4980 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4981
4982         * mini.c (mini_method_compile): Clear the loader error if the method
4983         header cannot be decoded.
4984
4985         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
4986         interface methods on proxies correctly.
4987
4988         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
4989         this argument for vtype methods. Add precise liveness info for arguments.
4990
4991         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
4992         LIVERANGE_START/END opcodes.
4993
4994         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
4995         for arguments and values in registers.
4996
4997 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
4998
4999         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5000         return a valuetype. Fixes #487518.
5001
5002         * iltests.il: Add a test.
5003         
5004         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5005
5006         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5007         closed over a null reference correctly.
5008
5009 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5010
5011         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5012
5013 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5014
5015         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5016         allocated to the same registers as fixed sregs.
5017
5018 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5019
5020         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5021         ATOMIC_CAS_IMM ops.
5022
5023         * method-to-ir.c: Handle more cases for
5024         Interlocked.CompareExchange.
5025
5026         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5027         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5028         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5029
5030 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5031
5032         * aot-runtime.c (decode_method_ref): Fix a warning.
5033
5034         * unwind.c (mono_unwind_frame): Ditto.  
5035
5036 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5039         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5040
5041         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5042         fix the handling of large values in the ALU_PC_G0_NC relocation.
5043
5044 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5047
5048 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5049
5050         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5051         ops.
5052
5053 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5054
5055         * method-to-ir.c: MINI_OP3 needs a comma.
5056
5057         * method-to-ir.c, mini.h, mini.c: Remove
5058         mono_init_op_sreg_counts ().
5059
5060 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5061
5062         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5063         OP_JMP.
5064         
5065         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5066         assertion.
5067
5068         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5069
5070         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5071         code somewhat.
5072
5073 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5074
5075         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5076         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5077         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5078         operations.
5079
5080 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5081
5082         * driver.c: Change location of gc_wrapper.h.
5083
5084         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5085         inside finally clauses correctly. Fixes #485721.
5086
5087         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5088         after the change above.
5089
5090         * exceptions.cs: Add a test.
5091         
5092 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5093
5094         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5095
5096         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5097         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5098         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5099
5100         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5101         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5102
5103 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5104
5105         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5106         Simplify logic for ensure_method_is_allowed_to_call_method. 
5107         Handle wrappers on callers.
5108
5109 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5110
5111         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5112         them don't run yet.
5113
5114         * basic-simd.cs: Fix the names of some test methods.
5115
5116 2009-03-18  Geoff Norton  <gnorton@novell.com>
5117
5118         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5119
5120 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5123
5124 2009-03-17  Jb Evain  <jbevain@novell.com>
5125
5126         * driver.c: remove now uneeded call to mono_gc_base_init before
5127         mono_profiler_load.
5128
5129 2009-03-17  Jb Evain  <jbevain@novell.com>
5130
5131         * dwarfwriter.c (token_handler): handle more cases.
5132
5133 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5134
5135         * method-to-ir.c: Remove more dead code (that was required only
5136         because of method_is_safe). Fix compiler warnings.
5137
5138 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5139
5140         * method-to-ir.c: Remove unneeded/useless method_is_safe
5141         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5142
5143 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5144
5145         * mini.c (mini_method_compile): Print the method been compiled with
5146         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5147         for people not familiar with the runtime.
5148
5149 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5150
5151         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5152         a managed object which is later put into a GList. Return its class instead.
5153
5154         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5155         stack slots when using sgen.
5156
5157 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5158
5159         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5160
5161 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5164         > so it works on the first vreg as well.
5165
5166 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5167
5168         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5169         trigger randomly.
5170
5171         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5172         
5173         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5174         implement GArray.
5175
5176 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5177
5178         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5179         native->IL offset mapping.
5180
5181 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5182
5183         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5184
5185         * basic.cs: Add a test.
5186
5187 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5188
5189         * mini-x86.c (mono_arch_output_basic_block): Use different
5190         registers in case the ones we want to overwrite are used by the
5191         other operand.  Fixes regression in #480807.
5192
5193 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5194
5195         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5196
5197         * dwarfwriter.c (emit_line_number_info): The line number info for
5198         IL code was off by one. Fix that.
5199
5200         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5201         stack.
5202
5203 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5204
5205         Contributed under the terms of the MIT/X11 license by Steven
5206         Munroe <munroesj@us.ibm.com>.
5207
5208         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5209         Fixes #483462.
5210
5211 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5212
5213         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5214         as well.
5215
5216 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5219         the delegate ctor handling code. Fixes #482638.
5220         
5221         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5222         #481458.
5223
5224         * iltests.il.in: Add a test.
5225         
5226         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5227         mini-posix.c.
5228
5229 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5230
5231         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5232         is shared generic code, return the trampoline, even if the method
5233         has already been compiled.  Fixes #479763.
5234
5235         * mini.c, mini.h: New function
5236         mono_jit_find_compiled_method_with_jit_info() which is the same as
5237         mono_jit_find_compiled_method() but also returns the jit info.
5238
5239 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5240
5241         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5242         for methods which actually have one.  For all other methods, make
5243         sure the this argument var is live the whole method.
5244
5245         * mini.c (mini_method_compile): Every shared method has a
5246         this/vtable/mrgctx info.  Fixes #480807.
5247
5248 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5249
5250         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5251         generic/imt thunks where some entries branch through the vtable,
5252         while other entries branch directly.
5253
5254 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5255
5256         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5257
5258         * mini-windows.c: Ditto.
5259         
5260         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5261         ctors.
5262
5263 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5264
5265         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5266         down an assert.
5267
5268 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5269
5270         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5271         #481403.
5272
5273 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5274
5275         * exceptions-x86.c: Include debug-mini.h - fixes build.
5276
5277 2009-03-04  Martin Baulig  <martin@ximian.com>
5278
5279         * debug-mini.c: Clean up the exception API and add documentation.
5280         (mono_debugger_handle_exception): New public method; this is
5281         called when throwing an exception or encountering an unhandled one.
5282         (mono_debugger_call_exception_handler): Formerly known as
5283         mono_debugger_handle_exception(); this is used to tell the
5284         debugger that we're about to invoke an exception handler.
5285
5286 2009-03-04  Martin Baulig  <martin@ximian.com>
5287
5288         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5289         ../metadata/mono-debug-debugger.c; save and reset exception state.
5290
5291 2009-03-02  Martin Baulig  <martin@ximian.com>
5292
5293         * debug-mini.c: Moved the debugger exception handling here from
5294         ../metadata/mono-debug-debugger.c.
5295
5296         * debug-mini.h
5297         (MonoDebuggerExceptionAction): New exception typedef.
5298
5299         * debug-mini.c
5300         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5301
5302         * exceptions-amd64.c
5303         (mono_amd64_throw_exception): Use the new debugger exception
5304         handling code.
5305
5306         * mini-exceptions.c
5307         (mono_handle_exception_internal): Don't call
5308         mono_debugger_unhandled_exception() here.
5309
5310 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * mini.c aot-compiler.c: Update after the changes to 
5313         mono_marshal_get_runtime_invoke ().
5314
5315         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5316         Virtual generic methods might not have method->slot set, work around
5317         that.
5318
5319         * generics.cs: Add a test.
5320
5321 2009-03-02  Geoff Norton  <gnorton@novell.com>
5322
5323         * mini.c:
5324         * driver.c: Allow signal chaining of SIGFPE as well.
5325
5326 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5327
5328         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5329         this since it now receives the method not its generic context in the
5330         IMT reg.
5331
5332         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5333         generic/imt thunks where some entries branch through the vtable, while
5334         other entries branch directly.
5335
5336         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5337
5338         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5339         support for interface methods as well.
5340
5341         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5342         using the normal IMT thunks.
5343
5344         generics.cs: Add new tests.
5345         
5346         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5347         the generic inst to the generic imt thunks. This fixes AOT support, 
5348         improves consistency with the normal IMT thunks, and makes it easier to
5349         add support for interface generic virtual methods later.
5350
5351         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5352         
5353 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5354
5355         * driver.c (mono_set_signal_chaining): New public API function to enable
5356         signal chaining on POSIX platforms.
5357
5358         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5359         (si@lindenlab.com) to implement signal chaining. The original patch was
5360         contributed under the MIT X/11 license:
5361         https://bugzilla.novell.com/show_bug.cgi?id=318894
5362
5363 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5364
5365         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5366         too until it can be made to run on amd64.
5367
5368 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5369
5370         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5371         to  get_generic_context_from_code () + get_call_info () if possible.
5372
5373 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5374
5375         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5376         suspend-on-sigsegv functionality.
5377
5378         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5379         to suspend when a native SIGSEGV is received. This is useful for debugging
5380         crashes which don't happen under gdb, since a live process contains more
5381         information than a core file.
5382
5383         * mini-exceptions.c (mono_print_thread_dump): Use 
5384         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5385
5386         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5387
5388         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5389         
5390         * basic-float.cs: Disable the tests which currently fail on amd64.
5391
5392         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5393         value to mono_arch_patch_callsite () to fix crashes.
5394         
5395         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5396
5397 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5398
5399         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5400         nop code by patching the call address to point to the nullified class init
5401         trampoline, as the former does not seem to be safe on SMP machines.
5402
5403 2009-02-23  Mark Probst  <mark.probst@gmail.com>
5404
5405         * mini-ops.h: Fix the argument types for a few x86 opcodes where
5406         they were wrong.
5407
5408 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5409
5410         * basic-float.cs basic-calls.cs: Fix warnings.
5411
5412 2009-02-22  Mark Probst  <mark.probst@gmail.com>
5413
5414         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
5415         correct frame pointer in the LMF.  Should fix #478394.
5416
5417 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5418
5419         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
5420
5421         * image-writer.c: Make the binary writer less verbose.
5422
5423 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5424
5425         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5426         are called from runtime invoke wrappers.
5427
5428 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5429
5430         * cpu-ppc.md (store_memindex): Increase the size of this.
5431
5432 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5433
5434         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5435
5436         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
5437
5438         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5439         OP_LCONV_TO_R_UN.
5440
5441         Last fix for of #467201.
5442
5443
5444 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5445
5446         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5447
5448         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5449         and long_conv_to_r8_2:
5450
5451         Fixed part of #467201.
5452
5453 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5454
5455         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5456
5457         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5458         conversion to 32 bits.
5459
5460         * cpu-x86.md: Increase the size of int_conv_to_r4.
5461
5462         * basic-float.cs: Add a test for this.
5463
5464         Fixed part of #467201.
5465
5466 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5467
5468         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5469
5470         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5471         conversion to 64 bits.
5472
5473         * basic-float.cs: Add a test for this.
5474
5475         Fixed part of #467201.
5476
5477 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5478
5479         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5480
5481         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5482         This behavior is compatible with MS.
5483
5484         * iltest.il.in: Add a test for this.
5485
5486         Fixed part of #467201.
5487
5488 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5489
5490         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5491
5492         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5493         change the precision of the value.
5494
5495         * cpu-x86.md: Define len for float_conv_to_r4.
5496
5497         * basic-float.cs: Add a test for this.
5498
5499         Fixed part of #467201.
5500
5501 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5502
5503         * mini.c: Adjust locking order to the new semantics where the loader lock
5504         comes first.
5505
5506 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * aot-runtime.c:
5509         * mini-amd64.c:
5510         * mini-arm.c:
5511         * mini-ia64.c:
5512         * mini-mips.c:
5513         * mini-ppc.c:
5514         * mini-sparc.c:
5515         * mini-trampolines.c:
5516         * mini-x86.c:
5517         * mini.c:
5518         * tramp-alpha.c:
5519         * tramp-amd64.c:
5520         * tramp-arm.c:
5521         * tramp-hppa.c:
5522         * tramp-ia64.c:
5523         * tramp-mips.c:
5524         * tramp-ppc.c:
5525         * tramp-s390.c:
5526         * tramp-s390x.c:
5527         * tramp-sparc.c:
5528         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5529
5530 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5531
5532         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5533         as it is incorrect.
5534
5535 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5536
5537         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5538         for cctors if needed.
5539
5540 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5541
5542         * mini-ppc.c: Fix build on Darwin.
5543
5544 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5545
5546         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5547         version instead of 3 as valgrind doesn't like version 3.
5548
5549         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5550
5551         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5552         usable for hashing methods.
5553         (emit_extra_methods): Use the new hash to avoid putting every method in the
5554         same hash bucket.
5555
5556         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5557
5558         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5559         whenever a method ref could match a method.
5560         
5561         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5562         test to fail.
5563         
5564         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5565         methods refs.
5566
5567         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5568
5569         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5570         the encoding buffer.
5571
5572         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5573         mono_method_get_header () on inflated methods as an optimization.
5574
5575 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5576
5577         * ssa.c (fold_ins): Fix another crash if the instruction following the
5578         switch was optimized away.
5579
5580 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5581
5582         Contributed under the terms of the MIT/X11 license by Steven
5583         Munroe <munroesj@us.ibm.com>.
5584
5585         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5586
5587 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5588
5589         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5590         around the mono_domain_alloc calls, it is now done by the functions
5591         themselves.
5592
5593         * aot-compiler.c (compile_method): Only add wrappers referenced by
5594         the method if compiling with full AOT.
5595         (mono_compile_assembly): Error out if --aot=full is specified on
5596         a platform where it is not supported.
5597
5598         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
5599         on ARM too.
5600
5601         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
5602         AOT support.
5603
5604         * aot-runtime.c (load_named_code): Handle 
5605         mono_arm_throw_exception_by_token.
5606
5607         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
5608
5609         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
5610         unaligned.
5611
5612         * Makefile.am (fullaotcheck): Exit if a test fails.
5613
5614         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
5615         on ARM.
5616         (mono_compile_assembly): Handle the assembler failing.
5617
5618         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
5619         accepting subsections of .bss.
5620
5621         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
5622         was optimized away.
5623
5624         * aot-compiler.c: Remove some unused includes.
5625         
5626         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
5627         now in MonoImageWriter.
5628
5629         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
5630         code sequence which matches a non-virtual call. Fixes #472654.
5631
5632 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5633
5634         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
5635         xdebug code.
5636         
5637         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
5638         use the image/dwarf writers directly.
5639
5640         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5641         field.
5642
5643         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5644         MonoDwarfWriter.
5645
5646         * image-writer.h: Fix some typos.
5647
5648         * dwarfwriter.h dwarfwriter.c: New files.
5649         
5650         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5651         separate module.
5652
5653         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5654         argument to return unwind info.
5655
5656         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5657
5658         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5659         
5660         * aot-runtime.c (decode_method_ref): Add a case for 
5661         MONO_AOT_METHODREF_WRAPPER_NAME.
5662
5663         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5664         for AOT.
5665
5666         * aot-compiler.c (encode_method_ref): Use the new constants.
5667
5668         * aot-runtime.c (decode_method_ref): Ditto.
5669
5670         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5671         be compiled, not the icall itself.
5672
5673 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5674
5675         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5676         using decode_method_ref ().
5677
5678         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5679         convert it to an in32. Fixes #475859.
5680
5681         * arrays.cs: Add a test.
5682
5683 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5684
5685         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5686         OP_LCONV_TO_U2.
5687
5688         * basic-long.cs: Add a test.
5689
5690 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5691
5692         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5693         remove the frame pointer in leaf methods which don't receive any
5694         arguments, don't throw exceptions and don't do dynamic stack
5695         allocations.
5696
5697 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5698
5699         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5700         the fail_tramp changes. Hopefully fixes #475132.
5701
5702 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5703
5704         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5705         instead of mono_metadata_signature_dup_full.
5706
5707 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5708
5709         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5710         for processing jump tables. Fixes #473787.
5711
5712 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5713
5714         * mini-generic-sharing.c: mini_method_get_context() just calls
5715         mono_method_get_context_general() now.
5716
5717         * mini.c, mini.h: Moved get_object_generic_inst(),
5718         construct_object_context_for_method() and
5719         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
5720
5721 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5722
5723         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
5724         basic block fell through to its successor bblock without a branch. Fixes
5725         #474718.
5726
5727         * iltests.il.in: Add a test.
5728         
5729         * aot-compiler.c (encode_method_ref): Encode methods of array types.
5730         (can_encode_patch): We can now handle arrays of generic parameters and
5731         array methods.
5732
5733         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
5734
5735         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
5736         the AOT file to avoid some #ifdefs in aot-runtime.c
5737
5738         * mini.h: Bump AOT file format version.
5739
5740 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * Makefile.am (fullaotcheck): Make this run the tests.
5743
5744         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
5745
5746 2009-02-10  Mark Probst  <mark.probst@gmail.com>
5747
5748         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
5749         individually.  Fixes #473482.
5750
5751 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5752
5753         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5754
5755 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
5756
5757         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
5758         (mono_compile_assembly): Hush compile warnings about
5759         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
5760         code path.
5761
5762 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5763
5764         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
5765
5766         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
5767
5768         * aot-compiler.c: Fix arm support.
5769
5770         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
5771         img_writer_emit_unset_mode () function.
5772
5773         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
5774         (mono_unwind_get_dwarf_pc_reg): Ditto.
5775
5776         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
5777         Move almost all platform specific code to a set of arch_ functions, 
5778         and document them to ease porting.
5779         
5780         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
5781
5782         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
5783
5784         * aot-compiler.c: Extract the image writing functionality into a separate
5785         module to reduce the size of this file.
5786
5787 2009-02-09  Geoff Norton  <gnorton@novell.com>
5788
5789         * mini-s390.c: Fix the signature of emit_sig_cookie.
5790
5791 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
5792
5793         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
5794
5795         * aot-runtime.c (is_shared_got_patch): Ditto.
5796
5797         * aot-runtime.c (load_named_code): Cope with the fact that 
5798         decode_got_entry () won't decode the patch fully if its corresponding got
5799         entry is already filled.
5800         
5801         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
5802         Initialize *ji.
5803         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
5804
5805         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
5806         as the moving pointer instead of 'buf' for consistency with the rest of the
5807         codebase.
5808         (mono_arch_create_monitor_exit_trampoline): Ditto.
5809
5810         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5811         generic_class_init trampolines.
5812         (add_generic_class): Extract some code from add_generic_instances () into a
5813         separate function so it can be called from other places too.
5814         (compile_method): Call add_generic_class () for the classes of inflated methods
5815         referenced by the method.
5816         (can_encode_patch): Allow references to generic parameters.
5817
5818         * aot-runtime.c: Add support the patches required by the new trampolines.
5819         
5820         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5821         support.
5822
5823         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5824         full-aot support.
5825
5826         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5827         this from get_throw_pending_exception, make the signature full aot compatible.
5828
5829         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5830
5831         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5832
5833         * exceptions.cs: Add a test.
5834
5835 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5836
5837         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5838         use the DWARF_DATA_ALIGN constant instead.
5839
5840         * exception-<ARCH>.c: Update after the above change.
5841
5842         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5843         dwarf unwinder.
5844
5845         * mini-arm.c: Enable the dwarf unwinder.
5846
5847         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
5848         instead of mono_class_setup_vtable ().
5849
5850 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5851
5852         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
5853         dwarf unwinder.
5854
5855         * mini-x86.h: Enable the dwarf unwinder.
5856
5857 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
5858
5859         Fix mcs/tests/test-7.cs
5860         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
5861         2009-02-03.
5862
5863 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * mini.c (print_jit_stats): Remove some unused statistics.
5866
5867 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5868
5869         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
5870
5871 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5872
5873         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
5874         the method we get from mono_object_get_virtual_method() because
5875         that function does it properly, now.
5876
5877 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5878
5879         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
5880         opcodes. Fixes #472775.
5881
5882 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5883
5884         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
5885         fact that mono_find_jit_info() sometimes returns the context
5886         corresponding to the jit info in new_ctx.  Fixes #472600.
5887
5888 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5889
5890         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
5891         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
5892         klass->enum_basetype directly.
5893
5894         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
5895         enum subtypes.
5896
5897         * unwind.c: Avoid 0 sized arrays.
5898
5899 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5900
5901         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
5902         size on systems with 64k pages. Fixes #471389.
5903
5904 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5905
5906         Contributed under the terms of the MIT/X11 license by Steven
5907         Munroe <munroesj@us.ibm.com>.
5908
5909         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
5910         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5911         necessary.
5912
5913 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5914
5915         Contributed under the terms of the MIT/X11 license by Steven
5916         Munroe <munroesj@us.ibm.com>.
5917
5918         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
5919         comparison fix.
5920
5921         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
5922         The trampoline can be longer on PPC64.
5923
5924 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5925
5926         Contributed under the terms of the MIT/X11 license by Steven
5927         Munroe <munroesj@us.ibm.com>.
5928
5929         * mini-ppc.c: Compiler warning fixes and trivial code
5930         simplifications.
5931
5932 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5933
5934         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
5935         ins->dreg which could be a hardware register, not a vreg.
5936
5937         * aot-compiler.c (emit_method_dwarf_info): Ditto.
5938         
5939         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
5940         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
5941
5942         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
5943         
5944         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
5945         ->dreg, that is not the vreg we are looking for.
5946
5947         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
5948
5949         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
5950         LIVERANGE_END.
5951
5952         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
5953         strange crashes.
5954
5955 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
5956
5957         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
5958
5959         * aot-compiler.c (emit_line_number_info): Fix line number emission when
5960         the line diff is 0.
5961
5962         * aot-compiler.c: Add xdebug support on x86.
5963
5964         * unwind.c: Add x86 support.
5965         
5966         * aot-compiler.c (emit_exception_debug_info): Control the emission of
5967         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
5968
5969         * mini.c (mini_method_compile): Ditto.
5970         
5971         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
5972         the variable index.
5973
5974         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
5975         which mimic .push_section/.pop_section in GAS.
5976         
5977         * aot-compiler.c: Emit precise live range information for variables.
5978
5979         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
5980
5981         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
5982         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
5983         them.
5984
5985         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
5986         the live ranges of variables.
5987
5988         * mini.h (struct MonoMethodVar): Add two fields containing the live range
5989         of the variable in terms of native offsets.
5990
5991 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
5992
5993         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
5994         
5995 2009-02-02  Mark Probst  <mark.probst@gmail.com>
5996
5997         Contributed under the terms of the MIT/X11 license by Steven
5998         Munroe <munroesj@us.ibm.com>.
5999
6000         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6001         order (offset then base reg) for ppc_load_multiple_regs.
6002         (emit_save_saved_regs) Correct operand order for
6003         ppc_store_multiple_regs.
6004         (mono_arch_get_call_filter): Correct operand order for
6005         ppc_load_multiple_regs.
6006
6007         * mini-ppc.c (emit_memcpy): Fix operand order for
6008         ppc_load_reg_update and ppc_store_reg_update.
6009         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6010         (mono_arch_emit_epilog): Correct operand order for
6011         ppc_load_multiple_regs.
6012
6013         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6014         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6015
6016 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6017
6018         * cpu-ppc64.md: Fixed storer4_memindex length.
6019
6020 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6021
6022         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6023         line number info.
6024         
6025         * aot-compiler.c (emit_line_number_info): Optimize this.
6026
6027 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6030         
6031         * aot-compiler.c: Add debug info for methods without debug info by
6032         emitting an IL file and having the line number info referencing that file.
6033
6034         * aot-compiler.c: Optimize the size of the generated line number info.
6035
6036         * aot-compiler.c: Emit line number info in xdebug mode.
6037
6038         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6039         million arguments.
6040
6041 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6044
6045         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6046         is used.
6047
6048 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6049
6050         * basic-calls.cs: Test for the weird crash found on arm.
6051         
6052 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6053
6054         * cpu-arm.md: Increase the size of storer8_membase_reg and
6055         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6056
6057         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6058         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6059         reg to LR otherwise we'll be loading/storing from just the offset.
6060
6061 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6062
6063         Question: if we are storing gint32's inside the "*native_offset",
6064         should we change the signature to "gint32 *native_offset" to
6065         ensure that we do not have type definition problems?
6066         
6067         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6068         an int * as this is what the other function expects, causes
6069         problems with Freescale's compiler that defined int32_t to be a
6070         long and makes int incompatible 
6071
6072 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6073
6074         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6075         filename conflict with bjam.
6076
6077 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6078
6079         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6080         as it might use decomposed ops.
6081
6082 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6083
6084         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6085
6086         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6087         is defined.
6088
6089         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6090
6091         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6092         offsets.
6093
6094         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6095         way registers are stored in MonoContext on arm.
6096
6097         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6098         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6099
6100         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6101
6102         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6103
6104         * mini.c (mini_init): Register mono_isfinite.
6105
6106         * jit-icalls.c (mono_isfinite): New jit icall.
6107
6108         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6109         
6110         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6111         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6112         the parent frame.
6113
6114 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6115
6116         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6117         separate frame and stack pointers, so we must use FP to find the register
6118         spill area.
6119         The FP reg is retrieved from the MonoContext::regs array.
6120
6121 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6122
6123         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6124         as FPA requires it.
6125
6126 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6127
6128         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6129         return R4 and R8 when not running under softfloat.
6130
6131         Fixes basic-calls.exe
6132
6133 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * mini-arm.c: Implement some overflow opcodes.
6136
6137 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6138
6139         * ssa.c: handle another alloca.h
6140
6141         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6142         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6143         MONO_ARCH_USE_SIGACTION. 
6144
6145         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6146         capability defines.
6147
6148         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6149
6150         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6151         PPC targets as sigaction does not exist on all platforms, define
6152         this on a per-platform basis.
6153
6154         Instead of erroring out if the platform is not defined, include
6155         mini-ppc-os.h, and expect that the OS specific setting provides
6156         the required information.   
6157
6158 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6159
6160         * aot-compiler.c: Fix --enable-minimal=aot.
6161
6162 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6163
6164         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6165         previous change.
6166
6167 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6168
6169         * exceptions-arm.c: Fix warnings.
6170
6171         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6172         ARM.
6173
6174         * mini-x86.c: Fix --enable-minimal=jit build.
6175
6176         * mini.c: Really fix --enable-minimal=jit build.
6177         
6178         * mini.c (construct_object_context_for_method): Move this outside
6179         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6180
6181         "Backported" of r124984 from 2.0 branch.
6182         
6183         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6184
6185         "Backport" of r124977 + r124978 from 2.0 branch.
6186         
6187         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6188         to avoid calling mono_exception_from_token () from the throw trampoline.
6189         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6190         for throwing corlib exceptions, this fixes full-aot support for corlib
6191         exceptions.
6192
6193         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6194
6195 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6196
6197         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6198         part of the changes to split the code in mini into operating
6199         system specific files.
6200
6201         This patch was done by copying mini.c to the respective files to
6202         preserve SVN history.
6203
6204 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6205
6206         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6207
6208 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6209
6210         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6211         remoting-invoke-with-check wrappers of shared methods.
6212
6213         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6214
6215 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6216
6217         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6218         optimization if the top of stack is the last instruction in the
6219         bblock.  Otherwise it might have been used after its definition.
6220         Fixes #469742.
6221
6222 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6223
6224         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6225         method as well when get_vcall_slot () fails to match a code sequence.
6226
6227         * mini-arm.c: Fix the android build, which doesn't have
6228         __aeabi_read_tp.
6229
6230 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6231
6232         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6233         the s390x build.
6234
6235 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6236
6237         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6238
6239 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6240
6241         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6242         and put its id into jinfo->used_regs. This is only used on amd64,
6243         which is currently the only platform generating unwind info.
6244
6245         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6246         the dwarf unwinder. This is required to correctly handle async exceptions
6247         like thread abort and stack overflows, which can happen while a method
6248         is in the middle of its prolog or epilog.
6249         
6250         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6251         the unwind info belonging to an AOTed method.
6252
6253         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6254         into cfg->unwind_ops.
6255         
6256         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6257
6258         * mini.c (mini_init): Call mono_unwind_init ().
6259         (mini_cleanup): Call mono_unwind_cleanup ().
6260
6261         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6262         unwind info to be shared between methods.
6263
6264         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6265         saved in the LMF.
6266
6267         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6268         get_throw_pending_exception () to avoid initialization races.
6269
6270         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6271         mono_arch_exceptions_init () function.
6272
6273         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6274
6275 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6276
6277         * mini.c (mono_get_domain_intrinsic): New helper function.
6278         (mono_get_thread_intrinsic): Ditto.
6279
6280         * mini-arm.c mini-ia64.c: Use the new helper functions.
6281         
6282         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6283         the last constrained_call change, since it is needed in the non-AOT
6284         case as well.
6285
6286         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6287         
6288         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6289         mono_get_lmf_addr () on arm eabi linux.
6290
6291 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6292
6293         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6294         code sequence which matches a non-virtual call.
6295
6296 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6297
6298         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6299         stack pointer (r1).
6300
6301 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6302
6303         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6304         runtime-invoke wrappers, since they are also shared based on signature.
6305
6306 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6307
6308         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6309         info from the (correct) context.
6310
6311 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6312
6313         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6314         
6315         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6316         using dwarf unwinding info. Not yet used.
6317
6318         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6319
6320 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6321
6322         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6323         descriptors.
6324
6325         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6326         special case and handle mono_arch_delegate_invoke_impl() returning
6327         function descriptors.
6328
6329         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6330         trampolines return function descriptors, too.
6331
6332 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6333
6334         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6335         out_of_line optimization.
6336
6337 2009-01-21  Martin Baulig  <martin@ximian.com>
6338
6339         * mini.h
6340         (MonoCompile): Added `disable_deadce_vars' to disable removing
6341         unused variables.
6342
6343         * mini.c
6344         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6345         inside the debugger.
6346
6347         * liveness.c (mono_analyze_liveness): Don't remove any unused
6348         variables if `cfg->disable_deadce_vars' is set.
6349
6350 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6351
6352         * method-to-ir.c: Only apply exception constructor optimization if
6353         the the method actually belongs to an exception class.  Fixes
6354         #467456.
6355
6356 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6359         change inside a #ifdef __mono_ppc64__.
6360
6361         * aot-compiler.c (compile_method): Remove the previous limitation.
6362
6363         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6364         on type variables in AOTed code.
6365         
6366         * aot-compiler.c (compile_method): Skip generic methods having type 
6367         constraints on their generic parameters.
6368
6369         * aot-compiler.c (compile_method): Check for methods which cannot be
6370         encoded inside RGCTX_FETCH patches as well.
6371
6372         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6373         build.
6374
6375 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6376
6377         * method-to-ir.c: Force the vtable variable in shared generic code
6378         for the case that they might show up on a stack trace where they
6379         are needed.
6380
6381         * mini-exceptions.c: Save and use generic sharing info as well as
6382         IP in stack traces to resolve shared generic instantiations.
6383
6384 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6385
6386         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6387         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6388
6389 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6390
6391         * method-to-ir.c: Do generic sharing for array constructors.
6392
6393 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6394
6395         * mini-exceptions.c (mono_print_thread_dump): Add information
6396         about the thread state using wapi_current_thread_desc.
6397
6398 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6399
6400         * basic-simd.cs: Tests for the new constructors. 
6401
6402 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6403
6404         * mini-ops.h: Added OP_EXPAND_*
6405
6406         * cpu-x86.md: Same.
6407
6408         * mini-x86.c (mono_arch_output_basic_block): Same.
6409         
6410         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
6411
6412 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6413
6414         * iltests.il.in: Add a test for #467385.
6415
6416 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
6417
6418         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
6419         thread been cleaned up is not the same currently in execution.
6420
6421         Fixes appdomain-unload crashes on windows, osx and linux variants
6422         without the __thread keyword.
6423
6424 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6425
6426         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6427         (koush@koushikdutta.com). Implement this for android.
6428
6429         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6430         begins with a digit.
6431
6432         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6433         mono_marshal_get_write_barrier ().
6434
6435 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6438         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6439         that pass them on a register pair.
6440
6441         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6442         test was crashing due to that.
6443
6444 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6445
6446         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6447         trampoline code. Include ucontext.h only if available.
6448
6449 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6450
6451         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6452         and doesn't check whether it's sharable, like it was before
6453         removing the shared generics hash.  This brings IronPython
6454         performance back to what it was before that change.
6455
6456 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6457
6458         * method-to-ir.c: Handle delegate invocation optimization earlier,
6459         otherwise it would be handled (much more slowly) by the
6460         final/sealed optimization.
6461
6462 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6463
6464         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6465         domain is not set. Fixes #465864.
6466
6467 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6468
6469         * method-to-ir.c: Don't stop sharing of generic methods with catch
6470         clauses - we already handle those.
6471
6472 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6473
6474         * mini.c, mini.h: lookup_generic_method() is now
6475         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6476         making the shared_generics_hash obsolete.
6477
6478 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6479
6480         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6481         use the red zone.  Make room on the stack first and then use it,
6482         not the other way around.
6483
6484 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * mini.c (mini_init): Call mono_xdebug_init ().
6487
6488         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6489
6490 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6491
6492         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6493
6494         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6495         trampolines.
6496
6497         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6498         debug+unwind info for trampolines.
6499
6500         * mini.c (mono_create_unwind_op): New helper function.
6501
6502         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6503
6504 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6505
6506         * aot-compiler.c: Fix the build.
6507
6508 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6509
6510         * Makefile.am: Update dtrace-prelink.sh location.
6511
6512 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6513
6514         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6515         optimization. Fixes #464520.
6516
6517 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6518
6519         * mini-amd64.c : Adding code to save/restore non-volatile registers
6520            on Winx64.
6521
6522         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6523           registers on Winx64.
6524
6525         Contributed under MIT/X11 license.
6526
6527 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6528
6529         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6530         __GNUC_MINOR__ which can break when the major version changes.
6531
6532 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6533
6534         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6535
6536 2009-01-07  Geoff Norton  <gnorton@novell.com>
6537
6538         * helpers.c:  Allow mono -v -v -v to work on darwin.
6539
6540 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6541
6542         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6543           pattern. 
6544
6545         Contributed under MIT/X11 license.
6546
6547 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6548
6549         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6550         instead of directly accessing type->data.klass. Fixes #462016.
6551         (mono_allocate_stack_slots_full): Ditto.
6552
6553         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6554         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6555
6556         * aot-compiler.c (emit_plt): Fix ARM build.
6557
6558 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6559
6560         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6561         
6562         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6563         change.
6564
6565         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6566         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6567         #463357.
6568
6569         * iltests.il.in: Add a regression test.
6570
6571 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6572
6573         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6574
6575 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6576
6577         * basic-simd.cs: Add a regression test for #462457.
6578
6579 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6580
6581         * mini-ops.h: Add a definition of XPHI.
6582
6583         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6584
6585         * ssa.c (op_phi_to_move): Handle XPHI.
6586
6587         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6588
6589         Fixes #462457
6590
6591 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6592
6593         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6594
6595 2008-12-31  Geoff Norton  <gnorton@novell.com>
6596
6597         * mini-ppc.c: The prolog size allocated can be too small for darwin
6598         ppc32 under certain circumstances.  Also fix a small logic bug.
6599
6600 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
6603         while loading AOT methods.
6604
6605         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
6606         since only the former is nulled out after a successful cast. This prevents
6607         crashes with rethrown exceptions when using --debug=casts.
6608
6609 2008-12-24  Mark Probst  <mark.probst@gmail.com>
6610
6611         * mini.h: New macro for checking whether a method is final,
6612         i.e. whether the method or its class is marked final.
6613
6614         * method-to-ir.c: Use the new macro for all final-checks
6615         consistently.  Fixes the crash in the System.ServiceModel tests.
6616
6617 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6618
6619         * mini-exceptions.c (get_exception_catch_class): Corrected another
6620         overly strict assertion.
6621
6622 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6623
6624         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
6625         Clobbering it is not allowed because the caller might use it as
6626         the vtable register in the interface call.
6627
6628 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6629
6630         * mini-exceptions.c (get_exception_catch_class): Corrected an
6631         overly strict assertion.
6632
6633 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
6634         
6635         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
6636
6637         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
6638
6639         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
6640
6641         * cpu-mips.md: correct lengths for certain long_ opcodes.
6642
6643         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6644
6645         * 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().
6646         
6647 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6648
6649         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6650         
6651 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6652         
6653         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6654         
6655 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6656
6657         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6658         next basic block.
6659         
6660 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6661
6662         * 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
6663
6664         * 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)
6665         
6666 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6667         
6668         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6669         
6670 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6671
6672         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6673         gshared code. Fixes #458947.
6674
6675         * generics.cs: Add a test.
6676
6677 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6678         
6679         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6680         
6681         * mini-mips.c: first pass n32 code generation.
6682
6683         * mini-mips.h: datatypes and defines for n32 support.
6684
6685         * exceptions-mips.c: first pass n32 code generation.
6686         
6687         * tramp-mips.c: first pass n32 code generation.
6688         
6689         * cpu-mips.md: add long_ opcodes.
6690         
6691 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6692
6693         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6694
6695         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6696         
6697         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6698         
6699         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6700
6701         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6702
6703         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6704
6705         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6706
6707         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6708
6709         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6710
6711 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6712
6713         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
6714
6715 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
6716
6717         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
6718
6719 2008-12-12  Mark Probst  <mark.probst@gmail.com>
6720
6721         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
6722         descriptors for helper functions directly in front of the code.
6723
6724 2008-12-11  Mark Probst  <mark.probst@gmail.com>
6725
6726         * method-to-ir.c: Removed an unnecessary assertion.
6727
6728 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6729
6730         * method-to-ir.c: Merge SGEN changes from the old JIT.
6731
6732 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6733
6734         * driver.c (compile_all_methods_thread_main): Handle failure of
6735         mono_get_method ().
6736
6737 2008-12-10  Mark Probst  <mark.probst@gmail.com>
6738
6739         * mini-ppc.c: Merged with mini-ppc64.c.
6740
6741         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
6742
6743         * Makefile.am: Use the same sources for PPC and PPC64.
6744
6745         * mini-ppc64.c: Removed.
6746
6747 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6748
6749         * branch-opts.c (remove_block_if_useless): Extract fall through detection
6750         code to mono_bb_is_fall_through.
6751         
6752         * branch-opts.c (mono_remove_critical_edges): Same.
6753
6754 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6755
6756         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
6757         expect that an OP_BR_REG will be there.
6758
6759 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6760
6761         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
6762         for the many branch ops. The original check miss OP_BR_REG.
6763
6764         Fixes #457574.
6765         
6766 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6767
6768         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
6769
6770 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6771
6772         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
6773         while holding the aot lock.
6774
6775 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6776
6777         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
6778         
6779 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6780
6781         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
6782           to release all runtime callable wrappers held by the runtime.
6783
6784         Contributed under MIT/X11 license.
6785
6786 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6787
6788         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
6789           for Winx64.
6790
6791         Contributed under MIT/X11 license.
6792
6793 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6794
6795         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
6796         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
6797
6798 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6799
6800         * cpu-mips.md: fix ckfinite length
6801
6802         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
6803         (mono_arch_lowering_pass): cleanup, rearrange for clarity
6804         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
6805         
6806 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
6807
6808         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6809         
6810 2008-12-08  Geoff Norton  <gnorton@novell.com>
6811
6812         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6813         size by 8 bytes as well.
6814
6815 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6816
6817         * basic-simd.cs: Fix method names for Vector16b.
6818         
6819 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6820
6821         * basic-simd.cs: Fix method names for Vector16sb.
6822
6823 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6824
6825         * basic-simd.cs: Fix method names for Vector8us.
6826         
6827 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6828
6829         * basic-simd.cs: Fix method names for Vector8s.
6830         
6831 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6832
6833         * basic-simd.cs: Fix method names for Vector4ui.
6834
6835 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6836
6837         * basic-simd.cs: Fix method names for Vector2l.
6838
6839 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6840
6841         * basic-simd.cs: Fix method names for Vector2d.
6842
6843 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6844
6845         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
6846         that are extension methods.
6847
6848 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6849
6850         * basic-simd.cs: Fix method names for Vector4f.
6851
6852 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
6853
6854         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
6855         as such. Fixes #456669.
6856
6857 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6858
6859         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
6860         
6861 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6862
6863         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
6864         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
6865         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
6866         (mips_adjust_stackframe): handle FP spills
6867                 
6868         * mini-ops.h: add mips_mtc1_s2
6869         
6870         * cpu-mips.md: add mips_mtc1_s2
6871         
6872 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
6873
6874         * unwind.c: New file, move the unwind info encoding functions here from
6875         aot-compiler.c, so they could be used at runtime too.
6876
6877 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6878
6879         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
6880         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
6881         
6882 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6883
6884         * mini-mips.c: cleanup warnings
6885         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
6886         (mips_adjust_stackframe): handle case of taking the address of stack locals
6887         
6888 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6889
6890         * aot-compiler.c: Implement a few functions missing from the asm writer.
6891         (emit_method_code): Only write symbols for methods when using the bin
6892         writer, since the assembler can't deal with the characters in our method
6893         names.
6894
6895         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
6896
6897         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6898         call.
6899
6900         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
6901         a bit to also restore %rax.
6902
6903 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6904
6905         * mini-ppc.c: Some simple merges from mini-ppc64.c.
6906
6907 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6908
6909         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
6910         arguments.
6911
6912 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6913
6914         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
6915
6916         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
6917         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
6918
6919         * exceptions-ppc64.c: Removed.
6920
6921         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
6922
6923 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6924
6925         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
6926         tramp-ppc64.c.
6927
6928         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
6929
6930         * tramp-ppc64.c: Removed.
6931
6932 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6933
6934         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
6935         the TYPESPEC table.
6936
6937 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6938
6939         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
6940
6941         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
6942         mini-ppc.h instead of mini-ppc64.h.
6943
6944         * mini-ppc64.h: Removed.
6945
6946 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6947
6948         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
6949         
6950         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
6951         
6952 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6953
6954         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
6955         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
6956         code easier.
6957
6958 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6959
6960         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
6961
6962 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6963
6964         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
6965
6966 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6967
6968         * basic-simd.cs: Tests for operator == and != on Vector4f.
6969
6970 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6971
6972         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
6973
6974         * simd-intrinsics.c: Kill useless enum.
6975
6976 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6977
6978         * cpu-mips.md: add long_conv_to_ovf_i4_2
6979         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
6980
6981 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6982
6983         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
6984         
6985         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
6986
6987 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
6988
6989         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
6990         
6991 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6992
6993         * basic-simd.cs: Add tests for new methods.
6994
6995 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
6996
6997         * simd-intrinsics.c: Add support for operator == and !=
6998         on Vector4(u)i.
6999
7000         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7001
7002 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7003
7004         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7005
7006 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7007
7008         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7009
7010         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7011         MONO_PATCH_INFO_ICALL_ADDR.
7012
7013         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7014
7015         * aot-compiler.c: Resurrect full-aot support.
7016
7017 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7018
7019         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7020         
7021 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7022
7023         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7024         
7025 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7026
7027         * basic-simd.cs: Fix tests to work under ppc.
7028         Remove tests for methods that will be removed.
7029
7030 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7031
7032         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7033         generic type (via a typedef or typeref) correctly.
7034
7035 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7036
7037         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7038         diagnose an assertion failure.
7039
7040 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7041
7042         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7043         Fix trampoline size.
7044
7045         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7046         conversion opcodes are implemented natively instead via emulation.
7047
7048 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7049
7050         * cpu-mips.md: remove mips_xori
7051
7052         * mini-ops.h:  remove mips_xori
7053
7054         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7055
7056         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7057         
7058         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7059         
7060 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7061
7062         * cpu-mips.md: fix instruction lengths.
7063
7064         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7065
7066         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7067
7068         * mini-ops.h: fix slti / sltiu op profiles.
7069         
7070 2008-12-02  Martin Baulig  <martin@ximian.com>
7071
7072         * method-to-ir.c (mono_method_to_ir): Disable debugging
7073         information for the init locals block to make the debugger stop
7074         after all locals have been initalized.
7075
7076 2008-12-02  Martin Baulig  <martin@ximian.com>
7077
7078         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7079         running inside the debugger.
7080
7081 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7084         is enabled.
7085
7086         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7087         alu->alu imm optimization which only shows if deadce is disabled.
7088
7089         * aot-compiler.c: Rename the function names for the binary and asm writers
7090         so they can coexist in the same process. Rework the xdebug code to use the
7091         asm writer. This avoids the need to call into the runtime to dump the
7092         debugging info. Add more debugging info for types.
7093
7094         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7095
7096         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7097         cpu description tables, they can't occur in cpu-<ARCH>.md.
7098
7099         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7100         the stack in CEE_LDFLDA. Fixes #450542.
7101
7102         * generics.cs: Add a new test.
7103
7104 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7105
7106         * mini-ops.h: updated MIPS opcodes
7107         * mini-mips.c: decompose long opts
7108         * mini-mips.h: decompose long opts
7109         
7110 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7111
7112         * cpu-mips.md: fix length on int_rem_un
7113         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7114         
7115 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7116
7117         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7118
7119         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7120
7121 2008-11-29  Martin Baulig  <martin@ximian.com>
7122
7123         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7124         mono_debug_using_mono_debugger() in addition to the
7125         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7126
7127 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7128
7129         * mini-ops.h: updated more MIPS opcodes
7130         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7131         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7132         
7133 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7134
7135         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7136
7137 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7138
7139         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7140         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7141         * mini-ops.h: correct selected mips opcode entries
7142         
7143 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7144
7145         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7146         make them work.
7147
7148 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7149
7150         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7151
7152 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7153
7154         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7155         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7156         * mini-mips.h: disable IMT
7157         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7158         
7159 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7160
7161         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7162
7163 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7164
7165         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7166
7167 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7168
7169         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7170         consistency.
7171
7172 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7173
7174         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7175         for Set/GetVector aligned versions.
7176
7177 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7178
7179         * basic-simd.cs: Add tests for Get/SetVector.
7180
7181 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7182
7183         * mini.c: Removed g_slist_append_mempool().  Now in
7184         metadata/mempool.c.
7185
7186 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7187
7188         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7189         size properly and make the bounds check optional.
7190
7191         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7192         for SetVector and IsAligned.
7193
7194 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * mini.c: Remove unused mono_normalize_opcodes () function.
7197
7198 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7199
7200         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7201         using the new atomic add ops now.
7202
7203         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7204         add.
7205
7206 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7207
7208         * mini-ppc64.c: Several fixes.
7209
7210 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7211
7212         * cpu-mips.md: added jump_table
7213         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7214
7215 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7216
7217         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7218
7219 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7220
7221         * mini-ops.h: corrected a handful of MIPS opcodes.
7222
7223 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7224
7225         * aot-compiler.c: MIPS to use ELF writer
7226
7227 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7228
7229         * mini-codegen.c: remove MIPS specific assert.
7230
7231 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7232
7233         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7234         fixes.  PPC64 now passes most of the runtime regressions.
7235
7236 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7237
7238         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7239         volatile intervals a bit.
7240
7241 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7242
7243         * basic-long.cs: New test case.
7244
7245 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7246
7247         * mini.c (mini_method_compile): Disable globalra for large methods for 
7248         now.
7249
7250         * regalloc2.c (order_moves): Add fp support.
7251
7252         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7253         source bblock ends with an OP_BR_REG.
7254
7255         * ratests.cs: Add a new test.
7256
7257 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7258
7259         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7260         sharing.  PPC64 now passes generics.exe.
7261
7262 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7263
7264         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7265
7266 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7267
7268         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7269         memory when mono_jit_info_table_find () can't find the method in the
7270         LMF case.
7271
7272         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7273         AOTed code too.
7274         
7275         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7276         writer too.
7277
7278 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7279
7280         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7281         Several fixes.  PPC64 now runs exceptions.exe and
7282         devirtualization.exe.
7283
7284 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7285
7286         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7287         arrays.exe and basic-math.exe.
7288
7289 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7290
7291         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7292         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7293
7294 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7295
7296         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7297
7298 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7299
7300         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7301
7302         * ir-emit.h: Move macros from method-to-ir.c to here.
7303
7304 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7305
7306         * mini-ops.h: Correct the long simd ops to use LREG.
7307
7308 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7309
7310         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7311         
7312         * mini-ops.h: Correct the dreg type of a few long opcodes.
7313
7314         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7315         Add netbsd support.
7316
7317 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7318
7319         * mini-ppc.c: remove negative stack references in epilog
7320         for platforms that don't support the red zone.
7321
7322 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7323
7324         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7325         point regs.  Now PPC64 passes basic-calls.exe.
7326
7327 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7328
7329         * basic-simd.cs: Add tests for accessors of Vector2l.
7330
7331 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7332
7333         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7334
7335         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7336         
7337         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7338
7339 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7340
7341         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7342         PPC64 passes basic-long.exe.
7343
7344 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7345
7346         * decompose.c: Decompose carry and overflow add on PPC64 like on
7347         other 64 bit archs.  Don't decompose sub at all on PPC64.
7348
7349         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7350         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7351         basic-long.exe.
7352
7353 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7354
7355         * basic-simd.cs: Add tests for accessors of Vector2d.
7356
7357 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7358
7359         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
7360
7361         * cpu-x86.md: Same.
7362
7363         * mini-x86.c (mono_arch_output_basic_block): Same.
7364         
7365         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
7366
7367 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7368
7369         * basic-simd.cs: Add tests for accessors of Vector4f.
7370
7371 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7372
7373         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
7374
7375         * cpu-x86.md: Same.
7376
7377         * mini-x86.c (mono_arch_output_basic_block): Same.
7378         
7379         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
7380
7381 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7382
7383         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7384
7385 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7386
7387         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7388
7389         * cpu-x86.md: Same.
7390
7391         * mini-x86.c (mono_arch_output_basic_block): Same.
7392         
7393         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7394
7395 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7396
7397         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7398
7399 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7400
7401         * simd-intrinsics.c: Enable setters for Vector16sb.
7402
7403 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7404
7405         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
7406
7407         * cpu-x86.md: Same.
7408
7409         * mini-x86.c (mono_arch_output_basic_block): Same.
7410         
7411         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
7412
7413 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
7414
7415         * simd-intrinsics.c: Implement setter for Vector8us.
7416
7417 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
7420         for dead variables.
7421
7422 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7423
7424         * mini-ppc.c: remove references to the red zone in the prolog
7425         (for systems that don't support it).
7426
7427 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7428
7429         * cpu-ppc64.md: Fixed a few instruction lengths.
7430
7431         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7432         now.
7433
7434 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7435
7436         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7437         basic.exe now.
7438
7439 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7440
7441         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7442
7443 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7444
7445         * mini-ops.h: Added OP_INSERT_I2.
7446
7447         * cpu-x86.md: Same.
7448
7449         * mini-x86.c (mono_arch_output_basic_block): Same.
7450         
7451         * simd-intrinsics.c: Implement setter for Vector8s.
7452
7453         * simd-methods.h: Add the names of get setters of Vector8s.
7454
7455 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7456
7457         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7458         
7459         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7460         parameters.
7461
7462         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7463
7464 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7465
7466         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7467         for PPC64.  An empty program runs now.
7468
7469 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7470
7471         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7472
7473         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7474         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7475         info for JITted code is emitted into a shared library, loadable into gdb.
7476
7477 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7478
7479         * Makefile.am: Changes to build PPC64.
7480
7481         * mini-arch.h: Include mini-ppc64.h on PPC64.
7482
7483 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7484
7485         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7486         in PPC code up to r119147.
7487
7488 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7489
7490         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7491         cpu-ppc64.md: Changes for PPC64.
7492
7493         Based on code submitted by andreas.faerber@web.de at
7494         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7495         X11/MIT license.
7496
7497 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7498
7499         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7500         cpu-ppc64.md: Copied from the corresponding PPC files from
7501         r118846.
7502
7503 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7504
7505         * mini-ops.h: Added OP_ROUND.
7506
7507         * cpu-x86.md: Added round.
7508
7509         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7510
7511         * basic-math.cs: Added test_0_round to test rounding.
7512
7513         Contributed under MIT/X11 license.
7514
7515 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7516
7517         * aot-compiler.c : Fix the Winx64 build.
7518
7519         Contributed under MIT/X11 license.
7520
7521 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7522
7523         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7524         in OP_EXTRACT_R8 to avoid possible stack corruption.
7525
7526 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7527
7528         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7529
7530         * cpu-x86.md: Added extract_r8.
7531
7532         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7533         
7534         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7535         a couple of OP_EXTRACT_I4.
7536
7537         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7538
7539         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7540
7541 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7542
7543         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7544         and not 4.1. 
7545
7546 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7547
7548         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7549         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7550
7551         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7552         are not needed any more.
7553
7554         * mini.h: Remove the unused INS_LIST macros.
7555
7556         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7557         longer needed.
7558
7559         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7560         ir-emit.h.
7561
7562         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7563         mono_alloc_ireg () instead.
7564
7565         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7566         macros.
7567
7568         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7569         on amd64.
7570
7571         * aot-runtime.c (load_aot_module): Disable AOT when running under
7572         CAS.
7573
7574         * mini-amd64.h: Change the monitor fastpath defines to check for
7575         !PLATFORM_WIN32 so they work on *bsd too.
7576
7577         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7578
7579         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7580
7581         * mini.h (MonoCompile): Remove new_ir flag.
7582
7583         * regalloc.h regalloc.c: Remove unused code.
7584
7585         * cpu-*.md: Remove more unused opcodes.
7586
7587         * simple-cee-ops.h simple-mini-ops.h: Removed.
7588
7589         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7590         
7591 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7592
7593         * aliasing.h: Removed.
7594
7595         * *.c: Remove references to aliasing.h and inssel.h.
7596
7597         * mini.c: Remove additional unused functions.
7598
7599         * mini-ops.h cpu-*.md: Remove unused opcodes.
7600
7601 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7602
7603         Remove the old JIT code.
7604
7605         * inssel*.brg: Removed.
7606
7607         * ssa.c abcremoval.c aliasing.c: Removed.
7608
7609         * ssa2.c: Renamed to ssa.c.
7610
7611         * abcremoval2.c: Renamed to abcremoval.c.
7612
7613         * *.c: Removed all !cfg->new_ir code.
7614
7615         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
7616         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
7617
7618         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
7619         
7620 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7621
7622         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
7623         to simplify the code and cut back on the number of global symbols in the AOT
7624         file.
7625         
7626         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
7627
7628 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
7629
7630         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
7631         with the got/got_info tables.
7632
7633         * mini.h: Bump AOT file format version.
7634         
7635         * unwind.h: New file, contains definitions for stack unwinding.
7636
7637         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
7638         to cfg->unwind_ops.
7639         
7640         * aot-compiler.c: Generalize the emitting of unwind information to use the
7641         information in cfg->unwind_ops.
7642
7643         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7644
7645         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7646         AOT method frames. Enable writing symbols for methods by default.
7647
7648 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7649
7650         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7651         and make it work with vectors of element sizes 1, 2 and 4.
7652
7653         * simd-intrinsics.c: Enable getter for all vectors with element size
7654         1, 2 or 4.
7655
7656         * simd-methods.h: Add the names of other getters.
7657
7658         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7659
7660         * cpu-x86.md: Same.
7661
7662         * mini-x86.c: Same.
7663
7664 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7665
7666         * mini-ppc.h: portability fix.
7667
7668 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7669
7670         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7671         buggy and will overwrite it.
7672
7673 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7674
7675         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7676         Use it to emit local symbols for all methods so AOTed methods show up with
7677         their full name in gdb/valgrind output.
7678
7679 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7680
7681         * mini-ppc.c: portability fixes.
7682
7683 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7684
7685         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7686         entries out of the if (!generic_shared...) code so it is always done.
7687         (mono_class_init_trampoline): Do the patching when running under valgrind
7688         too, newer versions of valgrind have no problems with it.
7689
7690 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7691
7692         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7693         further sections.
7694
7695 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7696
7697         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7698         filters.
7699
7700 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7701
7702         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7703
7704 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7705
7706         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7707
7708         * cpu-x86.md: Same.
7709
7710         * mini-x86.c: Same.
7711
7712         * simd-intrinsics.c: Same.
7713
7714 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7715
7716         * simd-intrinsics.c: Enable constructor intrinsics for all types.
7717
7718 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7719
7720         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
7721         to work with more Vector types.
7722
7723 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7724
7725         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
7726         store the elemens directly instead of using and intermediate.
7727
7728 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
7731
7732         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
7733         to preserve %eax for aot plt trampolines.
7734
7735         * aot-compiler.c (compile_method): Don't skip synchronized methods.
7736         (encode_method_ref): Flag synchronized methods so they won't go through
7737         the AOT trampoline.
7738
7739         * aot-compiler.c: Additional work to support AOTing synchronized methods/
7740         wrappers.
7741
7742         * cpu-ia64.md (jmp): Increase max length.
7743
7744 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7745
7746         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
7747         open generic classes.
7748
7749         * aot-compiler.c: Enable the ELF writer on ELF platforms.
7750
7751         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
7752         box+brtrue optimization since it causes test failures on x86.
7753
7754 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7755
7756         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
7757
7758         * cpu-x86.md: Same.
7759
7760         * mini-x86.c: Same.
7761
7762         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
7763         for simd ctor values. 
7764
7765         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
7766         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
7767
7768 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7769
7770         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
7771         LogicalRightShift.
7772
7773         * simd-instrincs.c: Same.
7774
7775         * basic-simd.cs: Same.
7776
7777 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7778
7779         * ratests.cs: Add more tests.
7780
7781         * regalloc2.c (add_spill_code): Handle more corner cases.
7782
7783 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7784
7785         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
7786         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
7787         both the source an destination of an instruction.
7788
7789 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7790
7791         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
7792         wapihandles.c: more portability changes.
7793
7794 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
7795
7796         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
7797         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
7798         safe to execute in a signal handler and the kernel provides better
7799         the info in /proc/self/smaps. Avoid the assert on sigaction during
7800         cleanup.
7801
7802 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7803
7804         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
7805         do the bblock linking hack if it is actually needed.
7806
7807         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7808         up linking.
7809
7810         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7811         crash problem is fixed.
7812
7813         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7814         bblocks.
7815
7816         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7817         for catch clauses.
7818         (mini_method_compile): Set the starting value of next_vreg to 
7819         MAX_IREGS + MAX_FREGS when using globalra.
7820
7821         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7822         filter clauses with BB_EXCEPTION_HANDLER.
7823
7824         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7825
7826 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7827
7828         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7829         space for stdcall.  Fixes regressions on Win32.
7830
7831 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7832
7833         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7834         bblocks.
7835         (linear_scan): Remove an assert which doesn't seem to be needed.
7836
7837         * local-propagation.c (mono_local_deadce): Avoid a call to
7838         MONO_DELETE_INS which would screw up the instruction linking.
7839
7840         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7841
7842         * regalloc2.c: Upgrade to work the current JIT code.
7843
7844 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
7847         case.
7848
7849         * aot-runtime.c: Remove some dead code.
7850
7851         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
7852         consistency.
7853         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
7854
7855         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
7856         trampolines using sscanf since atoi doesn't work on large unsigned values.
7857
7858         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
7859         Initialize code_size.
7860
7861 2008-11-08  Mark Probst  <mark.probst@gmail.com>
7862
7863         * method-to-ir.c (mini_emit_inst_for_method): Make
7864         Interlocked.CompareExchange work for Int arguments on 32 bit
7865         archs, as well.
7866
7867 2008-11-07  Mark Probst  <mark.probst@gmail.com>
7868
7869         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
7870
7871 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
7872
7873         * main.c Fix MSVC build.
7874
7875         Contributed under MIT/X11 license.
7876
7877 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7878
7879         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
7880         alignment larger than 8 bytes are aligned correctly, too.
7881
7882         * mini.c: Honor the min_align field of MonoClass when laying out
7883         the stack.
7884
7885 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
7886
7887         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
7888
7889         * aot-compiler.c (emit_plt): Fix a warning.
7890         
7891         * aot-compiler.c: Implement ARM support in the binary writer.
7892
7893 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7894
7895         * basic-simd.cs: Add test for getter with byref arg.
7896         Fix the naming of a few tests.
7897         Add missing checks to a test.
7898
7899 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7900
7901         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
7902
7903         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
7904         most of the full-aot support for monitor enter/exit trampolines.
7905
7906         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
7907         enter/exit trampoline creation functions.
7908
7909         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
7910         make dist.
7911
7912 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7913
7914         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
7915         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
7916         implement the needed functionality without adding crap to the runtime.
7917
7918 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7919
7920         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
7921         non-x86 builds.
7922
7923         * mini.c (mono_build_date): New global version holding the build date in
7924         string format.
7925         
7926         * Makefile.am (buildver.c): Generate a file containing the build date.
7927
7928         * main.c: Set the build date from the generated file.
7929
7930         * mini.c (mono_get_runtime_build_info): New helper function returning build
7931         information in a string format.
7932         
7933         * driver.c (mono_main): Print the build date in --version.
7934
7935         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
7936         file when the bind-to-runtime-version option is used.
7937
7938 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * simd-intrinsics.c: Fix bug when using getters and byref args. 
7941
7942 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7943
7944         * simd-methods.h: Rename prefetch methods.
7945
7946         * simd-intrinsics.c: Same.      
7947
7948 2008-11-05  Mark Probst  <mark.probst@gmail.com>
7949
7950         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
7951         sizes.
7952
7953 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * aot-compiler.c: Use the bundled elf header files instead of depending on
7956         the system one.
7957         
7958         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
7959         mempool.
7960
7961         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
7962         on every call.
7963
7964 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
7965
7966         * cpu-x86.md: Add store nta ops.
7967
7968         * mini-ops.h: Same.
7969
7970         * mini-x86.c: Same.
7971
7972         * mini.h: Add an enum for simd prefetch modes.
7973
7974         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
7975         of store. Use the changed code to support store nta.
7976
7977         * simd-intrinsics.c: Add prefetch ops for all vector types.
7978
7979 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
7982         threads.
7983         
7984         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
7985         names.
7986
7987         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
7988         trampolines.
7989
7990 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7991
7992         * mini-x86.c: Fixed commit.
7993
7994 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7995
7996         * aot-compiler.c (emit_plt): Align the plt section only on x86.
7997
7998 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7999
8000         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8001         and MONITOR_EXIT, for the ASM fastpaths.
8002
8003         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8004         available.
8005
8006         * mini.c, patch-info.h: Signature and patch infos for
8007         Monitor.Enter/Exit trampolines.
8008
8009         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8010
8011         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8012         Monitor.Enter/Exit ASM fastpath for Linux.
8013
8014 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8015
8016         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8017
8018         * objects.cs: Add a new test.
8019         
8020         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8021
8022         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8023         if MONO_LOG_LEVEL is set.
8024
8025         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8026
8027         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8028
8029         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8030         
8031         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8032         of file offsets. Align the sections belonging to the data segment to 
8033         PAGESIZE.
8034
8035 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8036
8037         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8038         elf.h. Port it to amd64.
8039
8040 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8041
8042         * driver.c: Enable SIMD by default.
8043
8044 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8045
8046         * cpu-x86.md: Add prefetch op.
8047
8048         * mini-ops.h: Same.
8049
8050         * mini-x86.c: Same.
8051
8052         * mini.h: Add an enum for simd prefetch modes.
8053
8054         * simd-methods.h: Add prefetch function names.
8055
8056         * simd-intrinsics.c: Add prefetch ops for all vector types.
8057
8058 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8059
8060         * aot-compiler.c (emit_bytes): Speed this up a little.
8061
8062 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8063
8064         * aot-compiler.c: Add JIT time etc. statistics.
8065         
8066         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8067
8068         * mini.h (MonoCompile): Add 'got_offset' field.
8069
8070         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8071         method_got_offsets array.
8072
8073         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8074         wrappers.
8075
8076         * aot-compiler.c (compile_method): Add generic method instances referenced
8077         by the method to the list of methods to be compiled, this is required so if
8078         A<T> references B<T>, and another assembly references A<int>, then it will
8079         also get a copy of B<int>.
8080
8081         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8082         when checking for monitor enter/exit.
8083
8084 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8085
8086         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8087         for Monitor.Enter and Monitor.Exit if enabled.
8088
8089         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8090         Solaris.
8091
8092 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8093
8094         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8095         of an OP_MOVE. Fixes #440046.
8096
8097         * basic-long.cs: Add a new test.
8098
8099 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8100
8101         * mini.h: Add synchronization note for the managed counter-part.
8102
8103         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8104         returns the simd caps of the current cpu.
8105
8106 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8107
8108         * basic-simd.cs: Remove Console.WriteLine.
8109
8110 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8111
8112         * basic-simd.cs: New tests for Vector2ul.
8113
8114 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8115
8116         * simd-intrinsics.c: Add new vector type Vector2ul.
8117
8118 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8119
8120         * basic-simd.cs: New tests for Vector2l.
8121
8122 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8123
8124         * cpu-x86.md: Add long version of most packed int ops.
8125
8126         * mini-ops.h: Same.
8127
8128         * mini-x86.h: Same.
8129
8130         * simd-intrinsics.c: Add new vector type Vector2l.
8131
8132 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8133
8134         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8135
8136         * simd-methods.h: Remove SN_op_BitwiseXor.
8137
8138 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8139
8140         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8141         alignment.
8142
8143 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8144
8145         * basic-simd.cs: Test for Vector2d.
8146
8147         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8148         value.
8149
8150 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8151
8152         * cpu-x86.md: Add double version of all packed float ops.
8153
8154         * mini-ops.h: Same.
8155
8156         * mini-x86.h: Same.
8157
8158         * simd-intrinsics.c: Add new vector type Vector2d.
8159
8160         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8161
8162         * simd-methods.h: Add Duplicate.
8163
8164 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8165
8166         * basic-simd.cs: Test for packing with signed saturation.
8167
8168 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8169
8170         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8171         found in the TYPESPEC table.
8172
8173 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8174
8175         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8176         too.
8177
8178         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8179
8180         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8181         instead of the RVA, since the RVA can be changed by tools like the cil 
8182         stripper.
8183
8184         * method-to-ir.c (mono_method_to_ir2): Ditto.
8185
8186         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8187         (deserialize_variable): Ditto.
8188
8189 2008-10-25  Martin Baulig  <martin@ximian.com>
8190
8191         * debug-mini.c (write_variable): Use
8192         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8193
8194 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8195
8196         * cpu-x86.md: Add unsigned variants of packd and packw.
8197
8198         * mini-ops.h: Same.
8199
8200         * mini-x86.h: Emit the right instruction for packd and packw.
8201         Add unsigned variants of packd and packw.
8202
8203         * simd-intrinsics.c: Packd and packw were used in place of their
8204         unsigned variants. Change that.
8205         Add intrinsics for (Signed)PackWithSignedSaturation.
8206
8207         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8208
8209 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8210
8211         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8212
8213 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8214
8215         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8216
8217         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8218
8219         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8220         sse instructions.
8221
8222         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8223
8224 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8225
8226         * method-to-ir.c, mini.c: Special casing for the synchronized
8227         wrapper for the ldtoken+GetTypeFromHandle case.
8228
8229 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8232
8233         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8234         created/split bblocks.
8235
8236 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8237
8238         * mini-ops.h: Add packed signed mul high.
8239         
8240         * cpu-x86.md: Same.
8241
8242         * mini-x86.c (mono_arch_output_basic_block): Same.
8243
8244         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8245
8246         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8247
8248 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8249
8250         * basic-simd.cs: Tests for Vector16sb.
8251
8252 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8255
8256 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8257
8258         * mini-ops.h: Add packed signed min, max and compare greater.
8259         
8260         * cpu-x86.md: Same.
8261
8262         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8263         saturation.
8264
8265         * simd-methods.h: Add CompareGreaterThan.
8266
8267         * simd-methods.h: Remove CompareEquals.
8268
8269         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8270
8271         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8272
8273         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8274         CompareEqual.
8275
8276 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8277
8278         * basic-simd.cs: Fix tests due to change in the API.
8279
8280 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8281
8282         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8283
8284 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8285
8286         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8287
8288         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8289         inst_offset as this has invalid values for LDADDR.
8290
8291 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8292
8293         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8294
8295         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8296
8297 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8298
8299         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8300         for accessing field->data.
8301
8302 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8303
8304         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8305
8306 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8307
8308         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8309
8310         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8311
8312 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8313
8314         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8315         from the cfg mempool.
8316
8317 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8318
8319         * basic-simd.cs: Tests for new methods in Vector8us.
8320
8321 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8322
8323         * mini-ops.h: Add multiply and store high.
8324         
8325         * cpu-x86.md: Same.
8326
8327         * mini-x86.c (mono_arch_output_basic_block): Same.
8328
8329         * simd-methods.h: Same.
8330
8331         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8332         and CompareEqual.
8333
8334 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8335
8336         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8337         mono_class_setup_vtable ().
8338
8339         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8340         mono_class_get_vtable_entry () for accessing klass->vtable.
8341
8342         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8343
8344         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8345         found.
8346
8347         * method-to-ir.c (mono_save_token_info): Don't save references made from
8348         wrappers.
8349
8350         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8351         of generic instances.
8352
8353         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8354
8355 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8356
8357         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8358         OP_JMP depends on the method signature.  Calculate it properly.
8359
8360 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8361         
8362         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8363         called directly.
8364
8365         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8366         instances.
8367         (emit_extra_methods): Add another table mapping method indexes to 
8368         offsets in the extra_method_info table.
8369
8370         * mini.h: Bump AOT file format version.
8371         
8372         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8373         and mono_aot_get_method_from_token () into one function.
8374
8375 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8376
8377         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8378         separate counter.
8379
8380 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8381
8382         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8383         methods.
8384
8385         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8386         disable_aot.
8387
8388         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8389
8390         * mini.h: Bump aot file format version.
8391
8392         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8393         AOT file can contain native code for methods which are not in the METHOD
8394         table. Generate code for non-sharable generic instances of generic methods
8395         found in the METHODSPEC table.
8396         
8397         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8398         encoding generic type handles.
8399
8400         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8401         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8402
8403         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
8404         macros + MONO_ADD_INS.
8405
8406         * mini.c (mono_jump_info_token_new2): New function which takes a generic
8407         context as well.
8408
8409         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
8410
8411         * mini.h: Bump aot file format version.
8412
8413         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
8414
8415 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8416
8417         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
8418         platforms, with definable stack alignment value.  Set to 16 now
8419         for all platforms.
8420
8421         * mini.c, mini.h, driver.c: Command line option for disabling
8422         stack alignment.
8423
8424 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8425
8426         * basic-simd.cs: Tests for new methods in Vector4ui.
8427
8428 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8429
8430         * mini-ops.h: Add packed int shuffle.
8431         
8432         * cpu-x86.md: Same.
8433
8434         * mini-x86.c (mono_arch_output_basic_block): Same.
8435
8436         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8437         extract mask, max, min, shuffle.
8438
8439         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8440
8441 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8442
8443         * basic-simd.cs: Tests for new methods in Vector8us.
8444
8445 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8446
8447         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8448         RuntimeTypeHandle, not a TypedReference.
8449
8450 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8451
8452         * simd-intrinsics.c: remove relocations.
8453
8454 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8455
8456         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8457         optimizations from the x86 backend.
8458
8459 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8460
8461         * simd-methods.h, simd-intrinsics.c: debloat method names and
8462         prepare for no relocations.
8463
8464 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8465
8466         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8467         
8468         * cpu-x86.md: Same.
8469
8470         * mini-x86.c (mono_arch_output_basic_block): Same.
8471
8472         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8473         extract mask, max, min and sum of absolute differences.
8474
8475         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8476         method name.
8477
8478 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8479
8480         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8481         Renamed one test for consistency.
8482
8483 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8484
8485         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8486         fix to the code that deal with other blocks.
8487
8488 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8489
8490         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8491
8492 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8493
8494         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8495         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8496         able to process the source reg.
8497
8498 2008-10-16  Martin Baulig  <martin@ximian.com>
8499
8500         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8501
8502         * inssel.brg: Add `OP_HARD_NOP'.
8503
8504         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8505
8506         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8507         `OP_HARD_NOP' instruction when running inside the debugger.
8508
8509         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8510         `OP_HARD_NOP' instruction when running inside the debugger.
8511
8512 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8513
8514         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8515         now works. The issue with the regalloc tripping up no longer
8516         happens.
8517
8518         * simd-intrinsics.c (load_simd_vreg): Same.
8519
8520 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8521         
8522         * basic-simd.cs: Tests for new Vector8ui methods.
8523
8524 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8525
8526         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8527         only for type. This fixes crashes where MonoInst::klass is checked
8528         for ops of type != VTYPE or OBJ.
8529
8530         * simd-intrinsics.c (load_simd_vreg): Same.
8531
8532 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8533
8534         * mini-ops.h: Add ops for packed shuffle/max/avg and
8535         extract mask.
8536         
8537         * cpu-x86.md: Same.
8538
8539         * mini-x86.c (mono_arch_output_basic_block): Same.
8540
8541         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8542         extract mask.
8543
8544         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8545         to emit extract mask op.
8546
8547         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8548         to emit word shuffles.
8549
8550 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8551
8552         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8553         the largest alignment needed by a variable, but at least
8554         sizeof(gpointer).
8555
8556 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8557
8558         * basic-simd.cs: Tests for the fixes in the last commit.
8559
8560 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8561
8562         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8563         no longer handles STACK_PTR input.
8564
8565         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8566
8567         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8568         get_simd_vreg   but handles STACK_PTR input.
8569
8570         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8571         as the input can be an arbitrary pointer.
8572
8573         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8574         LDADDR local optimization directly otherwise use a store op.
8575
8576 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8577
8578         * basic-simd.cs: Tests for dup low and dup high.
8579
8580 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8581
8582         * mini-ops.h: Add dup low and dup high ops.
8583         
8584         * cpu-x86.md: Same.
8585
8586         * mini-x86.c (mono_arch_output_basic_block): Same.
8587
8588         * simd-intrinsics.c (vector4f_intrinsics): Same.
8589
8590 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8591
8592         * basic-simd.cs: Tests for recently added functionality.
8593
8594 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8595
8596         * mini-ops.h: Add remaining sse1 fp ops.
8597         
8598         * cpu-x86.md: Add remaining sse1 fp ops.
8599
8600         * mini-x86.c (mono_arch_output_basic_block): Same.
8601
8602         * mini.h: Add enum for simd FP compare conditions.
8603
8604         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
8605
8606         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
8607         so the backed can generate the appropriate op.
8608
8609 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8610         This patch squeese one more byte from the SimdIntrinsc struct.
8611
8612         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
8613         a a shift amount intead of simply or'ing it.
8614
8615         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
8616
8617         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
8618         byte so we can have an aditional flags field without increasing struct size.
8619
8620         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
8621         against the simd_supported_versions bitmask.
8622
8623         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
8624
8625 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
8626
8627         * mini.c: remove rawbuffer code (the only use here is unsafe because
8628         it takes locks during signal handling and the kernel now provides much
8629         better info in proc/pid/smaps these days).
8630
8631 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
8632
8633         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
8634         OP_X86_PUSH_OBJ. Fixes #434620.
8635
8636         * objects.cs: Add a test.
8637         
8638 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
8639
8640         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8641         that the packuswb/packusdw don't work with unsigned numbers for what
8642         would be negative numbers in signed format.
8643
8644         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8645         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8646
8647         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8648
8649         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8650
8651         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8652
8653         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8654
8655         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8656         add more ops.
8657
8658         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8659         version as the enum in mini.h.
8660
8661         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8662         for sse3 ops, check the simd_version field if present. This way the code
8663         works with all versions of sse.
8664
8665 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8666
8667         * simd-intrinsics.c: Fixed intrinsic name typo.
8668
8669         * mini.h: Added missing simd exported function.
8670
8671         * basic-simd.cs: Added tests for Vector4ui.
8672         Fixed broken test for Vector16b.
8673
8674 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8677         the max length to 64.
8678
8679 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8680
8681         * method-to-ir.c: Only do the fast virtual generic method call for
8682         non-wrapper methods.
8683
8684         * mini.h, mini-trampolines.c: The new generic virtual remoting
8685         trampoline handles virtual method calls via the vtable (as done by
8686         the fast virtual generic method calls) to remoting proxies.
8687
8688         * mini.c (mono_jit_create_remoting_trampoline): For generic
8689         methods reate a generic virtual remoting trampoline.
8690
8691         * mini-amd64.h: Enable fast virtual generic method calls again.
8692
8693 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8694
8695         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8696         restore registers when doing tail calls.
8697
8698 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8699
8700         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8701         Vector4ui.
8702
8703 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8704
8705         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8706
8707 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8708
8709         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8710
8711 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8712
8713         * basic-simd.cs: Retrofit for API changes.
8714
8715 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8716
8717         * mini-ppc.c: Handle integer stack arguments for tail calls.
8718
8719 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8720
8721         * optflags-def.h: Removed sse3 optimization.
8722
8723         * driver.c: Same.
8724
8725         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
8726         sse3.
8727
8728         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
8729
8730         * mini.h: Added enumeration with simd versions.
8731
8732         * simd-intrinsics.c (emit_intrinsics): Use the new static var
8733         for detecting SSE3.
8734
8735         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
8736
8737         * mini.c (mini_init): Call mono_simd_intrinsics_init.
8738
8739 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8740
8741         * basic-simd.cs: Added tests for Vector8u and Vector16u.
8742
8743         * basic-simd.cs: Fixed test naming.
8744
8745 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8746
8747         * mini-ops.h: Added ops for packed and saturated math, shifts
8748         and packing/unpacking.
8749
8750         * cpu-x86.md: Added descriptors for the above ops.
8751
8752         * mini-x86.c: Added code to emmit the above ops.
8753
8754         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
8755
8756 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
8757
8758         * aot-compiler.c (compile_method): Enable AOT for generic code.
8759
8760         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
8761
8762 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
8763
8764         * mini.c: add a workaround for a common screwup that ends up blamed
8765         to mono (other processes blocking signal delivery).
8766
8767 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8768
8769         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
8770         in the LDFLD/STFLD opcodes. Fixes #432673.
8771
8772         * iltests.il.in: Add a new test.
8773
8774 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
8775
8776         * mini-arm.c: attach the thread in unmanaged->managed transitions
8777         using delegates (bug #433148).
8778
8779 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8780
8781        * basic-simd.cs: Use new ShuffleSel constants.
8782
8783 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8784
8785         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
8786
8787         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
8788         only disable simd intrinsics if no sse2 is detected.
8789
8790         * optflags-def.h: Added sse3.
8791
8792         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
8793         is disabled.
8794
8795 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8796
8797         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
8798         when adding delegate-invoke wrappers.
8799
8800 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8801
8802         * Makefile.am: Reenable the simd tests.
8803
8804 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
8805
8806         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
8807           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8808           other vreg is allocated to that hreg.
8809
8810         Contributed under MIT/X11 license.
8811
8812 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8813
8814         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8815         yet checked in.
8816
8817 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8818
8819         * basic-simd.cs: New test suite for SIMD intrinsics.
8820
8821         * Makefile.am: Added new tests.
8822
8823 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8824
8825         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8826
8827         * mini-ops.h: Same.
8828
8829         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8830
8831         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8832         using SSE2 aware opcodes.
8833
8834         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8835         is enabled, this code path is only reachable if conversion ops are emmited after
8836         mono_method_to_ir.
8837
8838         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8839
8840         This optimization saves 6 bytes per conversion against the old version.
8841
8842 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8843
8844         * aot-compiler.c (compile_method): Don't skip methods referencing 
8845         generic methods without a corresponding entry in token_info_hash, since
8846         encode_method_ref () can handle all generic methods now.
8847
8848         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
8849         generic context is set.
8850         
8851         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
8852         generic sharing of LDTOKEN.
8853
8854 2008-10-06  Mark Probst  <mark.probst@gmail.com>
8855
8856         * mini-amd64.h: Temporarily disabled fast virtual generic method
8857         calls because it breaks the System.Runtime.Remoting tests.
8858
8859 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8860
8861         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
8862
8863         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
8864         so inlining actually works.
8865         (check_inline_caller_method_name_limit): Ditto.
8866
8867 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
8868
8869         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
8870         64 bit safety (from Olaf Hering and Andreas Farber).
8871
8872 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8873         
8874         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
8875         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
8876         unused virtual call support code.
8877
8878         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
8879         
8880         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
8881         which can't use aot trampolines.
8882         (decode_patch): Don't create aot trampolines for methods which can't use
8883         them.
8884
8885         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
8886         use aot trampolines.
8887
8888         * mini.h: Bump AOT image format version.
8889         
8890 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
8891
8892         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
8893         to save_token_info () since cmethod is inflated for constrained calls.
8894
8895         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
8896
8897 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
8898
8899         * Makefile.am: Add build rules for ppc64.
8900         This avoids the build failing at pedump with unresolved symbols
8901         due to lack of arch_sources. Instead it will now fail earlier
8902         due to lack of cpu-ppc64.md.
8903
8904         Contributed under MIT/X11 license.
8905
8906 2008-10-04  Mark Probst  <mark.probst@gmail.com>
8907
8908         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
8909         tail calls.
8910
8911         * iltests.il.in: Add test case for tail call with many arguments.
8912
8913 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8914
8915         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
8916         to the fast virtual generic method code until the aot case is fixed.
8917
8918 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8919
8920         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
8921
8922 2008-10-03  Mark Probst  <mark.probst@gmail.com>
8923
8924         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
8925         thunks.
8926
8927 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8928         
8929         * simd-intrinsics.c: Forgot to add this one.
8930
8931         * mini-codegen.c: Fix macro in case SIMD is not supported.
8932
8933 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
8934         
8935         This patch land initial JIT support for simd intrinsics.
8936
8937         * mini-x86.h: Added new define to make --enable_minimal work on x86.
8938
8939         * Makefile.am: Added simd-intrinsics.c
8940
8941         * simd-intrinsics.c: New file with simd instrinsic related
8942         code.
8943
8944         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
8945
8946         * cpu-x86.md: Add simd related instructions.
8947
8948         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
8949
8950         * driver.c: Added two new --regression variants.
8951
8952         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
8953
8954         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
8955
8956         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
8957         extract some complicated logic to helper functions.
8958
8959         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
8960
8961         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
8962
8963         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
8964         the specialized simplification pass.
8965
8966         * method-to-ir.c (mono_spill_global_vars): Use new macro.
8967
8968         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
8969
8970         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
8971         table.
8972
8973         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
8974         if MONO_ARCH_NEED_SIMD_BANK is defined.
8975
8976         * mini-ops.h: Added the new simd ops.
8977
8978         * mini-x86.c: Added mono_arch_xregname.
8979
8980         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
8981
8982         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
8983
8984         * mini-x86.h: Define simd related MONO_ARCH macros.
8985
8986         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
8987
8988         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
8989
8990         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
8991         MONO_CLASS_IS_SIMD to deal with simd related IR.
8992
8993         * mini.h (MonoInst): Added spill_var to the backend union.
8994
8995         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
8996
8997         * mini.h: Added forward declarations of the new simd fuctions.
8998
8999         * optflags-def.h: Added new optimization names SIMD.
9000
9001         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9002
9003         * regalloc.h: Added support for working with 3 register banks.
9004
9005         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9006
9007         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9008
9009 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9010
9011         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9012
9013 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9014
9015         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9016         instead of one on 64 bit systems.
9017
9018         * method-to-ir.c: Remove unused includes.
9019
9020 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9021
9022         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9023         cfg->used_int_regs, since the two are different on arm.
9024
9025 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9026
9027         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9028         mono_method_get_vtable_index() to get the vtable index.
9029
9030 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9031
9032         * method-to-ir.c (mono_method_to_ir2): Don't create native
9033         wrappers for array methods, because they're never called (and if
9034         they were called they wouldn't work).
9035
9036 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9037
9038         * method-to-ir.c (mono_method_to_ir2): Array methods are
9039         special-cased and must not be invoked indirectly via the (M)RGCTX
9040         when generic sharing is turned on.  Fixes #431413.
9041
9042 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9043
9044         * method-to-ir.c: When generic sharing is active, call
9045         non-interface virtual generic methods via the standard trampoline.
9046
9047         * mini-trampolines.c: Handle virtual generic shared methods.
9048
9049         * mini.h, mini-x86.c, mini-x86.h: New argument for
9050         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9051         method thunks and which is the trampoline to call if the lookup
9052         fails.  Enable the virtual generic method thunk for x86.
9053
9054         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9055         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9056         argument but assert that it's NULL, because these archs don't yet
9057         implement the virtual generic method thunk.  Changes in the IMT
9058         thunk data structures.
9059
9060 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9061
9062         * aot-compiler.c (emit_globals): Avoid invalid characters in
9063         the static linking symbol.
9064
9065         * objects.cs: Add a test for the range check optimization. Fix warnings.
9066
9067         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9068         optimization from the current JIT.
9069
9070         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9071         later in decompose_array_access_opts () to allow more optimizations.
9072
9073         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9074         mono_decompose_soft_float () for consistency.
9075
9076         * mini-ops.h: Fix arguments of OP_STRLEN.
9077
9078         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9079         into a separate function.
9080         (reset_cast_details): Ditto.
9081         (handle_unbox): Save cast details. Fixes #431254.
9082
9083         * method-to-ir.c: Remove some obsolete FIXMEs.
9084
9085 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9086
9087         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9088
9089 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9090
9091         * mini-codegen.c: More work on macros to make them
9092         ready for multiple regbanks.
9093
9094 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9095
9096         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9097
9098         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9099
9100 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9101
9102         * mini-codegen.c (mono_spillvar_offset): Proper support for
9103         multiple regbanks.
9104
9105 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9106
9107         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9108         the stack overflow changes.
9109
9110 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9111
9112         * mini-codegen.c: Make all bank macros depend on reg_bank.
9113
9114         * mini-codegen.c (mono_local_regalloc): Make free mask
9115         initialization regbank aware.
9116
9117 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9118
9119         * mini-codegen.c (mono_local_regalloc): Extract callee
9120         mask selection to a function and make it regbank aware.
9121
9122 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9123
9124         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9125         code to deal with many regbanks.
9126
9127 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * mini-codegen.c: More fp->regbank changes.
9130
9131 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9132
9133         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9134         of a hardcoded constant.
9135
9136 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * method-to-ir.c (type_from_stack_type): Fix typo.
9139
9140 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9141
9142         * mini-ia64.c (emit_move_return_value): Convert float return values to
9143         double.
9144
9145         * objects.cs: Add a new test.
9146         
9147         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9148         VARARG methods to fix an assert later.
9149
9150         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9151         end so it at least compiles.
9152
9153 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9154
9155         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9156
9157 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9158
9159         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9160         optimization to a new function (emit_optimized_ldloca_ir) and enable
9161         it for both ldloca and ldloca_s.
9162
9163 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9164
9165         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9166         gshared CASTCLASS code.
9167
9168         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9169         amd64, where the libc stack unwinder encounters stack frames referring to
9170         native code in unmapped memory.
9171
9172         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9173         sharing.
9174
9175         * generics.cs: Add new test.
9176
9177 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9178
9179         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9180         add a check that one of the ARM_FPU_ constants is defined.
9181
9182         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9183         
9184         * mini-exceptions.c: Fix build on non-altstack platforms.
9185
9186         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9187         sharing of vtypes.
9188
9189         * ir-emit.h: Add a comment to NEW_PCONST.
9190
9191         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9192
9193         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9194
9195         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9196         after the changes to MonoJitDomainInfo.
9197
9198 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9199
9200         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9201
9202 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9203
9204         * mini-ppc.c: Compiler warning fixes.
9205
9206 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9207
9208         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9209         for pinvokes.
9210
9211 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9212
9213         * exceptions-ppc.c, mini-ppc.h: Compile
9214         mono_arch_handle_altstack_exception() on Darwin, too.
9215
9216 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9217
9218         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9219         work on archs which don't have generic sharing implemented, only
9220         without the vtable_arg.
9221
9222 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9223
9224         * mini.c: Added comment explaining why delegate ctor icall
9225         wrappers are compiled.
9226
9227 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9228
9229         * mini.c: Don't produce trampolines to delegate ctor icall
9230         wrappers but compile them upfront.
9231
9232 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9233
9234         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9235         runtime-set function when going back to managed code. Currently this
9236         is used to set back the protection on the soft ovf pages and/or to
9237         throw the stack overflow exception that happened in unmanaged code.
9238
9239 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9240
9241         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9242         runtime-set function when going back to managed code. Currently this
9243         is used to set back the protection on the soft ovf pages and/or to
9244         throw the stack overflow exception that happened in unmanaged code.
9245
9246 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9247
9248         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9249         the support code for restoring stack protection after stack overflows
9250         that happen in unmanaged code. Don't set the exec permission on the
9251         soft overflow area.
9252
9253 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9254
9255         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9256         delegate->method_ptr is set. Fixes #428054.
9257
9258 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9259
9260         * tests.cs: Rename to ratests.cs.
9261
9262         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9263         emit_get_rgctx_... functions.
9264
9265 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9266
9267         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9268
9269 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9270
9271         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9272         before asserting that method is sharable.
9273
9274 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9275
9276         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9277         whether method needs a static RGCTX wrapper used instead of
9278         complex conditions.
9279
9280         * generic-sharing.c, mini.h: A few functions moved to
9281         metadata/generic-sharing.c.
9282
9283 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9284
9285         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9286         Generic code sharing for value types, which essentially means
9287         treating value type methods like static methods.  The RGCTX is
9288         passed in the same way.
9289
9290 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9291
9292         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9293         opcode when creating multi-dimensional arrays of open types.
9294
9295         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9296         open generic types.
9297
9298         * generics.cs: Add a test.
9299
9300         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9301
9302 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9303
9304         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9305
9306         * mini.c (mini_method_compile): Set it when running under the debugger. 
9307
9308         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9309         vreg optimization if the flag is set.
9310
9311         * driver.c (mono_main): Add --attach= option to pass options to
9312         the attach agent.
9313
9314         * mini.c (sigquit_signal_handler): Start the attach agent.
9315
9316         * ssapre.c: Disable this to save space since it is not yet ported to
9317         linear IR.
9318
9319         * regalloc2.c: Disable this to save space.
9320
9321         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9322
9323 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9324
9325         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9326         the -v option useful again.
9327
9328 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9329
9330         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9331         --break-at-bb.
9332
9333         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9334         arrays of arrays. Fixes #428406.
9335
9336         * method-to-ir.c (mini_emit_castclass): Ditto.
9337
9338         * objects.cs: Add new test.
9339         
9340 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9341
9342         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9343         was wrong at it choked against target_type_is_incompatible for byref types.
9344
9345 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9346
9347         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9348         places.
9349
9350 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9351
9352         * mini-exceptions.c: update a few more exceptions-related counters.
9353
9354 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9355
9356         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9357         new functions to allocate from persistent mempools.
9358
9359 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9360
9361         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9362         multiple register banks in the future.
9363
9364         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9365
9366 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9367
9368         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9369
9370         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9371
9372         * mini.h: Export type_to_eval_stack_type.
9373
9374         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9375         is only ins->klass of byref types.
9376
9377 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9378
9379         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9380         (mini_emit_memcpy2): Ditto.
9381
9382         * mini-amd64.c: Fix a warning.
9383
9384 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9385
9386         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9387         linking.
9388
9389 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9390
9391         * method-to-ir.c: Extract stloc micro-optimization to a
9392         function and apply it to all cases.
9393
9394 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9395
9396         * method-to-ir.c: Don't fail generic code sharing in cases we
9397         already support.
9398
9399 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9400
9401         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9402
9403 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9404
9405         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
9406         implementation.
9407
9408 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
9409
9410         * trace.c: make tracing more useful and correct, with per-thread
9411         id and indent info.
9412
9413 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9414
9415         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
9416         doing a method call and the argument is an R4.
9417
9418 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
9419
9420         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
9421         generic methods.
9422
9423 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9424
9425         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9426
9427 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9428
9429         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9430         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9431
9432 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9433
9434         * driver.c: Add a --agent argument (not supported yet) to load managed
9435         agent assemblies before loading the main assembly, similarly to how the
9436         Java VM handles agents.
9437
9438 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9439
9440         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9441         function to do stack layout of local variables.
9442
9443 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9444
9445         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9446         calculation.
9447
9448 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9449
9450         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9451         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9452         JIT if DISABLE_JIT is defined.
9453
9454         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9455         defined.
9456
9457 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9458
9459         * iltests.il.in: Disable the fconv test on PPC (the result is
9460         undefined according to ECMA).
9461
9462 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9463
9464         * iltests.il.in: Enable tail call tests for PPC.
9465
9466         * mini.h: Add variable for storing incoming valuetype argument
9467         addresses for tail calls.
9468
9469         * mini-ppc.c: Implement valuetype arguments and return values for
9470         tailcalls on Linux.
9471
9472 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9473
9474         * mini-ppc.c: Partially implement tail calls (struct arguments and
9475         return values not supported).
9476
9477         * method-to-ir.c: Enable tail calls on PPC.
9478
9479 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9480
9481         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9482         runtime-invoke wrappers to work around the problem of them getting
9483         assigned to a random class.
9484
9485         * aot-runtime.c (mono_aot_get_method): Ditto.
9486         
9487 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9488
9489         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9490         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9491
9492 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9493
9494         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9495         until they're implemented properly.
9496
9497         * exceptions-ppc.c: Use arch-independent exception-handling code
9498         instead of custom one.
9499
9500         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9501         for Linear IR.
9502
9503         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9504
9505         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9506         applies when __powerpc__ is defined.
9507
9508 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9509
9510         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9511         methods to their code to avoid computing the full name of wrappers and
9512         doing a lookup in a string hash table.
9513
9514 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9515
9516         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9517         we identify bblocks before method_to_ir () is ran.
9518
9519         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9520         Also avoid optimizing branches pointing to themselves.
9521
9522         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9523
9524 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9525
9526         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9527
9528 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9529
9530         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9531         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9532         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9533         'buf'.
9534
9535         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9536         jumped to the same entry in plt_jump_table.
9537
9538 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9539
9540         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9541         dynamic images.
9542
9543 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9546         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9547         #421807.
9548
9549 2008-08-29  Geoff Norton  <gnorton@novell.com>
9550
9551         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9552         segment, and doesn't properly handle .space as .text.  Fixes
9553         AOT Mach/ARM
9554
9555 2008-08-29  Geoff Norton  <gnorton@novell.com>
9556
9557         * mini.c: Disable the mach exception handler when running on 
9558         ARM
9559
9560 2008-08-29  Geoff Norton  <gnorton@novell.com>
9561
9562         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9563         globals on Darwin/ARM
9564
9565 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9566
9567         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9568         since too many things depend on it. Instead, call 
9569         mono_runtime_set_no_exec ().
9570         
9571         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9572         the new JIT.
9573
9574         * aot-compiler.c: Add an 'asm-only' AOT option.
9575
9576         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9577                 
9578         * aot-compiler.c (compile_method): Disable gshared support for now as it
9579         doesn't yet work.
9580
9581 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9582
9583         * mini-amd64.h : Fix a compiler warning.
9584
9585         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9586           Changed to use a callback function to retrieve the unwind info.
9587           This avoids problems observed when code blocks were removed by
9588           unloading an app domain.
9589
9590         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9591           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9592           to work properly.
9593
9594         Contributed under MIT/X11 license.
9595
9596 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9597
9598         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
9599           case to keep the stack aligned to 8.
9600
9601         Contributed under MIT/X11 license.
9602
9603 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
9604
9605         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
9606         avoid repeated linear searches.
9607
9608 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9609
9610         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
9611         methods it can't handle.
9612         
9613         * aot-compiler.c (add_method): Avoid adding a method twice.
9614         (add_wrappers): Add runtime invoke wrappers for all methods.
9615
9616         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
9617         function to create an aot-compatible version of this trampoline.
9618
9619         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
9620
9621 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9622
9623         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
9624
9625         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
9626         with a generic sharing failure.
9627
9628         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
9629
9630         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
9631         CEE_RETHROW. Fixes #419634.
9632
9633         * mini.c (mono_method_to_ir): Ditto.
9634
9635         * exceptions.cs: Add a new test.
9636         
9637         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
9638         to mono_type_stack_size_internal () since some callers might not pass in
9639         an rgctx.
9640
9641         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9642         instrument_prolog. Fixes #419878.
9643
9644         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9645         doubles in soft float mode volatile.
9646
9647 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9648
9649         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9650
9651         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9652         to handle soft float correctly.
9653
9654         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9655         the fast path.
9656
9657         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9658
9659         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9660         to sp, since the generics catch code requires it.
9661
9662         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9663         copying.
9664
9665         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9666         mono_arch_emit_imt_argument ().
9667
9668         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9669
9670         * mini-arm.c tramp-arm.c: Generic sharing updates.
9671
9672 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9673
9674         * mini-arm.c: Fix the arm build.
9675
9676         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9677         handling enums, generic instances and generic sharing.
9678         (mini_type_stack_size_full): Ditto.
9679
9680         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9681         
9682         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9683
9684         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9685
9686         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9687         trampolines.
9688
9689         * mini-arm.c: Various small generic sharing changes.
9690
9691         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9692         this for x86.
9693         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9694         custom code.
9695
9696         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9697         helper function to return a generic class init trampoline.
9698
9699         * method-to-ir.c mini.c: Use it.
9700         
9701         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9702         arch-specfic function to return a generic class init trampoline.
9703
9704         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9705         the GENERIC_CLASS_INIT custom code.
9706
9707         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9708         a fatal error, not a sharing failure.
9709
9710         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9711         needed.
9712
9713         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
9714         trampoline argument from MONO_ARCH_VTABLE_REG.
9715
9716         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9717         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9718         argument, and pass the vtable in VTABLE_REG.
9719
9720         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9721         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9722         argument, and pass the vtable in VTABLE_REG.
9723         (mono_arch_create_trampoline_code_full): Remove some special casing for
9724         the rgctx fetch trampoline.
9725
9726         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
9727         Fixes #419273.
9728
9729         * iltests.il: Add a test for it.
9730
9731 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
9732
9733         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
9734
9735         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
9736         no longer needed.
9737
9738         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
9739         use mono_jit_info_table_find () to avoid recursion.
9740         (mono_delegate_trampoline): Add a sync wrapper here.
9741
9742         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
9743         here.
9744
9745         * mini.c (mono_method_to_ir): Ditto.
9746         
9747         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
9748         add_sync_wrapper argument. Don't add a sync wrapper here.
9749         (mono_create_jump_trampoline): Don't add a sync wrapper here.
9750
9751         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
9752         
9753 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9754
9755         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
9756           of nonvolatile registers back from MonoContext to CONTEXT.
9757
9758         Contributed under MIT/X11 license.
9759
9760 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9761
9762         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
9763           arguments on Winx64 there are only 4 argument registers.  For this
9764           logic to work the last argument must be pulled from the stack.  
9765
9766         Contributed under MIT/X11 license.
9767
9768 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
9769
9770         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9771
9772         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
9773         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
9774         encode/decode_method_ref ().
9775
9776         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
9777
9778         * aot-runtime.c (decode_patch): Ditto.  
9779
9780         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
9781         MONO_PATCH_INFO_METHOD.
9782
9783         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
9784         MonoGenericJitInfo.
9785
9786         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
9787         MonoGenericJitInfo.
9788
9789         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
9790
9791         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
9792         one from the caller.
9793
9794         * aot-runtime.c (decode_generic_inst): New function to decode and
9795         return a interned generic inst.
9796         (decode_klass_ref): Use it.
9797         (decode_method_ref): Ditto.
9798
9799         * aot-compiler.c (emit_exception_debug_info): Save 
9800         jinfo->has_generic_jit_info too.
9801
9802 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9803
9804         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
9805
9806         * iltests.il.in: Add a test for fconv_to_i.
9807
9808         * liveness.c: Disable the liveness2 pass for now to save space.
9809
9810         * regalloc2.c: Include mempool-internals.h to fix warnings.
9811
9812         * aot-compiler.c (encode_method_ref): Encode the context of generic
9813         instance methods.
9814
9815         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9816         the context saved in the aot file.
9817
9818         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9819
9820         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9821
9822         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9823         volatile so they won't be optimized away.
9824
9825 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9826
9827         * ssa.c:
9828         * ssa2.c:
9829         * mini.c:
9830         * regalloc2.c:
9831         * dominators.c: Remove duplicated functions that now are in
9832         mempool-internals.h.
9833
9834 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * aot-compiler.c: Fix warnings.
9837
9838         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9839
9840         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9841
9842         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9843         as the patch type.
9844
9845         * mini.c (mono_resolve_patch_target): Ditto.
9846         
9847         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
9848         (encode_klass_ref): Add support for encoding VARs/MVARs.
9849
9850         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
9851
9852         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
9853         the handling of the got entries into a separate 'decode_got_entry' function.
9854         Add support for RGCTX_FETCH.
9855
9856         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
9857         clobbered by the trampoline code.
9858
9859         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
9860         not clobbered by the indirect calling code.
9861
9862 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9863
9864         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
9865         to fix the build.
9866
9867 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
9868
9869         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
9870         signature using the compilation mempool otherwise we would leak it.
9871
9872 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9873
9874         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
9875         mono_emit_abs_call ().
9876
9877         * patch-info.h: Add GENERIC_CLASS_INIT.
9878
9879         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
9880
9881         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
9882         as their target as a near call.
9883
9884         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
9885         ABS handling code.
9886         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
9887
9888         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
9889         call to a runtime function described by a patch.
9890
9891         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
9892         mono_emit_abs_call, this has the advantage that the ABS handling code in
9893         mono_codegen () can handle them both, and can handle other stuff in the
9894         future without additional code.
9895
9896         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
9897         entry.
9898         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
9899         abs addresses.
9900
9901         * mini.h: Add missing bblock related prototypes.
9902
9903         * mini.h (MonoCompile): Remove unused reverse_inst_list and
9904         reverse_inst_list_len fields.
9905
9906         * mini.c: Refactor this file a bit by moving branch optimizations to 
9907         branch-opts.c.
9908
9909         * method-to-ir.c: Merge generic sharing changes missed earlier.
9910
9911         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9912
9913         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9914         shared patches. Process METHODCONST as a shared patch.
9915
9916         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
9917         as it crashes on the 2.0 mscorlib.
9918
9919         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
9920         to cause crashes.
9921         
9922         * aot-compiler.c: Use is_plt_patch () in a few additional places.
9923         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
9924         by IMT.
9925
9926         * aot-compiler.c: Reorganize the got handling code to be a bit more
9927         understandable.
9928
9929 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
9932         mono_patch_info_equals/hash, and use it to massively simplify
9933         get_plt_index ().
9934
9935         * mini.c (mono_patch_info_hash): Simplify this and add support for
9936         more patch types.
9937
9938         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
9939
9940         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
9941         handling code, since an offset is not enough to identify a trampoline.
9942
9943         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
9944
9945 2008-08-17  Mark Probst  <mark.probst@gmail.com>
9946
9947         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
9948
9949         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
9950
9951         * mini-ops.h: Argument and result types for OVF_CARRY ops.
9952
9953         * decompose.c: PPC decompositions for various ops.
9954
9955         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
9956
9957 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
9958
9959         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
9960         call the generic trampoline code using a call, instead of a jump, to
9961         remove some special casing from the generic trampoline code.
9962
9963         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
9964         (mono_codegen): Ditto.
9965
9966         * aot-compiler.c aot-runtime.c: Ditto.
9967
9968         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
9969
9970         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
9971         helper function to find the offset corresponding to a lazy fetch trampoline.
9972
9973         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
9974         when doing generic sharing.
9975
9976         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
9977         places.
9978         
9979         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
9980         mini-trampolines.c to be with the other trampoline creation functions.
9981
9982         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
9983         as it is equal to method->signature in most cases, add a 
9984         mono_emit_method_call_full variant which takes a signature and an imt
9985         argument as well.
9986
9987 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
9988
9989         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
9990         to this function, since it could be computed easily from the method 
9991         argument.
9992         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
9993         more.
9994
9995         * method-to-ir.c mini.c: Remove references to 
9996         compile_generic_method_wo_context.
9997
9998         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
9999         generic method calls.
10000         
10001         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10002         dimensional non-szarrays.
10003
10004         * mini.c (mini_init): Register mono_array_new_1.
10005
10006         * jit-icalls.c (mono_array_new_1): New jit icall.
10007
10008         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10009         pointing to the method.
10010
10011         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10012         method addresses belonging to METHOD_JUMP patches in the 
10013         jump_target_got_slot_hash.
10014         (mono_aot_load_method): Ditto.
10015
10016         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10017         METHOD_JUMP patches.
10018
10019         * mini.c (mini_create_jit_domain_info): New helper function which 
10020         initializes/frees domain->runtime_info.
10021         (mini_free_jit_domain_info): Ditto.
10022         (mini_init): Install the domain hook functions with the runtime.
10023
10024         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10025         information maintained by the JIT.
10026
10027         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10028         insertion into jump_table_hash into mono_codegen (), also implement proper
10029         locking.
10030
10031         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10032         tail calls, it is already done by the aot code.
10033         
10034         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10035         mechanism on amd64.
10036
10037         * iltests.il.in: Make the jmp test a bit more complex.
10038
10039         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10040         generic instances which doesn't have a token.
10041
10042         * aot-runtime.c (decode_method_ref): Ditto.
10043         
10044         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10045         can handle this case now.
10046         (handle_box): Ditto.
10047
10048 2008-08-15  Geoff Norton  <gnorton@novell.com>
10049
10050         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10051         debugging check.
10052
10053 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10054
10055         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10056         calling generic methods.
10057
10058         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10059
10060         * aot-runtime.c (decode_patch_info): Ditto.
10061
10062         * mini.c (mono_resolve_patch_target): Ditto.
10063         
10064         * patch-info.h: Add METHOD_RGCTX.
10065
10066         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10067
10068 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10069
10070         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10071         arguments in registers.
10072
10073         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10074         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10075
10076         * mini.c (mini_method_compile): Abort aot compilation for generic
10077         methods if generic sharing is disabled.
10078         
10079         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10080         an mrgctx.
10081
10082         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10083         requiring an mrgctx.
10084
10085         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10086         store instructions when converting a vcall to a normal call.
10087
10088         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10089         mono_arch_find_jit_info.
10090
10091 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10092
10093         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10094         avoid calling mono_method_full_name () for every method even if the
10095         env var is not set.
10096         (check_inline_caller_method_name_limit): Ditto.
10097
10098 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10099
10100         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10101         assemblies in one run.
10102
10103         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10104         skipped methods if it is not 0.
10105
10106         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10107
10108 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10109
10110         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10111           MONO_ARCH_HAVE_UNWIND_TABLE.
10112
10113         Contributed under MIT/X11 license.
10114
10115 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10116
10117         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10118           from default optimizaton list on Winx64.
10119
10120         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10121
10122         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10123           the LMF from the MonoJitTlsData structure.
10124
10125         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10126
10127         Contributed under MIT/X11 license.
10128
10129 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * mini.c (sigsegv_signal_handler): Fix the build.
10132
10133         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10134         assembly->aot_module.
10135
10136         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10137         hash table. This simplifies and speeds up a lot of code, and fixes support
10138         for .netmodules.
10139
10140         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10141         with the runtime.
10142
10143         * mini-exceptions.c: Ditto.
10144         
10145         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10146         'native_offset' argument, since these are computed in the 
10147         mono_find_jit_info () function.
10148
10149         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10150         is used by exceptions-ppc.c.
10151
10152         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10153         mono_arch_find_jit_info ().
10154         
10155         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10156         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10157         generic code in mini-exceptions.c.
10158
10159 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10160
10161         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10162
10163         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10164         
10165         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10166         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10167         called while holding the loader lock. Fixes #415608.
10168         (mono_aot_get_method_from_token_inner): Ditto.
10169
10170 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10171
10172         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10173         to reduce differences between this and the generic implementation in
10174         mini-exceptions.c.
10175         (ves_icall_get_frame_info): Ditto.
10176
10177         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10178
10179         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10180         longer neccesarry.
10181
10182         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10183         mono_arch_get_call_filter () and make it non-static, for consistency with the
10184         other architectures.
10185
10186 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10187
10188         * mini.c:
10189         * local-propagation.c:
10190         * mini-x86.c: Correct the name of arch defines.
10191
10192 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10193
10194         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10195         NO_EMULATE_LONG_SHIFT_OPS define.
10196
10197 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10200         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10201
10202         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10203         MACH fixes. Merged from the 2.0 branch.
10204
10205         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10206
10207         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10208         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10209
10210         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10211
10212         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10213         mono_marshal_get_native_wrapper () signature changes.
10214
10215 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10216
10217         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10218         conversion bug under arm.
10219
10220 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10221
10222         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10223
10224         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10225         with overflow checking.
10226
10227 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10228
10229         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10230         to the genmdesc.pl file
10231
10232 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10233
10234         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10235         arg_array in the soft-float versions of the LOAD/STORE macros.
10236
10237         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10238         implementation.
10239
10240         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10241
10242 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10243
10244         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10245         a float HFA. Fixes #413621.
10246
10247 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10248
10249         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10250         frame_size to args_size. Fixes build.
10251
10252 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10253
10254         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10255         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10256
10257         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10258         the stack are not unaligned. Fixes #413247.
10259         
10260 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10261
10262         * mini.c: update jitted methods performance counters.
10263
10264 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10265
10266         * mini-exceptions.c: increase the exceptions thrown performance
10267         counter in mono_handle_exception ().
10268
10269 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10272         can work with netmodules.
10273
10274 2008-07-28  Geoff Norton  <gnorton@novell.com>
10275
10276         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10277         regression tests.
10278
10279 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10280
10281         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10282         correct place.
10283
10284 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10285
10286         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10287           The float param registers and other param registers must be the 
10288           same index on Windows x64.
10289
10290         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10291           ArgValuetypeAddrInIReg argument case.  Setting the argument
10292           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10293
10294         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10295           variable computed above as the copy length for arguments of storage
10296           type ArgValuetypeAddrInIReg.
10297
10298         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10299           ArgValuetypeAddrInIReg argument case.  This case will rely on
10300           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10301
10302         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10303           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10304           jump and tail call instructoins as they do not follow the typical call behavior.
10305
10306         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10307           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10308           local variable and pass the local variable by reference to the called method.
10309
10310         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10311           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10312           of a struct is passed in a register it must be saved with the other
10313           volatile argument on the stack.
10314
10315         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10316           frame pointer the stack adjustment value must be saved to the unwind 
10317           info structure.
10318
10319         Contributed under MIT/X11 license.
10320
10321 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10324         which got lost in the merge.
10325
10326 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10329         build.
10330
10331         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10332         
10333         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10334         icalls, since they won't be patched.
10335
10336         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10337         different code sequence when running under valgrind to prevent some valgrind
10338         errors.
10339
10340         * iltests.il.in: Add new regression test.
10341
10342         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10343         end with a throw.
10344
10345         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10346         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10347
10348         * iltests.il.in: Add new test.
10349
10350         * aot-compiler.c: Fix some warnings.
10351
10352         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10353         Fixes #412494.
10354
10355 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10356
10357         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10358         (mini_usage_jitdeveloper): Add a missing --wapi option.
10359
10360 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10361
10362         * mini-codegen.c: Simplify the is_fp macros.
10363         (free_up_ireg): Remove, use free_up_reg instead.
10364         (free_up_reg): Fix the fp case.
10365
10366 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10367
10368         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10369         lowered earlier.
10370
10371         * exceptions-x86.c: Merge some changes which seemed to have got lost
10372         in the linear-ir merge.
10373
10374         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10375
10376         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10377         long vreg volatile even if the variable was already created.
10378
10379         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10380         volatile variables.
10381
10382 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10383
10384         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10385
10386         * mini.c (mono_jit_compile_method_inner): Add support for 
10387         MONO_EXCEPTION_BAD_IMAGE.
10388
10389         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10390         mini_method_get_context () returns NULL. Fixes #356531.
10391
10392         * mini.c (mono_method_to_ir): Ditto.
10393         
10394         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10395         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10396
10397 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10400         in the LDFTN implementation.
10401
10402 2008-07-25  Mark Probst  <mark.probst@gmail.com>
10403
10404         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
10405         code, patch calls to icalls, too, even if they're not in the
10406         shared generic code hash.  Fixes #411962.
10407
10408 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10409
10410         * cpu-x86.md: Increase the length of the fcall opcodes.
10411
10412         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
10413         calls returning floats.
10414
10415         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
10416         on NEWARR.
10417         
10418         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
10419         missed earlier.
10420
10421         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10422         into the domain->method_code_hash.
10423
10424         * aot-compiler.c: Fix win32 build.
10425
10426         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10427         
10428         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10429         gshared NEWARR implementation.
10430
10431         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10432
10433         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10434         can be used outside of method_to_ir.
10435
10436         * mini.h (MonoCompile): Add arg_types field.
10437
10438         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10439         
10440         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10441         the values of the local arg_array and param_types array.
10442
10443 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10444
10445         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10446         got accesses might only get generated later when NEWOBJ is decomposed.
10447         
10448         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10449         looking up the native code of the target method when a delegate is called
10450         for the first time.
10451
10452         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10453         optimization.
10454
10455         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10456
10457         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10458         AOT work on platforms without a working dlsym implementation.
10459
10460         * mini.h: Bump AOT image format version.
10461         
10462 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10463
10464         * mini-exceptions.c: Free a MonoType with
10465         mono_metadata_free_type() instead of g_free().
10466
10467         * aot-runtime.c: Free a MonoType.
10468
10469 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10470
10471         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10472         optimization.
10473
10474         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10475         fp stack on x86.
10476
10477 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10478         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10479         profiler hook.
10480
10481 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10482
10483         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10484         NEWOBJ calls on valuetypes.
10485
10486         * iltests.il.in: Add new test.
10487
10488         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10489
10490 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10491
10492         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10493         is no longer needed.
10494
10495         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10496         non register sized integer arguments.
10497         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10498         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10499         emit_memcpy2 ().
10500
10501         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10502         CEE_MONO_RETOBJ.
10503         
10504         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10505         two a binop with different sized arguments is emitted.
10506
10507         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10508         instruction in the ins==NULL case.
10509
10510 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10511
10512         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10513
10514         * mini-x86.c: Fix osx build.
10515
10516         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10517         opcodes as well.
10518
10519         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10520         instruction for non int sized variables.
10521
10522         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10523         implementation.
10524
10525 2008-07-23  Robert Jordan  <robertj@gmx.net>
10526
10527         * method-to-ir.c: Fix MSVC build.
10528
10529 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10530
10531         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10532         a non int sized type, widen it to an int since newer versions of gcc seem to
10533         generate code which needs this.
10534
10535         * ssa2.c abcremoval2.c: Fix warnings.
10536
10537         * *: Merge the Linear IR branch.
10538
10539         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10540         the ChangeLog file there describes all the changes done over the years. 
10541         Further documentation can be found at www.mono-project.com/Linear_IL.
10542
10543 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10544
10545         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10546           The float param registers and other param registers must be the 
10547           same index on Windows x64.
10548
10549         Contributed under MIT/X11 license.
10550
10551 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10552
10553         * mini.c: Make the previous fix GC safe.
10554
10555 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10556
10557         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10558
10559 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10560
10561         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10562           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10563           ArgValuetypeAddrInIReg instead.
10564
10565         Contributed under MIT/X11 license.
10566
10567 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10568
10569         * mini-codegen.c (get_register_spilling): Fix a warning.
10570
10571 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10572
10573         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10574         for types which the initialization fails. Raises the provided exception
10575         at the right stop after cleanup.
10576
10577 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * aot-compiler.c: Free most of the memory allocated during compilation.
10580
10581         * mini.c (mini_parse_debug_options): Fix a leak.
10582         
10583         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10584         during aot compilation.
10585
10586 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10587
10588         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10589         it has too much register pressure.
10590
10591 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10592
10593         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10594
10595 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10596
10597         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10598         on x86.
10599
10600         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10601         on amd64 similar to the way it is done on arm.
10602
10603         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10604
10605         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
10606         consistency, normalize error messages, avoid loading aot-only modules in
10607         normal mode.
10608
10609         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
10610         for consistency.
10611
10612         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
10613
10614 2008-07-11  Martin Baulig  <martin@ximian.com>
10615
10616         * debug-debugger.h
10617         (MonoDebuggerInfo): Add `interruption_request'.
10618
10619 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10620
10621         * aot-compiler.c (emit_plt): Remove some dead code.
10622
10623         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
10624
10625         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
10626         return the plt info offset belonging to a given plt entry.
10627
10628         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
10629         mono_aot_get_plt_info_offset.
10630         
10631         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
10632         similar to the amd64 code by makeing jumps through a separate jump table 
10633         instead of embedding the jump addresses into the code.
10634
10635 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
10636
10637         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
10638         method.
10639
10640 2008-07-10  Martin Baulig  <martin@ximian.com>
10641
10642         * mini.c (mini_method_compile): Disable generics sharing when
10643         running in the debugger.
10644
10645 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10646
10647         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10648
10649         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10650         the local register allocator from running out of registers on x86 when 
10651         using aot.
10652
10653 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10654
10655         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10656         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10657         C4146.
10658
10659         Contributed under MIT/X11 license.
10660
10661 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10662
10663         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10664         speed up the assembler.
10665
10666 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10669         support.
10670
10671         * mini.c: Move the soft float handling macros a bit earlier, add 
10672         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10673         place.
10674
10675         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10676
10677         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10678         read-only to help catch code allocation requests.
10679         
10680         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10681         and turn it off when using --aot-only or when compiling with --aot=full.
10682
10683         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10684         jump table for switches from the normal domain mempool, not the code
10685         manager.
10686
10687         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10688         unbox trampoline which handles aot-only mode too.
10689
10690         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10691         an AOTed unbox trampoline.
10692
10693         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10694
10695 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10696
10697         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10698         ""
10699
10700         Contributed under MIT/X11 license.
10701
10702 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10703
10704         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10705           the unwind information for the method at the end of the allocated block.
10706           
10707         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10708           MonoCompileArch to hold the unwind info for SEH on Winx64
10709         
10710         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10711           frame pointer info for the method being compiled.
10712           
10713         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
10714           the call to mono_exception_from_token.
10715           
10716         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
10717           storing the method prolog information in a format that the Winx64 SEH can understand.  This
10718           information is stored a the end of the method block because it is all 32-bit offset based.
10719
10720         Contributed under MIT/X11 license.
10721
10722 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
10725
10726         * wapihandles.c: Fix warnings.
10727
10728         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
10729         mode.
10730
10731         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
10732         mono_jit_compile_method in aot-only mode since that calls the type 
10733         initializer.
10734         
10735         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
10736         get_delegate_invoke_impl in aot-only mode.
10737
10738         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
10739
10740 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
10741
10742         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
10743
10744         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
10745         is on by default.
10746
10747         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
10748
10749         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
10750         init trampoline from the AOT file as well.
10751
10752         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
10753         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
10754         code.
10755
10756         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
10757         mono_init.
10758
10759         * exceptions-amd64.c: Add _full variants for the remaining exception code
10760         creation functions as well, allow emission of relocatable code, remove
10761         caching since that is now done by the caller.
10762
10763         * mini-exceptions.c: Add _full variants for the remaining exception code
10764         creation functions as well, add aot-only support.
10765
10766         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
10767         if we can determine a proper token for them.
10768         (add_wrappers): Add a few more wrappers.
10769         (emit_method_code): Remove some dead code.
10770         (emit_trampolines): Emit exception code too.
10771
10772         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
10773
10774         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
10775         mono_array_new_va which avoids varargs.
10776
10777         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
10778
10779         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
10780         mono_arch_create_specific_trampoline () in all places.
10781
10782         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
10783         a bit so it can be used for other things as well.
10784         
10785         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
10786         on demand as well.
10787
10788         * exceptions-amd64.c: Rename the caching from the exception code creation
10789         functions, it is done by the caller instead.
10790         
10791         * exceptions-amd64.c: Change the signature of the exception code creation 
10792         functions to allow the creation of relocatable code later.
10793
10794         * mini-exceptions.c: Add a set of functions to query the various 
10795         runtime-generated exception functions.
10796
10797         * mini.c mini-exceptions.c: Use the newly added functions instead of the
10798         mono_arch_.. () functions.
10799         
10800 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
10803
10804         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
10805
10806         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
10807         (mini_get_vtable_trampoline): Ditto.
10808
10809         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10810         code in the AOT case by returning the code size and a list of relocations to
10811         the caller.
10812
10813         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10814
10815 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10816
10817         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10818           clean the stack.
10819
10820         Contributed under MIT/X11 license.
10821
10822 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10823
10824         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10825         so the buffer size can be computed correctly. Fixes #404735.
10826
10827         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10828         normally as cfg->debug_info is already freed.
10829
10830 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10831
10832         * mini-amd64.c: For calls returning vtypes in registers, don't store
10833         the return address on the stack, instead allocate a separate local for
10834         it. Fixes #404729.
10835
10836 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10837
10838         * mini-trampolines.c, mini.h: Add an argument to
10839         mono_create_jit_trampoline_in_domain() for turning off the adding
10840         of the sync wrapper.
10841
10842         * mini.c: Use the JIT trampoline without sync instead of
10843         ldftn_nosync in static RGCTX invoke wrappers so that the call can
10844         be patched.
10845
10846 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10847
10848         * driver.c: Turn on GSHARED optimization by default.
10849
10850 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
10851
10852         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
10853         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
10854
10855         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
10856         create a variant of the generic trampoline code callable from AOTed trampolines.
10857
10858         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
10859         trampoline code callable from AOTed trampolines.
10860
10861         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
10862
10863 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10864
10865         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
10866         pass-through manner.
10867
10868         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
10869         and don't fail sharing for them anymore.
10870
10871         * mini-exceptions.c: Handle exceptions in shared generic methods.
10872
10873         * generic-sharing.c: When checking the context of a generic
10874         method, also check its class's context.  Don't treat wrappers as
10875         sharable.
10876
10877         * mini-trampolines.c: Some code factored out to
10878         metadata/generic-sharing.c.  Handle the MRGCTX case.
10879
10880         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
10881         we must deal with the method being of another instantiation of the
10882         class.  Add static rgctx invoke wrappers to generic methods.
10883
10884 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10885
10886         * mini.c: Provide all jit infos of generic shared methods with a
10887         generic jit info.
10888
10889         * mini-exceptions.c: Handle the new situation that a generic info
10890         might be available, but not info about the this/vtable/mrgctx
10891         variable.
10892
10893 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10894
10895         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
10896         generic methods.
10897
10898 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
10899
10900         * dominators.c (check_dominance_frontier): Fix a warning.
10901
10902         * mini.h: Add some missing prototypes.
10903
10904         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
10905
10906         * driver.c (mono_jit_init_version): Correct the comments since the first
10907         argument should be the name of the root domain, not a filename.
10908
10909         * aot-runtime.c (make_writable): Error out if this is called while running
10910         with --aot-only.
10911         (load_aot_module): Ditto.
10912
10913         * aot-compiler.c: Really fix the computation of method indexes.
10914
10915         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
10916         optimizations as this is no longer called frequently.
10917
10918         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
10919         method and the invoke impl code and pass it to the delegate trampoline instead of
10920         just the delegate class.
10921
10922 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
10923
10924         * aot-compiler.c: Fixup the computation of method indexes.
10925         (add_wrappers): Create the base methods of the runtime invoke wrappers using
10926         the method builder infrastructure.
10927
10928         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
10929         has no header.
10930
10931         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
10932         mode, load the method right away instead of creating a trampoline.
10933
10934         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
10935
10936         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
10937         some checks a bit.
10938
10939 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
10940
10941         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
10942         (mono_aot_load_method): Use method_index instead of method->token.
10943
10944         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
10945         can handle icalls etc. properly.
10946
10947         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10948
10949         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
10950
10951         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
10952         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
10953         JIT_ICALL_ADDR patch type.
10954
10955         * patch-info.h: Add JIT_ICALL_ADDR patch type.
10956
10957         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
10958         request flag.
10959         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
10960
10961         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
10962
10963 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * mini.c: Use domain->jit_code_hash_lock for controlling access to
10966         domain->jit_code_hash.
10967
10968 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
10969
10970         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
10971
10972 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
10973
10974         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
10975         get_this_arg_from_call, let it compute it when needed.
10976
10977         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
10978         gsctx from code only when needed.
10979
10980         * mini-trampolines.c (get_generic_context): Rename this to 
10981         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
10982         it can be called by the arch backends.
10983
10984         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
10985
10986 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
10987
10988         * driver.c (mono_main): Add experimental --aot-only command line option.
10989
10990         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
10991         set.
10992
10993 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
10994
10995         * driver.c (DllMain): Remove mono_module_handle.
10996
10997         Contributed under MIT/X11 license.
10998
10999 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11000
11001         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11002         for emitting methods which are not in the source assembly. Detect and report
11003         failure of assembling+linking.
11004         
11005         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11006
11007         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11008
11009 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11010
11011         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11012
11013 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11014
11015         * mini.h: Remove some obsolete prototypes.
11016
11017         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11018
11019 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11020
11021         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11022         supported by Visual Studio, so use alloca().
11023
11024 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11025
11026         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11027         Fixes #402585.
11028
11029 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11030
11031         * mini.c: Fail sharing of a generic method if it contains an open
11032         catch clause (because we don't pass MRGCTXs yet).
11033
11034 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11035
11036         * mini.c: When compiling a method with generic sharing, insert the
11037         method instantiated with an all-Object generic context into the
11038         jit info table, instead of the context of the first instantiation
11039         of the method we happen to compile.
11040
11041 2008-06-18  Martin Baulig  <martin@ximian.com>
11042
11043         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11044         `major_version' and `minor_version'.
11045
11046 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11047
11048         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11049         mono_method_is_generic_sharable_impl() takes an additional
11050         argument specifying whether to treat type variables as reference
11051         types.
11052
11053 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11054
11055         * mini.h: Removed obsolete prototypes.
11056
11057 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11058
11059         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11060         already handle them.
11061
11062 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11063
11064         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11065         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11066         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11067         tramp-x86.c: Added a MonoGenericContext* argument to
11068         mono_arch_get_unbox_trampoline() so that it can call other
11069         functions which require it.
11070
11071 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11072
11073         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11074         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11075         mono_arch_get_this_arg_from_call() takes a
11076         MonoGenericSharingContext* as well.
11077
11078 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11079
11080         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11081         implement generic sharing of unbox.
11082
11083 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11084
11085         * mini.c: Don't compute the vtable to determine whether a field is
11086         special static, because it might not work for open types.
11087
11088 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11089
11090         * mini.c: Removed the unused token_type and token_source arguments
11091         from get_runtime_generic_context_ptr().
11092
11093 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11094
11095         * mini.c (ADD_BINOP): fix the build
11096
11097 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11098
11099         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11100         a widening op.
11101
11102 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11103
11104         * mini.h: Removed class relations enum that's not used anymore.
11105
11106 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11107
11108         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11109
11110         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11111         the lazy fetch trampoline access code.
11112
11113 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11114
11115         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11116
11117 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11120
11121         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11122
11123         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11124
11125 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11128         intrinsics.
11129
11130         * mini-ops.h: Add MIN/MAX_UN opcodes.
11131
11132         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11133         intrinsics.
11134
11135         * basic-math.cs: Add more min/max tests.
11136
11137         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11138
11139 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11140
11141         * mini.c: Small fix in the prologue of emit_castclass.
11142
11143 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11144
11145         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11146
11147         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11148         do not work even for unsigned types. Fixes #400014.
11149
11150         * basic-math.cs: Add regression tests for unsigned Min/Max.
11151
11152 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11153
11154         * mini.c: Added additional context_used argument to several
11155         functions, which will be needed for sharing generic methods.  Use
11156         GET_RGCTX macro wherever appropriate.  Declare only one
11157         context_used in mono_method_to_ir().
11158
11159 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11160
11161         * mini.c, generic-sharing.c: Removed generic class relations.
11162
11163         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11164         functions due to MRGCTX changes.
11165
11166 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11167
11168         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11169         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11170         with calculated IMT.
11171
11172         * mini.c: Generic sharing of calls via generic interfaces.
11173
11174         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11175         generic method with non-constant MonoGenericContext*.  Instead,
11176         the context is taken out of the method itself.
11177
11178 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11179
11180         * mini.c: Generic sharing of ldvirtftn.
11181
11182 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11183
11184         * mini.c: Generic sharing of ldftn.
11185
11186 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11187
11188         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11189
11190 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11191
11192         * mini.c: Generic sharing of the special case of ldtoken followed
11193         by a call to GetTypeFromHandle.
11194
11195 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11196
11197         * mini.c: Generic sharing of box for nullable types.
11198
11199 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11202         are passed on the stack. Fixes #324807.
11203
11204 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11205
11206         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11207         for the ArgValuetypeAddrInIReg case.
11208
11209         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11210         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11211
11212         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11213         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11214         local variable and pass the local variable by reference to the called method.
11215           
11216         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11217         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11218
11219         Contributed under MIT/X11 license.
11220
11221 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11222
11223         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11224
11225         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11226         everything.
11227
11228 2008-06-10  Martin Baulig  <martin@ximian.com>
11229
11230         * debug-mini.c
11231         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11232
11233 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11234
11235         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11236         possible error when no arguments are passed.
11237
11238         Contributed under MIT/X11 license.
11239
11240 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11241
11242         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11243         where the file name is NULL.
11244
11245 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11246
11247         * mini.c: Fix s390 build.
11248
11249 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11250
11251         * trace.c (mono_trace_parse_options): Fix warnings.
11252
11253         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11254
11255 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11256
11257         * mini.c (remove_block_if_useless): Avoid printing the method name.
11258         
11259         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11260         MONO_INST_NEW.
11261
11262         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11263         LMF. Not yet used.
11264
11265         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11266         translated code after it has been patched.
11267
11268 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11269
11270         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11271         avoid problems during code patching on SMP systems.
11272         (emit_call): Avoid adding a patch info which is already added by 
11273         emit_call_body.
11274         (mono_arch_emit_exceptions): Ditto.
11275
11276 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11277
11278         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11279         MONO_TYPE_ISSTRUCT already checks for it.
11280
11281 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11282
11283         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11284           structs with floats on Winx64 the float registers are not used.  
11285           The integer registers are always used..
11286         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11287           only one register will be used and only if the size of the struct 
11288           is 1,2,4, or 8 bytes.
11289
11290         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11291           to work for Winx64.
11292
11293         Contributed under MIT/X11 license.
11294
11295 2008-06-05  Martin Baulig  <martin@ximian.com>
11296
11297         * debug-debugger.c (debugger_lookup_class): Also call
11298         mono_class_setup_methods() here; we're only called from RTI.
11299
11300 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11301
11302         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11303         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11304         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11305         Post-process object files and add dtrace-generated object, if necessary.
11306
11307         Contributed under MIT/X11 license.
11308
11309 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11310
11311         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11312         element class.
11313
11314         * mini.c: Generic sharing for unbox.any and castclass.
11315
11316 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11317
11318         * mini.c: Ignore tailcall prefix in shared generic code and when
11319         doing calls which require a vtable/rgctx argument.
11320
11321 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11322
11323         * mini.c: Don't free the JIT info.
11324
11325         * driver.c: Changes in the JIT info table testing code.
11326
11327 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11328
11329         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11330         interruption. Fix some warnings.
11331
11332         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11333         interruption_checkpoint.
11334
11335 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11336
11337         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11338         from embedding applications.
11339
11340 2008-06-02  William Holmes  <billholmes54@gmail.com>
11341
11342         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11343           reserving 32 bytes on the stack when making calls. 
11344
11345         Contributed under MIT/X11 license.
11346
11347 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11348
11349         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11350         the linear IL branch.
11351
11352         * driver.c: Print out more information for --version on arm.
11353
11354 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11355
11356         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11357         bb_exit instead, since out of line bblocks might not actually be emitted
11358         out-of-line.
11359         
11360         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11361         maximum epilog size for out of line bblocks if tracing is enabled.
11362
11363         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11364
11365 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11366
11367         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11368
11369 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11372         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11373         opcodes.
11374
11375 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11376
11377         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11378         the 'value' to store is a constant.
11379
11380         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11381
11382         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11383         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11384
11385 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11386
11387         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11388         for accessing method->generic_container.
11389
11390 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11391
11392         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11393         
11394         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11395
11396         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11397
11398         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11399         fails.
11400
11401 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
11404
11405         * mini.c: Handle the case when mono_class_vtable () fails.
11406
11407 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11408         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
11409         the stat profiler.
11410
11411 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11412
11413         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
11414         together with domain sharing.
11415
11416 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11417
11418         * mini.c: Treat callvirts to final methods like non-virtual calls
11419         when doing generic sharing, i.e. look them up in the runtime
11420         generic context.
11421
11422 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11423
11424         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11425         with computed types (for generic sharing).
11426
11427         * mini.c: Generic sharing for mkrefany and refanyval.
11428
11429 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11430
11431         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11432         possible.
11433
11434         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11435         the generic sharing code.
11436         
11437         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11438         when needed.
11439
11440 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11441
11442         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11443
11444 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11445
11446         * driver.c: updated copyright date
11447
11448 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11449
11450         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11451         needed.
11452
11453 2008-05-19  Martin Baulig  <martin@ximian.com>
11454
11455         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11456         pointing to the new `_mono_debug_using_mono_debugger' variable.
11457
11458         * driver.c
11459         (mono_main): Check mono_debug_using_mono_debugger() rather than
11460         the `MONO_INSIDE_MDB' environment variable to check whether we're
11461         inside the debugger.
11462
11463 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11464
11465         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11466         argument.
11467
11468 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11469
11470         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11471
11472         * mini.c: Added mini_assembly_can_skip_verification. This
11473         function checks if the assembly requested to skip verification. 
11474         Fixes part of #387274.
11475
11476 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11477
11478         * mini.c (mini_get_method): Disable the check for open generic classes when
11479         using generic sharing.
11480
11481         * generics.cs: Add a test for #387034.
11482
11483         * mini.c (mini_get_method): Check whenever the method class is an open generic
11484         type, and return NULL in that case, causing a verification error. Fixes
11485         #384123.
11486
11487 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11488
11489         * driver.c (mono_main): Revert r102623. The right
11490         thing to do is to enable the verifier under verifiable
11491         unless a --security flag was passed.
11492
11493         We need this non-trivial behavior for --verify-all otherwise
11494         mcs-compileall won't be able to use it. As it needs everything to
11495         be verified under validil.
11496
11497 2008-05-06  Martin Baulig  <martin@ximian.com>
11498
11499         Fix #383749.
11500
11501         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11502         (mono_debugger_thread_cleanup): Likewise.
11503         (mono_debugger_extended_notification): Likewise.
11504
11505 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11506
11507         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11508         against both inflated and non-inflated methods. We need to check against the
11509         generic definition for cases where the instantiated method is not visible.
11510         We need to check against the inflated types for cases where the instantiation
11511         changes any super type. This fixes #382986.
11512
11513         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11514         that check for visibiliy as generic params only appears as the type subject
11515         of tokens on call opcodes. Field manipulation and ldftn must always
11516         target an exact type.
11517
11518 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11519
11520         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11521         if no related --security flag is passed.
11522
11523 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11524
11525         * mini-arch.h: Prepare support for ppc64.
11526
11527         Contributed under MIT/X11 license.
11528
11529 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11530
11531         * aot-runtime.c: Prepare support for ppc64.
11532
11533         Contributed under MIT/X11 license.
11534
11535 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11536
11537         * mini-ops.h: Prepare support for ppc64.
11538
11539         Contributed under MIT/X11 license.
11540
11541 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11542
11543         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11544
11545         Contributed under MIT/X11 license.
11546
11547 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11548
11549         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11550         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11551         assemblies on windows.
11552
11553 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11554
11555         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11556         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11557         * main.c: Use UTF-8 encoded command line instead of Windows default code
11558         page on Windows to support Unicode.
11559         * driver.c (DllMain): New function for mixed-mode assembly support.
11560         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11561         export __stdcall functions without decoration.
11562
11563         Contributed under MIT/X11 license.
11564
11565 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11566
11567         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11568         saving it very early.
11569
11570 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11571
11572         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11573         deleted.  The only way to access the new RGCTX is via the
11574         trampline.
11575
11576         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11577         vtable instead of the RGCTX to static methods.
11578
11579         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11580         accessing the new RGCTX.
11581
11582         * generic-sharing.c: There is no separation between self, type
11583         arguments and other types in the RGCTX anymore.
11584
11585 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11586
11587         * mini-amd64.c (add_general): Remove previous stack adjustment.
11588         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11589         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11590         for 32 bytes of stack space reserved for all calls.
11591         
11592         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11593         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11594         adjustment.
11595         
11596         Code contributed under MIT/X11 license.
11597
11598 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
11599
11600         * mini.c (mini_method_verify): Only verify non-inflated methods, check
11601         against the root definition, peeling out method and type instantiations.
11602         Cache verify success results, code that fails verification is still
11603         checked multiple times.
11604
11605 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
11606
11607         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
11608
11609 2008-04-23  Jonathan Chambers <joncham@gmail.com>
11610
11611         * mini-amd64.c (add_general): Always increment stack on Win64.
11612         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
11613         on Win64.
11614         
11615         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
11616         stack based argument handling on Win64.
11617         
11618         Code contributed under MIT/X11 license.
11619
11620 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
11621
11622         * Makefile.am (version.h): Add support for git-svn.
11623
11624 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
11625
11626         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
11627         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
11628         avoiding allocations and libc functions which might deadlock.
11629         
11630         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
11631         'no-gdb-backtrace' option is set.
11632
11633         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
11634
11635         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
11636
11637 2008-04-21  Martin Baulig  <martin@ximian.com>
11638
11639         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
11640         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11641
11642 2008-04-21  Martin Baulig  <martin@ximian.com>
11643
11644         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11645         `thread_vtable', `event_handler_ptr' and `event_handler'.
11646
11647 2008-04-21  Martin Baulig  <martin@ximian.com>
11648
11649         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11650         allows delayed initialization of the `executable_code_buffer' when
11651         attaching.
11652
11653 2008-04-21  Martin Baulig  <martin@ximian.com>
11654
11655         * mini.h (mono_debugger_create_notification_function): Removed.
11656         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11657
11658         * mdb-debug-info64.s
11659         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11660
11661         * mdb-debug-info32.s
11662         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11663
11664         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11665         currently only works on x86 and x86_64, so don't create it on ppc.
11666
11667 2008-04-21  Martin Baulig  <martin@ximian.com>
11668
11669         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11670
11671         * mini.c
11672         (mini_method_compile): In the fp elimination check, check
11673         `debug_options.mdb_optimizations' in addition to
11674         mono_debug_using_mono_debugger().       
11675
11676         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11677         disable some JIT optimizations which are only disabled when
11678         running inside the debugger.
11679         Added `--help-debug' option to describe the debugging options.
11680         (parse_debug_options): New static function to parse the `--debug'
11681         options, so we can easily add more stuff in future.
11682
11683 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11684
11685         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11686         the method has no body.
11687
11688 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11689
11690         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11691         assembly is not allowed in MSVC 64-bit compiler. 
11692         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11693         as we get floating point exceptions everywhere.
11694         
11695         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11696         correctly align arguments for call to throw_exception.
11697         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11698         
11699         Code contributed under MIT/X11 license.
11700
11701 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11702
11703         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11704
11705 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11706
11707         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11708
11709         * mini-amd64.c (NEW_INS): Set cil_code.
11710
11711         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11712         from mini-amd64.c so all debugger related logic is in one place.
11713
11714         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
11715         later won't have a random ip assigned to them.
11716
11717 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
11718
11719         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
11720         the arch specific function initializes code_size.
11721         (mono_create_delegate_trampoline): Ditto.
11722
11723         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
11724         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
11725         platforms.
11726
11727         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
11728         running under the debugger.
11729
11730         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
11731         debugger.
11732
11733         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
11734         debugger. Also move the disabling of optimizations here from driver.c.
11735         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
11736         debugger.
11737
11738         * mini.h (MonoCompile): Add a few new flags.
11739
11740 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
11741
11742         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
11743         so the cil_code field of created MonoInst's is properly set.
11744         (mini_select_instructions): Ditto.
11745
11746         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
11747         (MONO_INST_NEW_CALL): Ditto.
11748
11749         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
11750         in many places so the ins->cil_code field is properly initialized.
11751
11752         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
11753         place.
11754
11755 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
11756
11757         * mini.c (mini_method_compile): Print a different message when compiling a 
11758         shared method.
11759         
11760         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
11761         > 1.
11762
11763 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11764
11765         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
11766         SSE2 instructions.
11767
11768         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
11769         
11770 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11771
11772         * mini.c (handle_stack_args): Make this return void since its return value was
11773         never used. Also set cfg->unverifiable for invalid IL instead of calling
11774         G_BREAKPOINT ().
11775
11776 2008-04-10  Mark Probst  <mark.probst@gmail.com>
11777
11778         * mini.c: Make sure "this" is live in catch clauses with type
11779         variables in shared generic code.
11780
11781 2008-04-08  Mark Probst  <mark.probst@gmail.com>
11782
11783         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
11784         generic_class_is_reference_type() to ensure the proper behaviour
11785         when sharing generic code and the type in question is a type
11786         argument.
11787
11788 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11789
11790         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
11791         race conditions when printing thread dumps. Fixes #377738.
11792
11793 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
11794         
11795         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
11796         shows up when both MonoInst arguments can cause aliasig.
11797         There is likely no way in the current JIT to trigger this problem, but
11798         it showed up in the development of generics sharing, when in a new
11799         opcode both args of an OP_GROUP can be aliases (addresses of a local).
11800         When the generics sharing code will be committed, its tests will be
11801         valid also for this bug.
11802
11803 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11804
11805         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
11806         PATCH_INFO_METHOD.
11807
11808         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11809         NULL.
11810
11811 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11812
11813         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11814         use a more detailed exception message for InvalidCastException.
11815
11816         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11817
11818         * driver.c (mono_main): Add --debug=casts option to turn on better 
11819         InvalidCastException message details.
11820
11821         * mini.c (mini_get_debug_options): New helper function to return the address of
11822         the debug_options variable.
11823
11824         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11825         the jit_tls TLS variable.
11826
11827         * mini.c (mono_jit_tls): New TLS variable.
11828
11829         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11830         option is used.
11831
11832 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11833
11834         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11835
11836         * mini.c: Removed verifer related stuff, code moved to verify.c.
11837
11838         * driver.c: Using code from verify.c instead of mini.c.
11839
11840 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11841
11842         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11843         longer valid.
11844
11845 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
11846
11847         * mini.c (check_for_method_verify): Enabling verification of
11848         corlib if mono_verify_all is set. Bugs in the verifier preventing that
11849         have been fixed.
11850
11851 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
11852
11853         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
11854         caller saved registers as well.
11855         
11856         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
11857         saved registers as well.
11858
11859 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
11860
11861         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
11862
11863         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
11864         code.
11865
11866 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
11867
11868         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
11869         to get_call_info.
11870         (get_call_info): Take a gsctx argument instead of 'cfg'.
11871
11872 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
11873
11874         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
11875         mono_verify_all is set.
11876
11877         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
11878
11879         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
11880
11881 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
11882
11883         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
11884         an exception.
11885
11886         * driver.c mini.c mini.h: Add a --verify-all development option to test the
11887         verifier and the code generated by the compiler.
11888
11889 2008-03-25  Mark Probst  <mark.probst@gmail.com>
11890
11891         * mini.c: Generic sharing of the non-nullable case of the box
11892         instruction.
11893
11894 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
11895
11896         * inssel.brg: Fix the build.
11897
11898         * iltests.il.in: Add a test for lconv.ovf.u8.un.
11899
11900 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
11901
11902         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
11903         Array:Address. Fixes #372410.
11904
11905         * iltests.il.in: New tests for readonly prefix.
11906
11907 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
11908
11909         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
11910         mini-trampolines.c.
11911
11912         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11913         mini-exceptions.c.
11914
11915         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
11916         
11917         * mini.c (mono_decompose_op_imm): New helper function.
11918
11919         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
11920         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11921         return value.
11922
11923         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11924         mono_arch_output_basic_block. Fix warnings.
11925
11926         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
11927         for now.
11928
11929 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
11930
11931         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
11932         since the extra frame is now detected automatically inside the loop.
11933
11934         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
11935         opts which are now in mono_peephole_ins ().
11936         
11937         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
11938
11939         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
11940         frames and skip duplicate managed-to-native frames. Fixes #367665.
11941
11942         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11943         opts which are now in mono_peephole_ins ().
11944         (mono_arch_peephole_pass_2): Ditto.
11945
11946         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
11947
11948         * mini-codegen.c (mono_peephole_ins): New helper function containing the
11949         arch independent peephole optimizations.
11950
11951         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
11952         opts which are now in mono_peephole_ins ().
11953
11954         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
11955         
11956         * mini-s390.c (mono_arch_output_basic_block): Fix build.
11957
11958         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
11959         pattern.
11960
11961         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
11962         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
11963         opcode. 
11964
11965 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
11966
11967         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
11968         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
11969         return value.
11970
11971         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
11972         mono_arch_output_basic_block. Fix warnings.
11973
11974 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11975
11976         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11977         conv.ovf.u.un.
11978
11979 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11980
11981         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
11982         conv.ovf.u.un.
11983
11984         * iltests.il: Add new tests.
11985
11986 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
11987
11988         * mini.c: Removed Windows version macros.
11989
11990 2008-03-20  Mark Probst  <mark.probst@gmail.com>
11991
11992         * generic-sharing.c: Put reflection types in the extensible part
11993         of the runtime generic context.
11994
11995         * mini.c: Generic sharing of the GetTypeHandle special case of the
11996         ldtoken instruction.
11997
11998 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
11999
12000         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12001
12002         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12003         
12004         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12005         consistency with the other version on the linear IR branch.
12006
12007         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12008
12009         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12010
12011         * iltests.il.in: Add new tests.
12012
12013 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12014
12015         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12016
12017         * iltests.il.in: Add new tests.
12018
12019 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12020
12021         * mini.c: Two variables with the same name were declared in
12022         nesting contexts and one wasn't initialized.  Fixed.
12023
12024 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12025
12026         * mini.c: Generic sharing of the initobj instruction.
12027
12028 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12029
12030         * mini.c: make the test to optimize ldtoken from typeof() more
12031         precise.
12032
12033 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12034
12035         * mini.c: Generic sharing of the initobj instruction for reference
12036         types.
12037
12038 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12039
12040         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12041         the mono_breakpoint_clean_code() code to perform bound checks.
12042
12043 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12044
12045         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12046         mono_arch_patch_callsite() to include the start of the managed method
12047         to be able to perform bound checks.
12048
12049 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12050
12051         * mini.c: Generic sharing for the isinst instruction.
12052
12053 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12054
12055         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12056         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12057         with the runtime generic context argument.
12058
12059         * mini.c: Share calls to several types of unsharable methods by
12060         putting the address of the method code in the runtime generic
12061         context and doing an indirect call.
12062
12063         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12064         to switches.
12065
12066 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12067
12068         * generic-sharing.c: Change due to a change in the runtime genric
12069         context API.
12070
12071 2008-03-15  Martin Baulig  <martin@ximian.com>
12072
12073         * tramp-x86.c
12074         (mono_arch_nullify_class_init_trampoline): Add call to
12075         mono_breakpoint_clean_code() to make things work when running
12076         inside the debugger.
12077
12078         * tramp-amd64.c
12079         (mono_arch_nullify_class_init_trampoline): Add call to
12080         mono_breakpoint_clean_code() to make things work when running
12081         inside the debugger.
12082
12083 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * inssel-long.brg (reg): Fix 64 bit build.
12086
12087 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12088
12089         * mini.c, mini.h: Share static generic code by passing it an
12090         implicit argument pointing to the runtime generic context.
12091
12092         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12093         inssel-long32-mips.brg: New opcodes for calling shared static,
12094         which need to be passed the runtime generic context.
12095
12096         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12097         argument on the stack in the prologue if needed.  New function for
12098         finding the runtime generic context argument from the registers
12099         saved by the trampoline.
12100
12101         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12102         runtime generic context argument.
12103
12104         * tramp-amd64.c: Also restore the register used for the runtime
12105         generic context argument.
12106
12107         * mini-trampoline.c: Resolve shared static calls by consulting the
12108         runtime generic context via the new argument.
12109
12110         * generic-sharing.c: Add an argument to sharability-checking
12111         functions that specifies whether type variables should be treated
12112         as sharable type arguments.
12113
12114         * inssel-x86.brg: Removed a superfluous, buggy rule.
12115
12116         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12117         to switches.
12118
12119 2008-03-14  Martin Baulig  <martin@ximian.com>
12120
12121         * debug-debugger.c (main_thread_handler): Call
12122         mono_runtime_run_main() without sending any notifications.
12123
12124         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12125
12126 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12127
12128         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12129
12130 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12131
12132         * tramp-x86.c: Fixed register restore offsets in the trampoline
12133         code for ECX and EDX.
12134
12135 2008-03-12  Geoff Norton  <gnorton@novell.com>
12136
12137         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12138         different ucontext_t implementations.
12139         * exceptions-arm.c: Use the above defines to get exceptions working on 
12140         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12141         * mini-arm.c: Implement iPhone icache support (based on a patch by
12142         Luke Howard lukeh@padl.com)
12143
12144 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12145
12146         * mini.c: Enable generic sharing of calls to non-static
12147         non-interface non-generic non-value-type methods.
12148
12149         * mini-trampolines.c: Resolve calls from shared generic code.
12150
12151 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12152
12153         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12154
12155         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12156
12157 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12158
12159         * mini.c: some fixes for the AOT compiler.
12160
12161 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12162
12163         * cpu-amd64.md: Add clob:1 to some float opcodes.
12164
12165 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12166
12167         * mini.h: Added MiniVerifierMode enumeration.
12168
12169         * mini.c: Added mini_verifier_set_mode to control
12170         the usage of the new verifier.
12171
12172         * mini.c (mono_method): Integrated the new verifier.
12173
12174         * driver.c: Extended --security option with validil and
12175         verifiable options to activate the new verifier.
12176
12177 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12178
12179         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12180         optimization to ctors taking 0 or 2 arguments too.
12181
12182         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12183         a bit.
12184
12185         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12186
12187         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12188
12189 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12190
12191         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12192         non-aot case as well.
12193
12194         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12195
12196         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12197         changes.
12198
12199         * aot-compiler.c (encode_patch): Ditto.
12200
12201         * mini.h (G_MININT32): Fix the definition of this.
12202
12203 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12206
12207         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12208
12209 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12210
12211         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12212         methods returning vtypes in registers.
12213         (mono_arch_allocate_vars): Ditto.
12214
12215         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12216
12217         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12218
12219         * generics.cs: Add a test from the linear IR branch.
12220
12221         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12222
12223         * mini.c (inline_method): Cache failed inline attempts.
12224
12225 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12226
12227         * mini.c: For shared methods of generic classes put the location
12228         of "this" into the MonoGenericJitInfo.
12229
12230         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12231         register out of a MonoContext by register number.  Add the generic
12232         sharing context as an argument to mono_arch_find_this_argument().
12233
12234         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12235         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12236         for new arch function.
12237
12238         * mini-exception.c: Handle open exception clauses in shared
12239         generic code.
12240
12241         * mini-trampolines.c: Supply additional argument to
12242         mono_arch_find_this_argument().
12243
12244 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12245
12246         * Makefile.am (regtests): Run the bench.exe tests last.
12247
12248 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12249
12250         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12251         a bit.
12252
12253 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12254
12255         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12256         with MS.
12257
12258         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12259         
12260         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12261
12262         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12263         whose class has no cctor.
12264
12265         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12266
12267 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12268
12269         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12270         unverified.
12271
12272 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12273
12274         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12275         to be in sync with the code on the linear IR branch.
12276
12277         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12278
12279         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12280
12281 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12282
12283         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12284
12285         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12286
12287         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12288
12289         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12290
12291         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12292         
12293         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12294         body.
12295
12296 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12297
12298         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12299         OP_LOADR4_MEMBASE emission.
12300
12301         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12302         (mono_spillvar_offset_float): Ditto.
12303
12304         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12305
12306         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12307         emission.
12308
12309         * basic-long.cs: Add regression tests for them.
12310
12311         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12312         use.
12313         (mono_arch_allocate_vars): Fix representation of single-precision float
12314         argument.
12315         (mono_arch_output_basic_block): Ditto.
12316
12317         * inssel-mips.brg: Ditto, remove duplicate items.
12318
12319         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12320         arguments of tail calls as on other platforms.
12321         (mono_arch_output_basic_block): Handle tail calls.
12322
12323         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12324         register.
12325
12326         * objects.cs (test_5_pass_static_struct): Add test for it.
12327
12328         Contributed under MIT/X11 license.
12329
12330 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12331
12332         * Makefile.am: Use gmcs for compiling the regression tests.
12333
12334         * *.2.cs *.2.il: Rename to *.cs and *.il.
12335
12336 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12337
12338         * regalloc.h: Make the vassign array smaller.
12339
12340         * mini.c (mini_method_compile): Remove an unused field in cfg.
12341
12342         * mini-codegen.c: Add a bunch of micro optimizations.
12343
12344 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12345
12346         * regalloc.h: Remove some unused fields.
12347
12348 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12349
12350         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12351
12352         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12353
12354 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12355
12356         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12357
12358         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12359         trampoline: Fetch an entry from the runtime generic context.  If
12360         it's NULL, jump to the actual trampoline to fill the runtime
12361         generic context.  Otherwise, return it.
12362
12363         * mini.c: Call the lazy fetch trampoline to get entries out of the
12364         runtime generic context.
12365
12366         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12367         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12368         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12369
12370 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12371
12372         * mini.c: Fetch data out of the extensible part of the runtime
12373         generic context instead of calling a helper function.
12374
12375         * generic-sharing.c: Some functions moved into
12376         metadata/generic-sharing.c.  Helper function for fetching other
12377         types now checks and asserts against extensible rgctx (just for
12378         debugging purposes - the helper function isn't called anymore
12379         unless for debugging).
12380
12381 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12384         for tail calls up to the point that the tests in iltests.exe run. Also add a
12385         dummy CKFINITE implementation.
12386         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12387         needed for trampoline LMF frames.
12388
12389         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12390         trampoline LMF frames.
12391
12392 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12393
12394         * mini.c (inline_method): clean any pending loader error when inlining fail.
12395         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12396
12397 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12398
12399         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12400
12401         * aot-runtime.c (decode_patch_info): Ditto.
12402
12403         * mini.c (mono_resolve_patch_target): Ditto.
12404         
12405         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
12406         icall wrappers.
12407
12408         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
12409         
12410         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
12411         if it references an icall address.
12412
12413 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * cpu-s390x.md: Remove some more unused opcodes.
12416         
12417         * cpu-s390x.md: Remove some unused opcodes.
12418
12419         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
12420         mono_op_imm_to_op ().
12421
12422         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12423         instead of a switch statement.
12424         
12425         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12426         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12427
12428         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12429         
12430         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12431
12432         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12433         -1.
12434
12435 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12436
12437         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12438         opened. Fixes #362607.
12439
12440         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12441
12442         * iltests.il.in: Add a test for static methods in interfaces.
12443
12444 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12445
12446         * genmdesc.c (build_table): Fix a crash on older glib versions.
12447
12448         * cpu-sparc.md: Remove some unused opcodes.
12449         
12450         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12451         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12452
12453         * cpu-amd64.md: Remove some unused opcodes.
12454
12455         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12456         like the other opcodes.
12457
12458 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12459
12460         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12461
12462         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12463
12464         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12465         variables 'cfg' instead of 'm' for consistency.
12466
12467         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12468
12469         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12470         argument holding the vtype return address, to avoid the ambigious use of
12471         cfg->ret for this purpose.
12472
12473         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12474
12475         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12476         
12477         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12478         new mono_print_ins () function which only takes one argument.
12479
12480 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12481
12482         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12483         macro arguments.
12484
12485 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12486
12487         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12488
12489         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12490
12491         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12492         opcodes and other small changes.
12493
12494         * mini-ops.h: Add some new opcodes from the linear IR branch.
12495
12496         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12497
12498         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12499         opcodes, use the REG_MEMBASE opcodes instead.
12500         
12501         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12502         opcodes, use the REG_MEMBASE opcodes instead.
12503         
12504         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12505         linear IR branch.
12506
12507         * mini.c (mono_op_imm_to_op): New helper function.
12508
12509         * mini-ops.h: Add some opcodes from linear IR branch.
12510
12511 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12512
12513         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12514         <tsv@solvo.ru>.
12515
12516 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12517
12518         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12519         OP_ICONV_TO_R4/R8.
12520
12521         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12522
12523 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12524
12525         * aot-compiler.c (emit_method_code): Add an assert.
12526
12527         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12528         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12529         methods.
12530
12531 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12532
12533         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12534         some load/store opcodes so they are consistent. 
12535         (mono_arch_emit_prolog): Simplify some code.
12536
12537         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12538
12539         * objects.cs: Add tests for large argument offsets on ARM.
12540
12541         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12542         stack offsets. Fixes #359651.
12543
12544         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12545
12546         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12547
12548         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12549
12550         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12551
12552         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12553
12554         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12555         rid of CEE_CONV_R_UN.
12556
12557         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12558
12559 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12560
12561         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12562
12563         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12564
12565         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12566
12567         * cpu-amd64.md: Remove some unused opcodes.
12568
12569         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12570
12571         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12572
12573         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12574         arch specific functions for its parts. Call the peephole pass after local
12575         regalloc so the prolog can compute a more accurate max_offset.
12576         
12577         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12578         the corresponding OP_I/OP_L opcodes.
12579
12580         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12581
12582         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12583
12584 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12587         as they are handled in mini.c.
12588
12589         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12590         
12591         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12592         case since it is handled in mini.c.
12593
12594         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12595
12596         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12597
12598         * *.c: Use the new opcodes in the IR and back end code.
12599
12600         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
12601
12602         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
12603
12604 2008-02-06  Mark Probst  <mark.probst@gmail.com>
12605
12606         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
12607         an assert because it has a race condition.
12608
12609 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12610
12611         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
12612
12613         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
12614
12615         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
12616
12617         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
12618         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
12619
12620 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12621
12622         * cpu-amd64.md (move): Correct the maximum size of move.
12623
12624 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12625
12626         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
12627         the generic class init trampoline to return quickly if the class
12628         is already inited.
12629
12630 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
12631
12632         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
12633         issues where an 32 bit callsite cannot be patched by a 64 bit address.
12634
12635 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12636
12637         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
12638         branch.
12639
12640 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12641
12642         * objects.cs: Add some soft-float tests.
12643
12644         * mini.c: Fix a couple more soft-float issues.
12645
12646         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12647
12648         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12649         avoid a REX prefix.
12650
12651 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12652
12653         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12654         exception happens while compiling a virtual method.
12655
12656 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12657
12658         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12659         
12660         * mini-sparc.c: Fix build.
12661
12662         * mini-sparc.c (get_call_info): Add support for generic sharing.
12663
12664         * mini-exceptions.c: Add a FIXME.
12665
12666 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12667
12668         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12669         altstack handling code.
12670
12671         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12672         
12673         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12674
12675         * mini-s390.c: Add support for generic sharing.
12676
12677         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12678         Fix CAS on s390.
12679         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12680
12681         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12682
12683         * mini-s390x.c: Add support for generic sharing.
12684         
12685         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12686         Fix CAS on ia64.
12687         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12688
12689         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12690         can be used since it takes a 16 bit signed immediate.
12691
12692         * inssel-s390x.brg: Fix OP_SETRET.
12693
12694         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12695
12696         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12697
12698         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12699
12700         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12701
12702         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12703         in one place.
12704
12705         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12706         stuff.
12707
12708         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12709         of the unused mono_arch_patch_delegate_trampoline stuff.
12710
12711 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * basic-long.cs: Move the fp related tests to basic-float.cs.
12714
12715         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
12716
12717         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
12718
12719         * basic-calls.cs: Add a test for proper float argument passing.
12720
12721         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
12722         if the context corresponds to an exception received through a signal.
12723
12724         * exceptions.cs: Add a test for nullref handling at the start of a try
12725         clause.
12726
12727         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
12728
12729         * jit-icalls.c (mono_break): New JIT icall.
12730
12731         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
12732
12733         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
12734
12735 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
12736
12737         * cpu-*.md: Get rid of unused opcodes.
12738
12739         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
12740
12741         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
12742         by all platforms.
12743
12744         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
12745         define.
12746
12747         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
12748         the arch independent trampoline code in mini-trampolines.c.
12749
12750         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
12751
12752         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
12753
12754         * mini-s390.h: Remove an unused define.
12755         
12756         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
12757         the arch independent trampoline code in mini-trampolines.c.
12758
12759         * mini-arm.c (mono_arch_emit_prolog): Fix build.
12760
12761 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
12762
12763         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
12764
12765         * mini-s390.c (mono_arch_emit_prolog): Fix build.
12766
12767         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
12768
12769         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
12770
12771         * cpu-amd64.md: Use smaller sizes for int opcodes.
12772
12773         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
12774
12775         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
12776         objects.cs.
12777
12778         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
12779         debugging.
12780
12781         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
12782         instead of though a pointer to save an indirection when accessing elements of
12783         the array.
12784
12785         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
12786         some typos.
12787         (NOT_IMPLEMENTED): New helper macro.
12788         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
12789         of a bb.
12790
12791         * *.c: Use the new helper macro.
12792
12793 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
12796
12797 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
12798
12799         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
12800         stack slots.
12801
12802 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
12803
12804         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
12805         profiling is enabled.
12806         
12807         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12808         the end.
12809         (mono_arch_emit_prolog): Add more first bblock optimizations.
12810
12811         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12812         in order if possible.
12813         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12814         bblock, since the arguments are still in their original registers.
12815
12816         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12817
12818 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12819
12820         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12821         as well.
12822
12823         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12824         offset 0.
12825
12826         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12827
12828         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12829         process async exceptions received while in unmanaged code.
12830
12831         * mini.c (mini_init): Install a callback with the runtime which will be called
12832         when a thread receives an async exception while in unmanaged code.
12833
12834         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12835
12836         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12837
12838 2008-01-16  Wade Berrier  <wberrier@novell.com>
12839
12840         * cpu-g4.md:
12841         * cpu-arm.md:
12842         * cpu-s390x.md:
12843         fix build
12844
12845 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
12846
12847         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
12848         compilation with sun cc.
12849
12850         * cpu-*.md: Fix the build.
12851
12852         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
12853
12854         * mini-amd64.h: Add some comments to the MonoLMF structure.
12855
12856         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
12857         
12858         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
12859         in the LMF structure if possible. This saves two instructions in the
12860         managed->native wrappers.
12861
12862         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
12863
12864 2008-01-16  Mark Probst  <mark.probst@gmail.com>
12865
12866         * generic-sharing.c: New type argument lookup code which uses the
12867         runtime generic context template.
12868
12869 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
12870
12871         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
12872
12873         * mini-arm.c (add_general): Fix arm eabi parameter passing.
12874         (mono_arch_output_basic_block): Fix localloc implementation.
12875
12876         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
12877
12878         * mini-ia64.c (peephole_pass): Fix ia64 build.
12879
12880         * mini-amd64.c (peephole_pass): Fix a warning.
12881         
12882         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
12883         at a constant offset from sp/fp.
12884
12885         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
12886         instead of obtaining it from *lmf in the managed method case.
12887
12888 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
12889
12890         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
12891
12892 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
12893
12894         * mini.h (MonoInstList): New type.
12895         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
12896         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
12897         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
12898         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
12899         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
12900         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
12901         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
12902         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
12903         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
12904         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
12905         MONO_INST_LIST_FOR_EACH_ENTRY,
12906         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
12907         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
12908         mono_inst_list_first, mono_inst_list_last,
12909         mono_inst_list_next, mono_inst_list_prev): New instruction
12910         list handling interfaces.
12911         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12912         list head 'ins_list'.
12913         (MonoInst): Replace next pointer with list head 'node'.
12914         (MonoCallInst): Make 'out_args' a MonoInstList.
12915         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
12916         (MonoCompile): Delete reverse_inst_list and
12917         reverse_inst_list_len.
12918         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
12919         mono_arch_lowering_pass, mono_arch_local_regalloc,
12920         mono_arch_output_basic_block, mono_arch_emit_prolog):
12921         Convert to new instruction lists.
12922         (insert_after_ins): Delete.
12923         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
12924         instruction lists.
12925         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
12926         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
12927         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
12928         mono_emulate_opcode, mono_emit_load_got_addr,
12929         inline_method, mono_method_to_ir, mono_print_bb_code,
12930         print_dfn, decompose_pass, nullify_basic_block,
12931         replace_out_block_in_code, remove_block_if_useless,
12932         merge_basic_blocks, move_basic_block_to_end,
12933         try_unsigned_compare, optimize_branches, mono_print_code,
12934         mini_select_instructions, remove_critical_edges): Likewise.
12935         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
12936         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
12937         mono_arch_output_basic_block, mono_arch_emit_prolog):
12938         Likewise.
12939         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
12940         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12941         mono_arch_output_basic_block): Likewise.
12942         (inst_list_prepend, insert_after_ins): Delete.
12943         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
12944         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
12945         instruction lists.
12946         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
12947         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
12948         mono_arch_emit_prolog): Likewise.
12949         * cfold.c (mono_constant_fold): Likewise.
12950         * liveness.c (visit_bb, mono_analyze_liveness,
12951         optimize_initlocals): Likewise.
12952         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
12953         * graph.c (mono_draw_code_cfg): Likewise.
12954         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
12955         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
12956         mono_ssa_cprop): Likewise.
12957         * abcremoval (get_relations_from_previous_bb, process_block):
12958         Likewise.
12959         * local-propagation (mono_cprop_invalidate_values,
12960         mono_local_cprop_bb): Likewise.
12961         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
12962         peephole_pass, mono_arch_output_basic_block,
12963         mono_arch_emit_prolog): Likewise.
12964         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
12965         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12966         mono_arch_emit_prolog): Likewise.
12967         (insert_after_ins): Delete.
12968         * aliasing.c (print_code_with_aliasing_information,
12969         mono_build_aliasing_information, mono_aliasing_deadce):
12970         Convert to new instruction lists.
12971         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
12972         peephole_pass, NEW_INS, mono_arch_lowering_pass,
12973         mono_arch_local_regalloc, mono_arch_output_basic_block):
12974         Likewise.
12975         (insert_after_ins): Delete.
12976         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
12977         peephole_pass, mono_arch_output_basic_block): Convert to
12978         new instruction lists.
12979         * mini-codegen (InstList, inst_list_prepend,
12980         insert_after_ins): Delete.
12981         (insert_before_ins, get_register_force_spilling,
12982         get_register_spilling, free_up_ireg, free_up_reg,
12983         create_copy_ins, create_spilled_store, alloc_int_reg,
12984         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
12985         to new instruction lists.
12986         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
12987         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
12988         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
12989         (insert_after_ins): Delete.
12990         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
12991         mono_arch_local_regalloc, mono_arch_output_basic_block,
12992         mono_arch_call_opcode): Convert to new instruction lists.
12993         (insert_after_ins): Delete.
12994         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
12995         peephole_pass, mono_arch_output_basic_block,
12996         mono_arch_emit_prolog): Convert to new instruction lists.
12997
12998 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
12999
13000         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13001
13002         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13003         Fixes #353182.
13004
13005         * Makefile.am (version.h): Make this work with non-bash shells.
13006
13007 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13008
13009         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13010
13011 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13012
13013         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13014         the InitializeArray optimization.
13015
13016 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * mini.c driver.c: Don't include os/gc_wrapper.h.
13019
13020 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13021
13022         * mini.c (print_jit_stats): Print GC statistics if available.
13023
13024 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13025
13026         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13027
13028 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13031
13032 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13033
13034         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13035         
13036         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13037
13038         * driver.c (mono_main): Ditto.
13039
13040 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13041
13042         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13043
13044         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13045         in the vtable can't be encoded.
13046         (compile_method): Ditto.
13047
13048 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13049
13050         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13051         defined.
13052
13053         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13054         lmf->rbp.
13055
13056         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13057         the top LMF entry belongs to the current method.
13058
13059         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13060
13061 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13064         
13065         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13066
13067         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13068
13069         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13070
13071         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13072
13073         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13074         implementation.
13075
13076         * basic-float.cs: Add an ulong->double cast test.
13077
13078 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13079
13080         * mini.c (mono_method_to_ir): Fix a warning.
13081
13082 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13083
13084         * mini-ops.h: Add OP_SWITCH.
13085
13086         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13087         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13088
13089 2007-12-11  Geoff Norton  <gnorton@novell.com>
13090
13091         * mini-s390x.c: Minor change to the MAX() define to allow
13092         it to compile with other gcc versions.
13093
13094 2007-12-11  Geoff Norton  <gnorton@novell.com>
13095
13096         * cpu-s390x.md:
13097         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13098
13099 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13100
13101         exceptions-arm.c (mono_arch_get_restore_context): Restore
13102         the frame pointer.
13103
13104         exceptions-arm.c (throw_exception): Save the frame pointer.
13105         This is a partial fix for #323747. Only the client side is
13106         fixed.
13107
13108 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13109
13110         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13111         was using an unrelated variable to log the class which
13112         needed the cctor to be called. This was crashing on arm.
13113
13114 2007-12-09  Robert Jordan  <robertj@gmx.net>
13115
13116         * mini-x86.c (mono_arch_emit_epilog):
13117         Consider all kinds of 64-bit types. Fixes #323114.
13118
13119 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13120
13121         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13122
13123 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13124
13125         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13126
13127 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13128
13129         * mini.c: run type ctor before allocating an object, not only
13130         when running it's constructor method (fixes at least part of bug #342507).
13131
13132 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13133         
13134         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13135         
13136         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13137         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13138         function.
13139
13140         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13141         mono_generic_class_init_trampoline () the same as it is done with the other
13142         trampolines.
13143
13144         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13145         aot-runtime.c aot-compiler.c: Implement AOT support.    
13146
13147 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13148
13149         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13150         build for archs which don't have the vtable trampoline defined
13151         yet.
13152
13153 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13154
13155         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13156
13157         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13158
13159         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13160
13161         * tramp-<ARCH>.c: Use the new helper function.
13162
13163 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13164
13165         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13166         trampoline call, which takes a vtable argument.
13167
13168         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13169         OP_TRAMPCALL_VTABLEs like other calls.
13170
13171         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13172         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13173         call.  Implemented a support function which fetches the vtable
13174         from a register set.
13175
13176         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13177         Implemented a generic class init trampoline, using the
13178         OP_TRAMPCALL_VTABLE opcode.
13179
13180         * mini.c: Implemented static field access when sharing generic
13181         code.  This implies initing the class using the new
13182         OP_TRAMPCALL_VTABLE call.
13183
13184 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13185
13186         * mini.c: Don't compile methods with sharing enabled if their
13187         classes are disabled for sharing.
13188
13189 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13192         opcodes. Fixes #346563.
13193
13194         * objects.cs: Add a new test.
13195
13196         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13197
13198         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13199         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13200
13201 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13202
13203         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13204
13205 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13206
13207         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13208         code stream.
13209
13210 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13211
13212         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13213
13214         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13215         optimization in the AOT case.
13216         
13217 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13218
13219         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13220         
13221         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13222
13223         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13224
13225         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13226
13227         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13228         is created by the inlined delegate ctor.
13229
13230         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13231
13232         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13233
13234 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13235
13236         * cpu-x86.md: Fix the length of ckfinite.
13237
13238 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13239
13240         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13241         
13242         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13243         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13244
13245         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13246
13247         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13248         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13249
13250 2007-11-28  Martin Baulig  <martin@ximian.com>
13251
13252         * mini-x86.c
13253         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13254         after creating the trampoline.
13255
13256 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13257
13258         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13259
13260         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13261         the same version.
13262
13263         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13264         instead of the calling method to help AOT.
13265
13266         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13267
13268 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13269
13270         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13271         is defined.
13272
13273 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13274
13275         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13276         
13277         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13278         (encode_method_ref): No need to handle generic method definitions specially.
13279
13280         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13281
13282         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13283         decode_klass_info.
13284
13285         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13286         encode_klass_info.
13287         (compile_method): Enable generic sharing.
13288
13289 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13292         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13293
13294         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13295         generic code.
13296
13297         * mini-trampolines.c: Fix a warning.
13298
13299         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13300         NEW_PCONST.
13301         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13302         (generic_class_is_reference_type): Remove unused function.
13303
13304         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13305         in the generic vtable trampoline case.
13306
13307         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13308         
13309         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13310         return an AOT method based on a vtable slot.
13311
13312         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13313
13314         * mini.c (mini_get_vtable_trampoline): Export this.
13315
13316 2007-11-22  Martin Baulig  <martin@ximian.com>
13317
13318         * debug-debugger.h
13319         (MonoDebuggerInfo): Move `debugger_version' up.
13320
13321 2007-11-22  Martin Baulig  <martin@ximian.com>
13322
13323         * mini-amd64.c
13324         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13325
13326         * mini-trampolines.c
13327         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13328         after compiling the method.
13329
13330 2007-11-20  Martin Baulig  <martin@ximian.com>
13331
13332         * debug-mini.c
13333         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13334         (mono_debugger_remove_breakpoint): Likewise.
13335         (mono_debugger_check_breakpoints): Likewise.
13336
13337         * debug-debugger.c: Implement the new breakpoint interface here.
13338
13339 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13340
13341         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13342         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13343
13344         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13345
13346 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13347
13348         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13349
13350         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13351         mini.c.
13352
13353         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13354         mini.c.
13355
13356         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13357         returning a vtype in a register.
13358
13359         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13360         here from the arch specific code.
13361
13362         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13363         mini.c.
13364
13365         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13366         (mono_arch_emit_prolog): Increment maximum prolog size.
13367
13368         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13369         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13370
13371         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13372         MonoGenericSharingContext.
13373
13374         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13375         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13376
13377 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13378
13379         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13380         which extract fields out of the runtime generic context.  Full
13381         sharing of the NEWARR opcode.
13382
13383 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13384
13385         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13386         --enable-minimal=ssa.
13387
13388 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13389
13390         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13391         mono_marshal_get_delegate_invoke () signature change.
13392
13393 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13394
13395         * mini.c: Removed the shared context in favor of the generic
13396         sharing context.  Allocate the MonoJitInfo structure with room for
13397         the generic sharing context if it's needed.
13398
13399         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13400         domain-internals.h now.
13401
13402         * mini-x86.c: Pass the generic sharing context to get_call_info ().
13403
13404         * generic-sharing.c: Several changes for working without a shared
13405         context and instead operating on open types instead.
13406
13407 2007-11-12  David S. Miller  <davem@davemloft.net>
13408
13409        * inssel-sparc.brg: Fix double instruction emit.
13410
13411 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
13412
13413         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
13414         Get/Set/Address methods.
13415         
13416         * mini.c debug-debugger.c mini-trampolines.c: Update after 
13417         mono_marshal_get_delegate_invoke signature change.
13418
13419 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13420
13421         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13422         This can happens with dynamic methods. Fixes the other bug in #322722.
13423
13424 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13425
13426         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13427         BX call sequence.
13428
13429         * mini-arm.c (arm_patch): Implement patching of BX call
13430         sequence. Fixes one of the bugs in #322722.
13431
13432 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13433
13434        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13435        under Linux.  We only need to flush every 32-byte cache line.    
13436
13437 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13438
13439         * mini.c:
13440         move_basic_block_to_end: Add branches when needed, eventually creating
13441         a new BB.
13442         optimize_branches: added a parameter that tells if it's ok to create
13443         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13444         and avoid calling move_basic_block_to_end when it's not ok.
13445         Fixes bug 318677.
13446
13447 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13448
13449         * mini.c: Abort inlining call to InitializeArray if something
13450         looks wrong.  Let the icall handle it, which now has proper safety
13451         checks.
13452
13453 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13454
13455         * mini.c (mono_spill_call): add support for soft-float.
13456
13457         * mini.c (mono_method_to_ir): add support for soft-float
13458         to inlined functions that return float.
13459
13460         * mini.c (mono_method_to_ir): add support for soft-float
13461         to cee_stsfld opcode on float fields.
13462
13463 2007-11-05  Geoff Norton  <gnorton@novell.com>
13464
13465         * mini-x86.h: Fix the structure access for X86 Leopard.
13466
13467
13468 2007-11-05  Martin Baulig  <martin@ximian.com>
13469
13470         * mini-trampolines.c
13471         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13472         after compiling the method to notify the debugger.
13473
13474 2007-11-05  Martin Baulig  <martin@ximian.com>
13475
13476         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13477
13478 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13481         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13482
13483 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13486         native-to-managed wrappers.
13487         
13488 2007-11-01  Geoff Norton  <gnorton@novell.com>
13489
13490         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13491         members.
13492
13493 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13494
13495         * mini.c, mini-x86.c: when getting back from unmanaged code
13496         to managed via a marshaled delegate we also need to set the
13497         right domain.
13498
13499 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13500
13501         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13502         for amd64.
13503
13504 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13505
13506         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13507         let the debugger or other external agents to tell the JIT when
13508         a sw breakpoint has been inserted in the code that the JIT needs
13509         to be able to inspect.
13510
13511 2007-10-31  Martin Baulig  <martin@ximian.com>
13512
13513         * debug-debugger.h
13514         (MonoDebuggerInfo): Remove `runtime_class_init'.
13515
13516 2007-10-30  Martin Baulig  <martin@ximian.com>
13517
13518         * debug-mini.h
13519         (mono_debugger_thread_created): Added `MonoThread *' argument.
13520         (mono_debugger_extended_notification): New public method.
13521         (mono_debugger_trampoline_compiled): New public method.
13522
13523         * debug-mini.c
13524         (MonoDebuggerThreadInfo): Added `thread' and
13525         `extended_notifications' fields.
13526
13527         * debug-debugger.c
13528         (debugger_executable_code_buffer): New static variable.
13529
13530         * debug-debugger.h
13531         (MonoDebuggerInfo): Added `executable_code_buffer',
13532         `executable_code_buffer_size', `breakpoint_info_area',
13533         `breakpoint_table' and `breakpoint_table_size'.
13534
13535 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13536
13537         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13538         that IP  either is an unused value or the vtable pointer. IMT 
13539         calls use vtable + offset now. Reduced by almost half the size
13540         of IMT entries.
13541
13542 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13543
13544         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13545         defines to access param registers. Replace long usage with
13546         gsize as sizeof(long) != sizeof(void*) on Win64.
13547
13548         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13549         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13550         instead of non-existant _GetAddressOfReturnAddress.
13551
13552         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13553         param registers. Save/restore %rdi and %rsi in MonoLMF.
13554
13555         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13556         param registers. Modify (throw_exception) signature to take 
13557         %rdi and %rsi on Win64. 
13558
13559         Code is contributed under MIT/X11 license.
13560
13561 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13562
13563         * helpers.c: unlink debugging output files.
13564
13565 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13566
13567         * mini.c: Move mono_create_ftnptr () to object.c.
13568
13569 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13570
13571         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13572         optional. This function can now be used to disassemble code generated
13573         outside the JIT such as trampolines and IMT thunks.
13574
13575         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13576
13577         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13578         vtable pointer from a ldr instruction.
13579
13580         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13581         new IMT call sequence.
13582
13583         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13584         call sequence for interface invocations.
13585
13586         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13587         for imt support. This function is empty since IMT on ARM requires no
13588         special handling on the IR side.
13589
13590         * mini-arm.c (mono_arch_find_imt_method): added, required for
13591         imt support.
13592
13593         * mini-arm.c (mono_arch_find_this_argument): added, required
13594         for imt support.
13595
13596         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13597         a ldr instruction to load a value stored in the code stream.
13598
13599         * mini-arm.c (mono_arch_build_imt_thunk):added, required
13600         for imt support.
13601
13602
13603 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
13604
13605         * mini.c (mini_init): Install the jump trampoline callback.
13606
13607 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13608
13609         * mini-trampolines.c: handle synchronized methods with the common
13610         vtable trampoline (bug #335601).
13611
13612 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
13613
13614         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
13615
13616         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
13617         64 bit platforms.
13618
13619         * mini-ia64.h mini-ia64.c: Add support for IMT.
13620
13621         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
13622         prolog. Fixes #331958.
13623
13624 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
13625
13626         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
13627
13628 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13629
13630         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
13631         trampoline.
13632
13633 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13634
13635         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
13636         trampoline.
13637
13638 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
13639
13640         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13641         trampoline.
13642
13643 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13644
13645         * mini-trampolines.c: changed the magic rampoline to understand
13646         the common vtable trampoline method: the method to invoke is
13647         determined by the vtable displacement of the call.
13648
13649 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13650
13651         * mini.c, mini.h: register the common vtable trampoline if the
13652         architecture supports it.
13653
13654 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13655
13656         * cpu-amd64.md: use the correct max length for tls_get.
13657
13658 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13659
13660         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13661         CEE_STELEM_ANY. Fixes #333696.
13662
13663 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13664
13665         * exceptions-x86.c: provide more graceful handling of the case where
13666         we followed a bogus function pointer from managed code (bug #332866).
13667
13668 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13669
13670         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13671         replaces the generic_shared flag and will carry more information
13672         in the future.
13673
13674         * generic-sharing.c: Added mini_type_stack_size() which allows
13675         allows open types if given a generic sharing context.
13676         mini_get_basic_type_from_generic() takes a
13677         MonoGenericSharingContext* instead of a MonoCompile* now.
13678
13679         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13680         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13681         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13682         changes above.  Just passing arguments through to the right
13683         places.
13684
13685 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13686
13687         * mini-arm.c: unify the call emission to emit_code_seq().
13688
13689 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13690
13691         * tramp-arm.c: reduced the trampoline size.
13692
13693 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13694
13695         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13696         variable handling out of arch-specific code.
13697
13698 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13699
13700         * mini-arm.c: implemented fast delegate dispatch.
13701
13702 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13703
13704         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13705         that fp elimination is turned off if the space required by locals is too
13706         big. Fixes #331958.
13707
13708 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13709
13710         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13711         ARM to the new style trampoline.
13712
13713 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13714
13715         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
13716
13717         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
13718
13719 2007-10-09  Martin Baulig  <martin@ximian.com>
13720
13721         * debug-debugger.h
13722         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
13723         `field_info_offset_offset'.     
13724
13725 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
13726
13727         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
13728         removed more internal usage of the r11 register and made it available
13729         to the register allocator.
13730
13731 2007-10-08  Mark Probst  <mark.probst@gmail.com>
13732
13733         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
13734         when sharing generics and treat type variables as references.
13735
13736 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13737
13738         * mini-ppc.c: started removing the internal uses of register r11
13739         to eventually allow the register allocator to manage it as an
13740         additional available register.
13741
13742 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13743
13744         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
13745
13746 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
13747
13748         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
13749         specific trampolines as they are not performance critical as a jump
13750         target (maybe align as before only for AOT code?). This saves about
13751         200 KB of native code on x86 for monodevelop startup.
13752
13753 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
13754
13755         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
13756         monodevelop startup.
13757
13758 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
13759
13760         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
13761
13762         * mini-sparc.h mini-sparc.c: Implement IMT support.
13763
13764         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
13765         its smaller and doesn't clobber sparc_g1.
13766
13767         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
13768
13769 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
13770
13771         * mini-ppc.c: optimized the size of the IMT thunks a bit.
13772
13773 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13774
13775         * mini-ppc.c: implemented fast delegate invocation.
13776
13777 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
13778
13779         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
13780
13781 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13782
13783         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
13784         code to the new style trampoline in preparation for IMT support.
13785
13786 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
13787
13788         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
13789         systems already. This also reduces the specific trampiline sizes and
13790         prepares for the use of r12 as the IMT identifier register.
13791
13792 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13793
13794         * mini-mips.h: endianess fix (simplified from a patch by
13795         Thomas Kunze <thommy@tabao.de>, bug #323737).
13796
13797 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13798
13799         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
13800         to access ucontext fields and enable netbsd support
13801         (partially from Magnus Henoch <mange@freemail.hu>).
13802
13803 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13804
13805         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
13806         use the preprocessor from the CPP env var if it is set.
13807
13808 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13809
13810         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13811         code, before interface_offset gets used.
13812
13813 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13814
13815         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13816         mono_class_setup_vtable () before accessing klass->vtable.
13817
13818 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13819
13820         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13821         hackish.
13822
13823 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13824
13825         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13826         IMT slots (this saves hundreds of KB of memory in programs like
13827         IronPython and Monodevelop).
13828
13829 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13830
13831         * mini.c: print the delegate counter.
13832
13833 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13834
13835         * mini-x86.c: make it easier to enable the debugging code for IMT
13836         slots.
13837
13838 2007-09-28  Martin Baulig  <martin@ximian.com>
13839
13840         * debug-debugger.h
13841         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13842         `mono_method_klass_offset' and `mono_method_token_offset'.
13843
13844 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13845
13846         * mini.c: First generics sharing implementation.  Can only share
13847         in very simple cases.  If sharing doesn't work it falls back to
13848         dedicated compilation.
13849
13850         * mini.h: Flag in MonoCompile to specify whether generic
13851         compilation is shared.  Flags enum for marking which generic inst
13852         of a context is used.  Prototypes for helper functions.
13853
13854         * generic-sharing.c: Helper functions for generic method sharing.
13855
13856         * optflags-def.h: Optimization flag (gshared) for enabling generic
13857         method sharing added.
13858
13859         * Makefile.am: generic-sharing.c added.
13860
13861 2007-09-19 Daniel Nauck <dna@mono-project.de>
13862
13863         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
13864
13865 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
13866         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
13867         fixes bug 325507.
13868
13869 2007-09-19  Martin Baulig  <martin@ximian.com>
13870
13871         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
13872         mono_debug_cleanup() is now part of mono_cleanup().
13873
13874 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * driver.c (mono_main): Fix a warning.
13877
13878 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13879
13880         * aot-compiler.c: Optimize various parts when processing large assemblies.
13881         Fixes ##325568.
13882
13883         * mini.c (mono_patch_info_hash): Improve hash function.
13884
13885 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13886
13887         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
13888         
13889         Code is contributed under MIT/X11 license.
13890
13891 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * mini.c (mini_init): Fix a leak.
13894
13895         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
13896
13897 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13898
13899         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
13900
13901 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13902
13903         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
13904
13905 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13906
13907         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
13908         variance tests.
13909
13910         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13911
13912         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13913
13914         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
13915
13916         * aot-runtime.c (decode_patch_info): Ditto.
13917
13918 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13919
13920         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
13921         static case. Cache delegates in architecture specific code, 
13922         based on number of parameters.
13923         
13924         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
13925         in architecture specific code, based on number of parameters.
13926         
13927         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
13928         caching happen in architecture specific code now.
13929         
13930         Code is contributed under MIT/X11 license.
13931
13932 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13933
13934         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
13935         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
13936         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
13937
13938         Code is contributed under MIT/X11 license.
13939
13940 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13941         * mini.c: (mono_thread_abort) Fixed bug #82416.
13942
13943 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13944
13945         * mini.: hook the new managed GC allocation feature into the JIT.
13946
13947 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13948
13949         * mini.c: implementation for the new runtime tls opcode.
13950
13951 2007-09-11  Martin Baulig  <martin@ximian.com>
13952
13953         * debug-debugger.h
13954         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
13955         `mono_method_inflated_offset'.
13956
13957 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
13958
13959         * driver.c mini.h mini.c: Add a new devel command line option for injecting
13960         async exceptions into a method.
13961
13962         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
13963         purpose of testing whenever the unwinder works at every instruction.
13964
13965 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13966
13967         * mini.c: check accessibility of method used in ldftn (fixes
13968         bug #82635).
13969
13970 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
13971
13972         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
13973
13974         * inssel.brg: Fix a warning.
13975
13976 2007-09-03  Martin Baulig  <martin@ximian.com>
13977
13978         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
13979         now takes the `main_method' as argument.
13980
13981 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
13982
13983         * cpu-sparc.md (endfilter): Add missing src1:i argument.
13984
13985 2007-08-30  Jonathan Chambers <joncham@gmail.com>
13986
13987         * driver.c: include the cil-coff.h header on Windows.
13988         
13989         Code is contributed under MIT/X11 license.
13990
13991 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13992
13993         * mini.c, driver.c: don't include the cil-coff.h header.
13994
13995 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
13996
13997         * mini.c: flag places that needs fixes fo soft-float support.
13998
13999 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14000
14001         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14002         endian systems (partially from Dean Jenkins, bug #81924).
14003
14004 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14005
14006         * mini.c (check_linkdemand): Remove embedded reference object in
14007         call to LinkDemandSecurityException.
14008         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14009         with an IntPtr instead of a reference object.
14010
14011 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14012
14013         * mini.c (handle_initobj): Handle alignment properly.
14014
14015         * inssel.brg (mini_emit_memset): Ditto. 
14016
14017         * inssel.brg (mini_emit_memcpy): Ditto. 
14018
14019         * inssel-sparc.brg: Ditto.              
14020
14021         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14022
14023 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14024
14025         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14026         exceptions raised in unmanaged code. Fixes part of #82594.
14027
14028 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14029
14030         * mini.c (mono_method_to_ir), declsec.c
14031         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14032
14033 2007-08-22  Martin Baulig  <martin@ximian.com>
14034
14035         * debug-mini.h
14036         (MonoDebuggerThreadInfo): New typedef.
14037         (mono_debugger_thread_table): New global variable.
14038         (mono_debugger_thread_created): New public function.
14039         (mono_debugger_thread_cleanup): New public function.
14040
14041         * debug-debugger.h
14042         (MonoDebuggerInfo):
14043         - removed `get_current_thread' and `lookup_assembly'.
14044         - removed `data_table'.
14045         - added `thread_table'.
14046
14047         * mini.c
14048         (mono_thread_start_cb): Call mono_debugger_thread_created().
14049         (mono_thread_attach_cb): Likewise.
14050         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14051         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14052         initial domain.
14053
14054         * driver.c (mono_main): Move mono_debug_init() up, before calling
14055         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14056
14057 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14058
14059         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14060         together when passing several arguments of type double (gives a small
14061         speedup and saves a few bytes of generated code).
14062
14063 2007-08-20  Jb Evain  <jbevain@novell.com>
14064
14065         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14066
14067 2007-08-20  Jb Evain  <jbevain@novell.com>
14068
14069         * mini.c (mono_method_to_ir): throw MethodAccessException
14070         and FieldAccessException instead of InvalidProgramException.
14071
14072 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14073
14074         * mini.c: CoreCLR security checks.
14075
14076         * mini.h: Removed MonoSecurityMode (moved to
14077         metadata/security-manager.h) and mono_security_mode global var
14078         (replaced by set/get functions in security-manager.h).
14079
14080         * driver.c: Added "core-clr-test" security mode for testing.  Used
14081         set-function for setting security mode.
14082
14083 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14084
14085         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14086         the new jit_info_table.
14087
14088         * driver.c: Test code for the new jit_info_table (enabled by the
14089         define MONO_JIT_INFO_TABLE_TEST).
14090
14091 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14092
14093         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14094         detection of call <REG> instruction sequence. Fixes build on freebsd.
14095
14096 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14097
14098         * mini-exceptions.c: Fix a warning.
14099
14100 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14101
14102         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14103         stack overflow handling code on amd64 too.
14104
14105         * mini-exceptions.c (mono_setup_altstack): Make this use 
14106         mono_thread_get_stack_bounds ().
14107
14108         * mini-x86.h: Disable sigaltstack on solaris x86.
14109
14110 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14111
14112         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14113
14114 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14115
14116         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14117
14118 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14119
14120         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14121
14122         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14123
14124 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14125
14126         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14127         due to alignment.
14128
14129 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14130
14131         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14132         to be emitted (bug #82281).
14133
14134 2007-08-01  Martin Baulig  <martin@ximian.com>
14135
14136         Merged the `debugger-dublin' branch.
14137
14138         * debug-debugger.h (MonoDebuggerInfo):
14139         Removed the `old_*' compatibility entries.
14140         Added `debugger_version' and `data_table'.
14141         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14142         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14143
14144         * debug-mini.c
14145         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14146         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14147         instead of a `gconstpointer'.
14148         (mono_debugger_insert_method_breakpoint): Return a
14149         `MonoDebugMethodAddressList *'.
14150
14151 2007-06-28  Martin Baulig  <martin@ximian.com>
14152
14153         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14154
14155 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14156
14157         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14158         __builtin_frame_address () since it is broken on older gcc versions.
14159
14160 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14161
14162         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14163         on the stack overflow handling and made the managed stack overflows
14164         catchable in most cases using soft guard pages.
14165         * exceptions-x86.c: added code to restore the protection in the soft
14166         guard pages at the end of exception handling.
14167
14168 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14169
14170         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14171
14172 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14173
14174         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14175         exception handling.
14176
14177 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14178
14179         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14180         signal handling support until it has been ported to the new mechanism.
14181         * mini.c: fixed stack overflow detection and use the new
14182         architecture code  to handle signals on the altstack.
14183
14184 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14185
14186         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14187         stack overflows on the alt stack.
14188
14189 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14190
14191         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14192         stack overflows on the alt stack.
14193
14194 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14195
14196         * exceptions-ppc.c: cleanup preparing for altstack support.
14197
14198 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14199
14200         * exceptions-arm.c: cleanup preparing for altstack support.
14201
14202 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14203
14204         * mini.c (print_jit_stats): Output hazard pointer stats.
14205
14206 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14207
14208         * driver.c, mini.c: Replaced security mode flags with a single
14209         enum variable.
14210
14211 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14212
14213         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14214
14215 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14216
14217         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14218         (which doesn't do anything yet) for activating Core CLR
14219         (Silverlight) security.
14220
14221 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14222
14223         * mini-codegen.c: work around a possible gcc bug on arm.
14224
14225 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14226
14227         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14228         message for platforms that don't support AOT compilation.
14229
14230 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14231
14232         * mini.h, mini.c, driver.c: temporary smcs hack.
14233
14234 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14235
14236         * mini-arm.h, mini-arm.c: arm EABI fixes.
14237
14238 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14239
14240         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14241         case.
14242
14243         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14244         trampolines taking a method argument.
14245
14246         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14247
14248         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14249         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14250
14251         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14252         JIT compilation throws an exception. Fixes #82050.
14253
14254 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14255
14256         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14257         with the MONO_EXCEPTION_ defines.
14258
14259 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14260
14261         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14262         #82117.
14263         
14264         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14265         the cause of an assertion.
14266
14267 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14268
14269         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14270         removed.
14271
14272 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14273
14274         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14275         assert. Should fix #82103.
14276
14277 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14278
14279         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14280         here too. Fixes #82095.
14281
14282         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14283         addresses.
14284
14285         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14286
14287         * mini-amd64.h: Enable IMT for amd64.
14288         
14289         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14290
14291 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14292
14293         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14294
14295 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14296
14297         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14298         as soon as check_linkdemand sets an exception_type.
14299
14300 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14301
14302         * mini-x86.c: fixed offsets for IMT call sequence.
14303         * mini-x86.h: enable IMT again.
14304
14305 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14306
14307         * trace.c (mono_trace_enter_method): Decode MonoType too.
14308
14309         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14310
14311         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14312
14313         * mini-amd64.c: Add preliminary IMT implementation.
14314         
14315 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14316
14317         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14318         understand the new IMT-base interface invocation (thanks to
14319         Daniel Nauck for the report and the remote debugging session).
14320
14321 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14322
14323         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14324
14325 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14326
14327         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14328
14329 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14330
14331         * mini-trampolines.c: implement AOT IMT support.
14332         * mini-x86.h: enable IMT support for wider testing.
14333
14334 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14335
14336         * inssel.brg (emit_imt_argument): Add aot support here.
14337
14338         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14339
14340 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14341
14342         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14343         of the IMT implementation, partially from massi, with my
14344         implementation of the bsearch sequence. Disabled by default until
14345         the AOT code is implemented.
14346
14347 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14348
14349         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14350
14351         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14352
14353 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14354
14355         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14356         arch-independent IMT JIT code from Massimiliano
14357         Mantione (massi@ximian.com) with small cleanups from me.
14358
14359 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14360
14361         * Makefile.am: fix svn invocation to get the svn revision to be
14362         independent of the local language (build fix).
14363
14364 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14365
14366         * mini.c (inline_method): Reset cfg->exception_type if the
14367         inlining is aborted.  Fixes: 82049.
14368
14369 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14370
14371         * mini.c: remove assert from exception handling code when exception_ptr
14372         is not set.
14373
14374 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14375
14376         * mini.c (mono_codegen): Add an assert.
14377
14378         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14379         enter and leave code.
14380         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14381
14382 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14383
14384         * mini-ppc.c: fixed memory corruption for localloc(0)
14385         (bug #81852).
14386
14387 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14388         
14389         * mini.c: Fix warnings.
14390
14391 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14392
14393         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14394         to emit better double->int conversions.
14395
14396 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14397
14398         * mini.c: the provided Min/Max optimizations are valid for unisgned
14399         ints.
14400
14401 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14402
14403         * 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
14404
14405 2007-06-28  Miguel de Icaza  <miguel@novell.com>
14406
14407         * mini.c (mono_running_on_valgrind): Add support for reporting the
14408         method and  its boundaries to valgrind.
14409
14410 2007-06-28  Martin Baulig  <martin@ximian.com>
14411
14412         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14413
14414 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
14415
14416         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
14417
14418         * generic.2.cs: Add new test case.
14419
14420 2007-06-25  Martin Baulig  <martin@ximian.com>
14421
14422         Merged the `debugger-dublin' branch.
14423
14424         * debug-mini.c
14425         (mono_debugger_insert_method_breakpoint): New public method.
14426         (mono_debugger_remove_method_breakpoint): Likewise.
14427         (mono_debugger_check_breakpoints): New static method.
14428         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14429
14430         * debug-debugger.h (MonoDebuggerInfo):
14431         Renamed (to keep backward compatibility in the vtable):
14432         `insert_breakpoint' -> `old_insert_breakpoint'.
14433         `remove_breakpoint' -> `old_remove_breakpoint'.
14434         `create_string' -> `old_create_string'.
14435         `lookup_class' -> `old_lookup_class'.
14436         `lookup_type' -> removed; changed into a dummy field.
14437         `lookup_assembly' -> `old_lookup_assembly'.
14438         Added (same functionality, but different signature):
14439         `create_string', `lookup_class', `lookup_assembly'
14440         Added new:
14441         `get_method_addr_or_bpt', `remove_method_breakpoint',
14442         `runtime_class_init'.
14443
14444         * debug-debugger.c: Merged the `debugger-dublin' branch.
14445
14446 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14447
14448         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14449         well.
14450         (peephole_pass): Likewise.
14451
14452 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14453
14454         * driver.c: hopefully make setaffinity work also for ancient
14455         versions of linux.
14456
14457 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14458
14459         * driver.c : win32 build fix.
14460
14461 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14462
14463         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14464         processor if it is set.
14465
14466 2007-06-21  Martin Baulig  <martin@ximian.com>
14467
14468         * debug-mini.h: New file.
14469
14470         * debug-mini.c
14471         (mono_debugger_insert_breakpoint_full): Moved here from
14472         ../metadata/mono-debug-debugger.c.
14473         (mono_debugger_remove_breakpoint): Likewise.
14474         (mono_debugger_breakpoint_callback): Likewise.
14475
14476 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14477
14478         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14479         changes in MonoGenericClass.
14480
14481 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14482
14483         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14484
14485 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14486
14487         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14488         removal of MonoGenericMethod.
14489
14490 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14491
14492         * mini-exceptions.c: hooks for the exception events profiling API.
14493
14494 2007-06-14  Randolph Chung  <tausq@debian.org>
14495
14496         * Makefile.ma: Add hppa target.
14497         * mini-arch.h: Include mini-hppa.h
14498         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14499         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14500         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14501
14502 2007-06-14  Randolph Chung  <tausq@debian.org>
14503
14504         * inssel.brg: Add rules for "chained" compare-branch operations so that
14505         a single compare op can affect multiple branches.  Adjust cost for
14506         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14507         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14508         cost for some rules so that they can more easily be overridden by
14509         per-arch rules (with fixes from lupus).
14510         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14511
14512 2007-06-13  Randolph Chung  <tausq@debian.org>
14513
14514         * mini-ops.h: Reorder branch ops so that they match the order of the
14515         corresponding CEE_* ops.  The code expects them this way.
14516         Add new ops for HPPA target.
14517         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14518
14519 2007-06-13  Randolph Chung  <tausq@debian.org>
14520
14521         * mini-exceptions.c: Handle cases where the stack grows towards
14522         larger addresses.
14523         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14524
14525 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14526
14527         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14528         counter.
14529         * driver.c: explain where a non-matching corlib is found.
14530
14531 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14532
14533         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14534
14535 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14536
14537         * mini-exceptions.c: Generate a method profile leave event during
14538         an exception to ensure that the profiler gets notified.
14539
14540 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14541
14542         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14543         branch.
14544
14545         * cpu-amd64.md: Add long_and/or/xor opcodes.
14546
14547 2007-06-06  Wade Berrier  <wberrier@novell.com>
14548
14549         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14550         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14551         length of instruction shr_imm (expected 8, got 10)
14552
14553 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14554
14555         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14556
14557 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14558
14559         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14560         MonoInternalHashTable again (fixed bug in the internal hash table
14561         code).
14562
14563 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14564
14565         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14566         Have to figure out what makes it crash the SWF regression.
14567
14568 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14569
14570         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14571
14572 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14573
14574         * mini.c: optimize out the type check when storing null in a
14575         reference array.
14576
14577 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14578
14579         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14580         MonoInternalHashTable.
14581
14582 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14583
14584         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14585         signed integer methods.
14586
14587 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14588
14589         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14590         permanently since the current approach doesn't work.
14591
14592 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14593
14594         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14595         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14596
14597 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14598
14599         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
14600         the sreg2==rdx case.
14601         
14602         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
14603         account if it contains a rex prefix.
14604         (peephole_pass): Handle OP_FMOVE as well.
14605
14606 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14607
14608         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
14609         as it causes regressions.
14610
14611 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14612
14613         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
14614         static case as well.
14615
14616         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
14617
14618         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14619         (mono_arch_get_this_arg_from_call): Ditto.
14620
14621         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
14622
14623         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
14624         invoke_impl field.
14625
14626         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14627         (mono_arch_get_this_arg_from_call): Ditto.
14628
14629         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
14630         
14631         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
14632         try to create optimized invoke code and use that for further invocations. 
14633         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
14634
14635         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
14636
14637 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
14638
14639         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
14640         sealed classes or methods.
14641         *devirtualization.cs: tests for the new optimization
14642
14643 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14644
14645         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14646         by the update_volatile () function.
14647
14648 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14649
14650         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14651         require it.
14652
14653         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14654
14655 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14656
14657         * mini.c: Add configure checks for header files.
14658         * mini-x86.c: Add configure checks for header files.
14659         * trace.c: Add configure checks for header files.
14660         * aot-runtime.c: Add configure checks for header files.
14661         * aot-compiler.c: Add configure checks for header files.
14662         * driver.c: Add configure checks for header files.
14663         * mini-codegen.c: Add configure checks for header files.
14664         
14665         Code is contributed under MIT/X11 license.
14666
14667 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14668
14669         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14670         icompare_imm -128 + op_iclt. Fixes #81703.
14671
14672 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14673
14674         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14675
14676 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14677
14678         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14679         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14680         so that all isinst checks now use "interface_bitmap".
14681
14682 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14683
14684         * cpu-amd64.md (jmp): Fix a warning.
14685
14686         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14687
14688         * basic.cs: Add new regression test.
14689
14690         * basic.cs: Remove test which is now in basic-long.cs.
14691
14692         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14693
14694         * basic-long.cs: Add new test.
14695         
14696 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14697
14698         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14699
14700 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14701
14702         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14703
14704         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14705         places.
14706         
14707         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14708         throwing code a bit.
14709
14710         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14711         the exception throwing code a bit.
14712
14713         * mini-x86.c (get_call_info): Allocate result from a mempool.
14714
14715 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
14716
14717         * aot-compiler.c (find_typespec_for_class): Fix the assert.
14718
14719         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14720
14721         * mini.h (MonoCompile): Add 'token_info_hash' field.
14722
14723         * mini.c: Save token->method associations during compilation so the AOT 
14724         compiler can use it.
14725         
14726         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
14727         which reference generic classes and methods.
14728
14729 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
14730
14731         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
14732
14733         * aot-compiler.c (compile_method): Fix a typo in a comment.
14734
14735         * aot-runtime.c (decode_cached_class_info): Skip generic types.
14736
14737         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
14738         everything generic.
14739
14740         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
14741
14742 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
14743
14744         * mini.h (MonoCompile): Add 'args' field.
14745
14746         * mini.c (mono_compile_create_vars): Store variables representing the arguments
14747         into cfg->args.
14748
14749         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
14750
14751 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
14752
14753         * mini.c (mono_compile_get_interface_var): Remove this unused function.
14754
14755         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
14756
14757         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
14758         opcodes for some opcodes.
14759
14760         * mini.h *.brg *.c: Use the new opcodes.
14761
14762 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14763
14764         * mini.h: Bumped aot revision.
14765
14766         * inssel.brg: modified code generation of type checks for interfaces
14767         to use the new "MonoClass.interface_bitmap" instead of the old
14768         "MonoClass.interface_offsets".
14769
14770 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
14771
14772         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
14773
14774 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
14775
14776         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
14777         64 bit platforms.
14778
14779 2007-04-27  Neale Ferguson <neale@sinenomine.net>
14780
14781         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
14782
14783 2007-04-27  Wade Berrier  <wberrier@novell.com>
14784
14785         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
14786         mini.h) to fix build.
14787
14788 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
14789
14790         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
14791         
14792         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
14793         causes the corlib unit tests to fail.
14794
14795 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
14796
14797         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
14798
14799         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
14800
14801         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
14802         opcodes to the comparison relations.
14803
14804         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
14805         opcodes to their types.
14806         
14807         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14808
14809         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14810         it in cfg->arch.cinfo.
14811
14812         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14813
14814         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14815         cfg->cil_offset_to_bb.
14816
14817 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14818
14819         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14820         created becase of initlocals.
14821
14822 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14823
14824         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14825         Sergey Tikhonov <tsv@solvo.ru>.
14826
14827 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14828
14829         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14830
14831 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14832
14833         * cpu-s390.md (break): Correct the length of break instruction.
14834
14835 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14836
14837         * mini.c: fix a couple of soft-float issues and comments.
14838
14839 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14840
14841         * trace.c (is_filenamechar): - is also a filename char.
14842
14843 2007-04-15  Neale Ferguson <neale@sinenomine.net>
14844
14845         * mini-s390.c: Correct checking for enum type in return value processing.
14846
14847 2007-04-14  Raja R Harinath  <rharinath@novell.com>
14848
14849         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
14850         (version.h): Makefile is in the build directory.
14851
14852 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
14853
14854         * mini-amd64.h: fix for assertion failure on Solaris/amd64
14855
14856 2007-04-11  Martin Baulig  <martin@ximian.com>
14857
14858         * mini.c (can_access_member): Fix handling of generic classes;
14859         fixes #81259.
14860
14861 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
14862
14863         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
14864
14865 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
14866
14867         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
14868
14869 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14870
14871         * mini-codegen.c: make sure the right spill amount is
14872         used for fp or integer registers (fixes the float_sub_spill() on ppc).
14873
14874 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
14875
14876         * mini-ppc.c: fixes for the fp_branch_nan test.
14877
14878 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
14879
14880         * basic.cs: Comment out new test which still fails on ia64.
14881
14882 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14883
14884         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
14885
14886 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14887
14888         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
14889
14890 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
14891
14892         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
14893         on 64 bit machines. Fixes part of #80738.
14894
14895         * basic.cs: Add regression test.
14896
14897 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14898
14899         * inssel.brg basic.cs: Revert previous change to fix build.
14900
14901         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
14902         platforms.
14903         
14904         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
14905
14906         * basic.cs: Add new regression test.
14907
14908 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14911         many arguments.
14912
14913 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14914
14915         * cpu-s390x.md: Correct length of break instruction.
14916
14917 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14918
14919         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
14920         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
14921
14922 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
14923
14924         * *.c: Begin WIN64 port.
14925         * mini.c:  Use correct register in profiler.
14926         * mini-amd64.c: No inline assembly on Win64.
14927         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
14928         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
14929         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
14930         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
14931         mono_arch_ip_from_context for Win64.
14932         
14933         Contributed under MIT/X11 license.
14934
14935 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
14936
14937         * exceptions-amd64.c (seh_handler): Ditto.
14938
14939         * exceptions-x86.c (seh_handler): Fix a memory leak.
14940
14941 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
14942
14943         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
14944         mini-s390x.c: fixed peephole optimizations to deal
14945         correctly with 1 and 2 byte reload avoidance.
14946
14947 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
14948
14949         * cpu-s390.md, cpu-s390x.md: update localloc length.
14950
14951 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14952
14953         * cpu-g4.md: added missing descriptions.
14954
14955 2007-03-14  Miguel de Icaza  <miguel@novell.com>
14956
14957         *  Makefile.am: Add support so the tail tests are not executed on
14958         PowerPC as that is a known limitation of the PowerPC port.
14959
14960 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14961
14962         * runmdesc.bat:  Move to msvc directory.
14963         
14964 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14965
14966         * runmdesc.bat:  Run executable that was produced by the current
14967         target and sent via an argument.
14968         
14969 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
14970
14971         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
14972         #81102.
14973
14974         * generics.2.cs: Add regression test.
14975
14976 2007-03-09  Wade berrier  <wberrier@novell.com>
14977
14978         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
14979
14980 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
14981
14982         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
14983         AOT code depends on this.
14984
14985 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14986
14987         * mini.c: more precise tracking of types in the eval stack
14988         (part of fix for bug #81044).
14989
14990 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
14991
14992         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
14993
14994         * aot-compiler.c (encode_patch): Remove an obsolete comment.
14995
14996 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
14997
14998         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
14999
15000         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15001
15002 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15003
15004         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15005         a pointer on 64 bit systems. Fixes #80190.
15006
15007         * iltests.il: Add new regression test.
15008
15009 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15010
15011         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15012
15013 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15014
15015         * trace.c: Remove an erroneous alignemnt check when tracing.
15016           Fixes --trace on OSX86.
15017
15018 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15019
15020         * mini-$(arch).h: initialize SP in context for all the archs.
15021
15022 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15023
15024         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15025         regressions in the thread tests.
15026
15027 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15028
15029         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15030         - fixed implementation of LOCALLOC opcode
15031         - implemented non-un compare for floats
15032         - code cleanup
15033         - implementation of FDIV and CKFINITE opcodes
15034         - fixes for latest mono updates
15035         - additional arch opcodes
15036
15037 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15038
15039         * Makefile.am: simplify and merge rules for cross-compilation.
15040
15041 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15042
15043         * local-propagation.c: Actually *apply* the fix for bug 80591...
15044
15045 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15046
15047         * mini-exceptions.c: backuot part of the last change
15048         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15049
15050 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15051         * inssel.brg: Fix bug 59286.
15052
15053
15054 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15055
15056         * mini-exceptions.c: patch from Zoltan to correctly check for
15057         stack boundaries (using the stack register, not the frame register),
15058         fixes bugs #80724, #79717.
15059
15060 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15061
15062         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15063         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15064
15065         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15066         presence of frame pointer elimination.
15067
15068 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15069         
15070         * mini-x86.h: NetBSD UCONTEX_REG defines.
15071
15072 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * inssel-amd64.brg: Fix amd64 build.
15075
15076 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15077
15078         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15079         on amd64.
15080
15081 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15082
15083         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15084         ends.
15085
15086         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15087
15088 2007-01-30 Mark Mason <mason@broadcom.com>
15089
15090            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15091            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15092            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15093            beginning support for CEE_JMP [not quite working yet]
15094            * tramp-mips.c: LMF handling now works
15095         
15096 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15097
15098         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15099
15100         * mini.h (NULLIFY_INS): New macro.
15101
15102 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15103
15104         * mini.c: statistical profiler fix for windows, patch
15105         from Tor Lillqvist (tml@novell.com).
15106
15107 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15108         * local-propagation.c: Fix bug 80591.
15109
15110 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15111
15112         * Makefile.am: put back the --export-dynamic option as with
15113         the previous gmodule flags (thanks to Robert Jordan).
15114
15115 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15116
15117         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15118
15119         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15120         simplify and speed up the local register allocator. Also rename some fields
15121         like iassign->vassign.
15122         
15123         * regalloc.c: Remove some functions which are no longer used since their
15124         inlined version is in mini-codegen.c.
15125         
15126         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15127
15128         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15129
15130 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15131
15132         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15133         narrowing. Fixes #80622.
15134
15135         * iltests.il: Add new regresssion test. 
15136
15137 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15138
15139         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15140         debug-debugger.c, debug-debugger.h: warning fixes.
15141         * driver.c: updated copyright year and made it fit in one line.
15142
15143 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15144
15145         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15146
15147 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15148
15149         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15150
15151         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15152
15153         * iltests.il: Add new test for bug #80507.
15154
15155 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15156
15157         * mini-arm.h: use soft-float also on vfp for now.
15158
15159 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15160
15161         * mini.c: fix some more soft-float issues.
15162
15163 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15164
15165         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15166
15167 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15168         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15169         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15170         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15171
15172 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15173
15174         * mini-arm.c: typo fix.
15175
15176 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15177
15178         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15179
15180 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15181
15182         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15183         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15184
15185         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15186
15187         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15188
15189         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15190         
15191         * inssel.brg: Fix a warning.
15192
15193         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15194
15195         * abcremoval.c ssa.c ssapre.c: Update after this change.
15196         
15197         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15198
15199         * dominators.c (df_set): Use mono_bitset_union_fast.    
15200
15201 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15202
15203         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15204         mini-codegen.c: reduce relocations and memory usage for the cpu
15205         description.
15206
15207 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15208
15209         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15210
15211         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15212         to reduce their size.
15213
15214 2007-01-19 Mark Mason <mason@broadcom.com>
15215
15216         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15217         * mini-mips.c: more configuration macros, support long conditional branches, additional
15218         asserts, fix epilog instrumentation.
15219         * mini-mips.h: use standard stack walk
15220         * cpu-mips.md: increase size of div, rem and conditional branches
15221         
15222 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15223
15224         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15225         to cpu spec data.
15226
15227 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15228
15229         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15230         (compile_method): Ditto.
15231
15232         * aot-runtime.c (decode_klass_info): Ditto.
15233
15234         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15235         needed by the code generated by inssel.brg. Also fix a warning.
15236
15237 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15238
15239         * mini.c: deal with enums that become genericinsts by
15240         being nested in a generic class (bug #79956).
15241
15242 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15243
15244         * mini.c: match the generic definition to check for
15245         private access with generic types (bug #78431).
15246
15247 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15248
15249         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15250         to make life easier for people cross-compiling that insist on not
15251         using scratchbox.
15252
15253 2007-01-17 Mark Mason <mason@broadcom.com>
15254
15255         * inssel-long.brg: patch to deal with mips missing flags
15256         * inssel-long32-mips.brg: implement overflow checks
15257         * insset-mips.brg: implement overflow checks
15258         * mini-mips.h: implement conditional exception handling
15259         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15260           Remove unused code, minor cleanups.
15261         * exceptions-mips.c: minor cleanups
15262         * mini-ops.h: add mips conditional exception ops
15263         * cpu-mips.md: add mips conditional exception ops
15264
15265         
15266 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15267
15268         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15269         to deal with mips missing of flags.
15270
15271 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15272
15273         * exceptions-ppc.c: execute fault handlers.
15274
15275 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15276
15277         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15278
15279 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15280
15281         * mini.c: handle also floating point values in initialize_array.
15282
15283 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15284
15285         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15286         array initialization and make it conditional on the intrins option.
15287
15288 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15289
15290         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15291         relocations and put the patch info names close to the enum definition.
15292
15293 2007-01-15 Mark Mason <mason@broadcom.com>
15294
15295         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15296
15297 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15298
15299         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15300
15301 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15302
15303         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15304
15305 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15306
15307         * Makefile.am: distribute the mips sources.
15308
15309 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15310
15311         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15312         directly.
15313
15314 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15315
15316         * cpu-x86.md: back out for now as this triggers other regressions.
15317
15318 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15319
15320         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15321         to eax:edx, so ecx can't get allocated to them (bug #80489).
15322
15323 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15324
15325         * mini.c, mini-exceptions.c: enabled running fault handlers
15326         (bug #80469).
15327
15328 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15329
15330         * driver.c: If nothing fail, do not use the string "failed",
15331         because it makes it very annoying to view test result logs on the
15332         web. 
15333
15334 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15335
15336         * debug-debugger.c (mono_debugger_main): Rename "main" to
15337         "main_method" to prevent a warning.
15338
15339         Remove a warning for unused field.
15340
15341 2006-12-28  Martin Baulig  <martin@ximian.com>
15342
15343         * debug-debugger.c
15344         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15345
15346 2006-12-22  Martin Baulig  <martin@ximian.com>
15347
15348         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15349         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15350         seperate `.mdb_debug_info' section, so we can access it from the
15351         debugger even if the binary is stripped.
15352
15353         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15354         from the `.mdb_debug_info' here to prevent the linker from
15355         removing that section.
15356
15357         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15358         mdb-debug-info64.s.
15359
15360 2006-12-19  Robert Jordan  <robertj@gmx.net>
15361
15362         * mini-x86: enable the code to return small structures in
15363         registers for FreeBSD as well. Fixes bug #80278.
15364         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15365
15366 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15367
15368         * mini-x86.c: align the stack when calling the profiler
15369         function instrumenting the prolog (on OSX).
15370
15371 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15372
15373         * mini.c: emit a break opcode where Debugger.Break () is called.
15374
15375 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15376
15377         * mini.c (mono_method_to_ir): Provide useful information on this
15378         assert, to prevent others from debugging like I did.
15379
15380 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15381
15382         * mini.c: enable code which was incorrectly commented
15383         (bug #80235).
15384
15385 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15386
15387         * mini-x86.c: enable on OSX, too, the code to return small
15388         structures in registers.
15389
15390 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15391
15392         * mini-x86.c: remove the use of the dynamic code manager here, too.
15393
15394 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15395
15396         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15397         mono_debugger_create_notification_function() to use
15398         mono_global_codeman_reserve () instead of a dynamic code manager.
15399
15400 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15401
15402         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
15403         ves_array_element_address() jit icall and use a generated
15404         managed method instead (which is about 4 times faster for a rank 3
15405         array access).
15406
15407 2006-11-29  Mark Mason  <mason@broadcom.com>
15408
15409         * basic-calls.cs: additional tests for passing
15410         structures as function arguments.
15411
15412 2006-11-29  Mark Mason  <mason@broadcom.com>
15413
15414         * mini-mips.h: disable custom exception handling
15415         * mini-mips.c: throw/rethrow should use jalr to call
15416         exception stubs.  Fixed bug with passing structures
15417         by value. More support for tracing floating point
15418         functions.
15419
15420 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15421
15422         * mini.c: fixed typo in the soft-float ldind.r4 handling
15423         (bug #80086).
15424
15425 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15426
15427         * mini.c, mini.h, driver.c: added --runtime command line
15428         option to select a different runtime than the autodetected one.
15429         * jit.h: added API for embedders to initialize with a specific
15430         runtime version.
15431
15432 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15433
15434         * mini.c: handle also boxing of r4 values (bug #80024).
15435
15436 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15437
15438         * mini-ppc.c: force indirect calls until we reserve
15439         enough address space for all the generated code.
15440
15441 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15442
15443         * exceptions-arm.c: workaround bugs in the libc definition
15444         of struct ucontext.
15445
15446 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15447
15448         * inssel.brg: fixes from me and Mark Mason.
15449
15450 2006-11-23  Dick Porter  <dick@ximian.com>
15451
15452         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15453         semaphore display now we've fixed the initial value
15454
15455 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15456
15457         * inssel.brg: partially revert the last change to fix the build.
15458
15459 2006-11-21  Mark Mason  <mason@broadcom.com>
15460
15461         * inssel.brg: Add and use compare-and-branch macros to support
15462         architectures that do not have condition code registers (ie. MIPS).
15463         * *-mips.{c,brg,md}: Fix copyright statements
15464
15465 2006-11-20  Mark Mason  <mason@broadcom.com>
15466
15467         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15468         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15469         * mini.h: Added declaration for mono_print_ins()
15470         * mini-codegen.c: added ins_spec initializer for MIPS
15471         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15472         vreg to be virtual and hreg to be non-virtual.
15473         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15474         is not yet working/implemented correctly.
15475         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15476         non-static, fixup calls to print_ins() from other parts in the file.
15477
15478 2006-11-20  Mark Mason  <mason@broadcom.com>
15479
15480         * basic-calls.cs: added tests for passing structures as arguments
15481         to calls.
15482
15483 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15484
15485         * inssel-long32.brg: optimize signed division by power of two.
15486
15487 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15488
15489         * mini-arm.c: added support for interworking with thumb code
15490         (mono must be still be built using the ARM instruction encoding).
15491
15492 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15493
15494         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15495         verifier has different rules for it.   Fixes a few verifier issues
15496         in the test suite.
15497
15498         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15499         at the end, so people know what happened.
15500
15501 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15502
15503         * brach-opts.c: in optimize_exception_target() make sure we
15504         are in a catch clause (fixes bug #79871).
15505
15506 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15507
15508         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15509         more soft-float support fixes.
15510
15511 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15512
15513         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15514         that are passed half on the stack and half in registers.
15515
15516 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15517
15518         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15519         more mips integration work from Mark E Mason 
15520         <mark.e.mason@broadcom.com>.
15521
15522 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15523
15524         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15525         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15526         tramp-mips.c: added sources for the mips port, not
15527         integrated in the build yet. Contributed by
15528         Mark E Mason <mark.e.mason@broadcom.com>.
15529
15530 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15531
15532         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15533
15534 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15535
15536         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15537         put the soft-float rules in its own file since it seems to
15538         break s390 compilation.
15539
15540 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15541
15542         * mini-arm.c: fixed wrnings.
15543
15544 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15545
15546         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15547         inssel-arm.brg: ARM support for soft-float.
15548
15549 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15550
15551         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15552         loads and stores of 32 bit fp values.
15553
15554 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15555
15556         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15557
15558         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15559         works. Fixes #79852 and #79463.
15560
15561 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15562
15563         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15564         more soft-float support WIP and fixes.
15565
15566 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15567
15568         * mini-arm.c: some VFP updates.
15569
15570 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15571
15572         * mini-exceptions.c: 0 is a valid local var offset in some
15573         architectures, don't assert (bug #78508).
15574
15575 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15576
15577         * exceptions-arm.c: fixed off by one error in stack walk code.
15578
15579 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15580
15581         * mini.h, mini.c: more precise tracking of type load exceptions.
15582
15583 2006-11-03  Robert Jordan  <robertj@gmx.net>
15584
15585         * Makefile.am: [WIN32] Add monow.exe target.
15586         * driver.c: [WIN32] Don't detach the console when debugging.
15587         Fixes bug #79797.
15588         
15589 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15590
15591         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15592
15593 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15594
15595         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15596
15597         * driver.c (mini_regression): Fix --regression with AOT.
15598
15599         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
15600
15601 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
15602
15603         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
15604
15605         * mini-sparc.h: Don't use sigaction on sparc/linux.
15606
15607         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
15608
15609         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
15610
15611         * mini-exceptions.c: Add proper include files for getpid ().
15612
15613 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
15614
15615         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
15616         address instead of a MonoJitInfo* to avoid decoding the exception info for the
15617         method.
15618
15619         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
15620         name cache to reduce its size.
15621
15622         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
15623
15624 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15625
15626         * mini-x86.c: Save/restore the current LMF structure more efficiently using
15627         the mono_lmf TLS variable.
15628
15629         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
15630         trampoline lmf frames.  
15631
15632         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
15633
15634 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
15635
15636         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
15637         the mono_lmf TLS variable.
15638
15639         * mini-exceptions.c: Access the LMF structure through accessors.
15640
15641         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15642         variable instead of in jit_tls->lmf.
15643
15644         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15645         
15646         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15647         trampoline lmf frames.
15648
15649         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15650
15651 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15652
15653        * mini.c trace.c mini-x86.c: Revert these too.
15654         
15655        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15656        signature change.
15657
15658 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15659
15660         * genmdesc.c: removed now dead code.
15661
15662 2006-10-09  Robert Jordan <robertj@gmx.net>
15663
15664         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15665
15666 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15667
15668         * mini.h: do not leave gaps in the opcode values.
15669
15670 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15671
15672         * jit-icalls.h: flag functions as internal here, too.
15673
15674 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15675
15676         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15677         functions with the internal attribute.
15678
15679 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15680
15681         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15682
15683 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15684
15685         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15686         for soft-float.
15687
15688 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15689
15690         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15691         tail calls as on other platforms.
15692
15693         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15694
15695         * iltests.il: Add a few tailcall tests.
15696
15697 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15698
15699         * driver.c: fix loop for old compilers (bug #79521).
15700
15701 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15702
15703         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15704
15705         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15706
15707         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15708         metadata without any code.
15709
15710         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15711         more precise debugging information using gdb.
15712
15713 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
15714
15715         * inssel-ia64.brg: Make the helper methods static.
15716
15717 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15718
15719         * inssel-x86.brg: make the helper methods static.
15720
15721 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
15722
15723         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
15724
15725 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15726
15727         * mini.c: updates for monoburg changes.
15728         * inssel.brg: make a few helper functions static as they should.
15729
15730 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
15731
15732         * Makefile.am: Move mini-codegen.c to common_sources.
15733
15734 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15735
15736         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
15737         instructions.
15738         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
15739         mini-ppc.h: port to use the common local register allocator.
15740
15741 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15742
15743         * mini.h: Remove the comment too then.
15744
15745 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
15746
15747         * mini.h: put back backend.data which is to be used shortly and
15748         doesn't increase the size of MonoInst. If any 64 bit arch aligned
15749         pointers on 4 byte boundaries it'd have much bigger issues running
15750         and you can ifdef it out anyway.
15751
15752 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15753
15754         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
15755         MonoInst size by 4 bytes on 64 bit machines.
15756
15757 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
15758
15759         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
15760         replacement with more meaningful field names. Arch maintainers, please
15761         check the assigned names are good enough for your arch.
15762
15763 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15764
15765         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
15766         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
15767
15768 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
15769
15770         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
15771         relocations and memory requirements, put the optimization flags
15772         definitions in their own file.
15773
15774 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
15775
15776         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
15777
15778         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
15779
15780 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
15781
15782         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
15783
15784 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
15785
15786         * inssel.brg: use the correct function to get the size of an item
15787         in an array, given an element class.
15788         * aot-compiler.c: do not access class->class_size directly.
15789
15790 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
15791
15792         * mini.h, debug-mini.c: added a debugging function to print
15793         info about local variables and arguments in a jitted method.
15794
15795 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
15796
15797         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15798
15799         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
15800
15801 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15802
15803         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
15804         inner and outer loops when passing vtypes.
15805
15806 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
15807
15808         * mini-ppc.c: take into account the cpu errata for cache flushing
15809         which caused some random errors (bug #79381).
15810
15811 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15812
15813         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15814         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15815
15816 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15817
15818         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15819         loaded.
15820
15821         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15822         freebsd ports tree.
15823
15824         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15825         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15826
15827         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15828         displacement.
15829
15830 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15831
15832         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15833
15834 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15835
15836         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15837         macro does not have to be changed during debugging.
15838
15839         * 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>.
15840
15841         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15842
15843         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
15844         
15845         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
15846         MONO_ARCH_NO_EMULATE_MUL is defined.
15847
15848         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
15849
15850         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
15851
15852         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
15853
15854         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
15855         
15856 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
15857
15858         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
15859         stuff to mini-exceptions.c where it is used.
15860
15861         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
15862         setup code, the real one is in mini-exceptions.c.
15863
15864         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
15865         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
15866         some changes from the freebsd ports tree.
15867
15868         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
15869         constants.
15870         
15871         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
15872
15873 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
15874
15875         * mini.c: on Linux, check for /proc to be mounted
15876         (bug# 79351, novell bug#201204).
15877
15878 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15879
15880         * mini.c: handle cases where pthread_attr_getstack() behaves
15881         incorrectly (bug #78096).
15882
15883 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
15884
15885         * mini-arm.c: support larger stack frames (bug #79272).
15886
15887 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
15888
15889         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
15890
15891         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
15892         tokens.
15893
15894         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
15895         mono_class_from_name () to find a class from its name.
15896
15897         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
15898
15899 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
15900
15901         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
15902
15903 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
15904
15905         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
15906
15907 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
15908
15909         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
15910         callinfo->trampoline.
15911
15912         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15913         fixes #79271.
15914         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
15915         future.
15916
15917 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
15918
15919         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
15920
15921 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
15922
15923         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
15924         stats.method_trampolines, it is already done by the generic trampoline code.
15925
15926         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
15927         
15928 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15929
15930         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
15931
15932         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
15933
15934         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
15935
15936         * mini.c (print_jit_stats): Print mscorlib mempool size too.
15937         
15938         * mini.c (print_jit_stats): Print new stats.
15939
15940         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15941
15942 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15943
15944         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
15945         Address on two dimensional arrays. Fixes #78729.
15946
15947         * mini.h (MonoCompile): Add a 'skip_visibility' field.
15948
15949         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
15950         a method.
15951
15952         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
15953
15954         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
15955         #79130.
15956         
15957         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
15958         a race condition.
15959         (mini_get_ldelema_ins): Ditto.
15960
15961 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
15962
15963         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
15964         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
15965         Fixes #79213.
15966
15967 2006-08-29 Neale Ferguson <neale@sinenomine.net>
15968
15969         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
15970         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
15971
15972         * exceptions-s390x.c: Cosmetic change.
15973
15974         * tramp-s390.c: Fix warning.
15975
15976         * cpu-s390.md: Correct length of mul_imm.
15977
15978 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
15979
15980         * aot-compiler.c: added binary writer with ELF backend
15981         implementation (only on Linux/x86 for now).
15982
15983 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15984
15985         * Makefile.am: Don't run net 2.0 AOT tests.
15986
15987         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
15988         (mono_compile_assembly): Skip net 2.0 assemblies as well.
15989
15990         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
15991
15992 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15993
15994         * aot-compiler.c: simplified and refactored the asm-writing code
15995         to allow different backends.
15996
15997 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
15998
15999         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16000
16001         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16002         little. Share patches of type TYPE_FROM_HANDLE as well.
16003
16004         * mini.c (mono_patch_info_equal): New helper function.
16005         (mono_patch_info_hash): Ditto.
16006
16007         * aot-compiler.c (emit_method_code): Fix s390 build.
16008
16009         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16010         is not handled because it is stored as a flag and not as a type ctor. Fixes
16011         #79016.
16012
16013 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16014
16015         * aot-compiler.c: Fix computation of GOT slot statistics.
16016         
16017         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16018         Also remove support for not PIC AOT.
16019
16020         * mini.h: Bump AOT file format version.
16021
16022         * objects.cs: Add a test for #78990.
16023
16024         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16025         (peter.dettman@iinet.net.au). Fixes #79087.
16026
16027         * basic-long.cs: Add a test for the above.
16028
16029 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16030
16031         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16032         
16033         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16034         code somewhat.
16035
16036 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16037
16038         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16039         exceptions.
16040
16041 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16042
16043         * mini.c: Don't verify COM proxy invoke calls
16044         
16045
16046 2006-08-10  Dick Porter  <dick@ximian.com>
16047
16048         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16049         which process is holding semaphores locked.
16050
16051 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16052
16053         * mini-ia64.c mini-amd64.c: Fix #79027.
16054
16055         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16056
16057         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16058
16059         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16060         implicit arguments in a vararg call. Fixes #79027.
16061
16062 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16063
16064         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16065         (mono_get_array_new_va_signature): Ditto.
16066
16067 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16068
16069         * aot-runtime.c: Call init_plt lazily.
16070
16071         * inssel-long.brg: Fix unsigned long->int conversion.
16072
16073         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16074
16075         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16076         that most data is now in the .rss/.data section.
16077
16078 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16079
16080         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16081
16082         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16083
16084         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16085
16086         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16087
16088         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16089         virtual call. Fixes #79010.
16090
16091         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16092         and use the result as the this argument in the real call.
16093
16094         * generics.2.cs: Add a new test for #79010.
16095         
16096 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16097
16098         * mini-x86.c: Fix a warning.
16099
16100         * aot-compiler.c: Add a bunch of statistics.
16101
16102         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16103
16104 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16105
16106         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16107
16108 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16109
16110         * 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>.
16111
16112 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16113
16114         * mini.c (mono_method_to_ir): Obtain the original method in the
16115         CIL stream and use this to perform validation.
16116
16117         Fixed: #78816
16118
16119 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16120
16121         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16122         (mono_arch_call_opcode): Ditto.
16123
16124         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16125         #78826.
16126
16127         * mini.c (mono_patch_info_dup_mp): New helper function.
16128         
16129         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16130         compilation. Fixes #78827.
16131
16132 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16133
16134         * declsec.c: Use original security informations for
16135           MONO_WRAPPER_MANAGED_TO_MANAGED.
16136
16137 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16138
16139         * mini.c: Allow Com Interop methods/classes and
16140         don't verify COM wrapper calls
16141         
16142
16143 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16144
16145         * inssel-long32.brg: Fix long->i4 checked conversion.
16146
16147         * exceptions.cs: Add a test for the above.
16148
16149 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16150
16151         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16152
16153         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16154         leaks.
16155
16156         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16157         #78775.
16158
16159 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16160
16161         * mini.c: Fix solaris/x86 exception handling.
16162
16163         * Makefile.am: Get rid of $(ICU_LIBS).
16164
16165 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16166
16167         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16168         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16169         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16170
16171         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16172
16173         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16174         this function causes a SIGSEGV.
16175
16176 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16177
16178         * mini.c: Remove unused solaris/x86 includes.
16179
16180 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16181
16182         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16183
16184 2006-06-20  Jb Evain  <jbevain@gmail.com>
16185
16186         * cpu-g4.md: fix max length of start_handler instruction.
16187
16188 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16189         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16190
16191 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16192         * ssa.c: Fixed bug 78653 for SSA based deadce.
16193         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16194         MonoInst.flags, used in SSA based deadce.
16195         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16196         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16197
16198 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16199
16200         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16201         it can end up using non executable memory on ppc64 systems
16202         running ppc32 userspace (fix from Johannes Berg).
16203
16204 2006-06-14  Dick Porter  <dick@ximian.com>
16205
16206         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16207         4.1.1
16208
16209 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16210         * mini.c: Made so that inline is locally disabled if it would
16211         trigger a .cctor, because too many apps depend on this behavior
16212         (which seems to be also the one of the MS CLR).
16213
16214 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16215
16216         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16217         No idea why this worked before.
16218
16219         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16220         which branch to outer exception clauses since they could skip the
16221         inner finally clauses. Fixes #78633.
16222
16223         * exceptions.cs: Add a test for the above.
16224
16225         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16226         Fixes #78629.
16227
16228         * iltests.il: Add a test for the above.
16229
16230 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16231
16232         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16233         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16234
16235         * iltests.il: Add a test for the above.
16236
16237 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16238
16239         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16240         
16241         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16242         methods as instrinsics.
16243
16244 2006-06-09  Wade Berrier <wberrier@novell.com>
16245
16246         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16247         (simple-cee-ops.h ssapre-mini-ops.h)
16248
16249 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16250
16251         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16252         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16253         instruction).
16254         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16255         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16256
16257 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16258
16259         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16260
16261 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16262
16263         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16264         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16265         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16266         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16267         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16268         of opcodes, so that bug 78549 should not happen again.
16269         * ssapre.c: Updated to use the renamed files.
16270
16271 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16272
16273         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16274         in OP_ATOMIC_EXCHANGE_I4.
16275
16276 2006-06-07  Wade Berrier <wberrier@novell.com>
16277
16278         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16279         in mono_debugger_create_notification_function)
16280
16281 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16282
16283         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16284         
16285         * mini.c (type_from_stack_type): Disable some changes which do not
16286         seem to work.
16287
16288         * driver.c: Reenable opts.
16289
16290         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16291         of the evaluation stack.
16292         
16293         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16294         evaluation stack trace at entry to the bblock.
16295
16296         * mini.c (merge_stacks): New function to perform verification of stack merges.
16297         Turned off by default.
16298
16299         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16300         STACK_MP.
16301         
16302 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16303
16304         * local-propagation.c: Fixed bug 78549.
16305
16306 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16307
16308         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16309
16310 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16311
16312         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16313         tramp-arm.c, tramp-ia64.c
16314         (mono_debugger_create_notification_function): Update signature to
16315         new signature and use new protocol for creating the notification
16316         function.  
16317
16318         Should fix the build.
16319
16320 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16321
16322         * exceptions-ppc.c (mono_jit_walk_stack)
16323         (ves_icall_get_frame_info): Fix the build
16324
16325 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16326
16327         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16328
16329 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16330
16331         * il2tests.2.il: New file for generics CIL tests.  Add test for
16332         #78019.
16333         * Makefile.am: Update.
16334
16335         Fix #78019
16336         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16337         to nullable types.
16338
16339 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16340
16341         * aliasing.c: Fixed bug 78311.
16342
16343 2006-05-29  Martin Baulig  <martin@ximian.com>
16344
16345         * mini-exceptions.c (mono_find_jit_info): When computing the
16346         native offset, check whether we're actually inside the method's
16347         code; call mono_debug_print_stack_frame() to format the frame.
16348         (ves_icall_System_Exception_get_trace): Call
16349         mono_debug_print_stack_frame() to format the stack frame.
16350         (ves_icall_get_trace): Update to the new debugging API.
16351         (mono_jit_walk_stack_from_ctx): Likewise.
16352         (ves_icall_get_frame_info): Likewise.
16353
16354         * mini.c (get_method_from_ip): Use the new debugging API.
16355         (mono_print_method_from_ip): Likewise.
16356
16357         * exceptions-ppc.c
16358         (mono_jit_walk_stack): Use the new debugging API.
16359         (ves_icall_get_frame_info): Likewise.   
16360
16361 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16362
16363         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16364
16365 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16366
16367         * mini.c: Added "limitator" to inline for debugging.
16368
16369 2006-05-24  Martin Baulig  <martin@ximian.com>
16370
16371         * debug-debugger.c (mono_debugger_init): Create a private,
16372         malloc()-based code manager for the notification function and
16373         intentionally leak it on exit.  This fixes the crash-on-exit race
16374         condition.
16375
16376         * tramp-amd64.c
16377         (mono_debugger_create_notification_function): Added
16378         `MonoCodeManager *' argument.
16379
16380         * tramp-x86.c
16381         (mono_debugger_create_notification_function): Added
16382         `MonoCodeManager *' argument.
16383
16384 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16385
16386         * aliasing.c: Fixed 64 bit issue.
16387         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16388         default since all known bugs are fixed (one more time!).
16389
16390 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16391
16392         * mini.c: write barrier support.
16393
16394 2006-05-23  Martin Baulig  <martin@ximian.com>
16395
16396         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16397         check at the top of the file.
16398
16399 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16400
16401         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16402         reverting changes without reason and without changelog entries.
16403
16404 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
16405
16406         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
16407         to a few opcodes. Fixes #78439.
16408
16409         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
16410         consistency with other archs.
16411
16412         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
16413
16414 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16415
16416         * debug-debugger.c: fix the build.
16417
16418 2006-05-17  Martin Baulig  <martin@ximian.com>
16419
16420         * debug-debugger.c
16421         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16422         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16423         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16424         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16425
16426 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16427
16428         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16429
16430 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16431
16432         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16433         MONO_TYPE_GENERICINST.
16434         
16435         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16436         MONO_TYPE_GENERICINST.
16437
16438 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16439
16440         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16441         #78325.
16442
16443 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16444
16445         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16446         mempool.
16447         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16448
16449 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16450
16451         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16452         mono_trace_cleanup ().
16453
16454         * iltests.il: Fix problem with the newly added test.
16455
16456         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16457         due to register constraints, free up the previous hreg. Fixes #78314.
16458
16459         * iltests.il: Add new test for #78314.  
16460
16461         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16462         Interlocked.Add. Fixes #78312.
16463
16464         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16465         
16466 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16467
16468         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16469
16470 2006-05-05  Martin Baulig  <martin@ximian.com>
16471
16472         * debug-mini.c (mono_debug_open_block): New method.
16473
16474         * mini-amd64.c
16475         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16476         the beginning of each basic block.
16477
16478         * mini-x86.c
16479         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16480         the beginning of each basic block.
16481
16482 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16483
16484         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16485         default until I understand why they break the build on amd64.
16486
16487 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16488
16489         * mini.c (mini_cleanup): Call mono_cleanup ().
16490
16491         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16492         errors.
16493
16494 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16495
16496         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16497         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16498         default since all known bugs are fixed, and I cannot reproduce bug
16499         77944... I'm asking Matt Hargett to test again after this commit.
16500
16501 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16502
16503         * mini-codegen.c: Fixed typo that thrashed inline.
16504
16505 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16506
16507         * dominators.c (compute_dominators): Avoid using a worklist since
16508         it is not correct in some cases. Instead, iterate over all bblocks as
16509         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16510
16511 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16512
16513         * mini.c (mono_jit_compile_method_inner): Use
16514         mono_prepare_exception_from_error that resets the value
16515         internally.
16516
16517 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16518
16519         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16520         
16521 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16522
16523         * aliasing.c: Fixed bug 78210.
16524
16525 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16526
16527         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16528         default until all their problems (or the ones they trigger) are fixed.
16529
16530 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16531
16532         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16533         
16534         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16535         as loaded only after resolving patches since that could invoke the same method.
16536
16537         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16538
16539         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16540         functions.
16541
16542         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16543         AOT loader.
16544
16545         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16546         stack.
16547
16548         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16549         made from AOT code through the PLT table.
16550
16551         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16552         holding the plt offset when a call is made to the aot plt trampoline.
16553         
16554 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16555
16556         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16557         amd64 AOT support.
16558
16559         * Makefile.am (common_sources): Fix build breakage.
16560
16561         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16562         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16563         intra-assembly calls if possible.
16564         
16565         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16566
16567         * mini-trampolines.c: Handle PLT entries.
16568
16569         * mini.c: Avoid creating a GOT var for calls.
16570
16571         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16572         from mscorlib code.
16573
16574         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16575         from mscorlib code.
16576
16577         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16578         AOT code.       
16579
16580         * mini.h: Bump AOT file format version.
16581         
16582         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16583         covers more cases.
16584
16585 2006-04-25  Martin Baulig  <martin@ximian.com>
16586
16587         * driver.c: Disable copyprop, consprop and inline when running
16588         inside the debugger.
16589
16590 2006-04-25  Martin Baulig  <martin@ximian.com>
16591
16592         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16593         with `get_current_thread' and added `detach'.
16594         (MonoDebuggerMetadataInfo): Added `thread_size',
16595         `thread_tid_offset', `thread_stack_ptr_offset' and
16596         `thread_end_stack_offset'.
16597
16598 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16599
16600         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
16601         aot-runtime.c.
16602
16603         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
16604         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
16605
16606         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
16607
16608         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
16609
16610         * aot.c: Add support for ADJUSTED_IID.  
16611
16612 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16613
16614         * aot.c (emit_method_order): Don't align method_order_end.
16615
16616         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
16617         the interface ID changes.
16618
16619 2006-04-21  Dick Porter  <dick@ximian.com>
16620
16621         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
16622         cleaning up a thread.  Fixes the new part of bug 77470.
16623
16624 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
16625
16626         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
16627         to managed wrapper.
16628                      
16629 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16630
16631         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
16632         
16633         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
16634         SIGSEGV. Fixes #78072.
16635
16636         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
16637         unregister our SIGABRT handler.
16638
16639 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
16640
16641         * mini.c: Disabled inline where it can alter the call stack in a
16642         way visible from managed code.
16643         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16644         default.
16645
16646 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16647
16648         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16649         on other platforms. Fixes #78089.
16650
16651 2006-04-13  Martin Baulig  <martin@ximian.com>
16652
16653         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16654         determine whether we're inside the debugger.
16655
16656         * debug-debugger.h
16657         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16658
16659 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16660
16661         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16662         handler clauses. Fixes #78024.
16663
16664         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16665         in the CALL_MEMBASE opcodes. Fixes #78088.
16666         (mono_arch_get_vcall_slot_addr): Ditto.
16667
16668 2006-04-10  Martin Baulig  <martin@ximian.com>
16669
16670         * debug-debugger.c: The thread handling code has now been moved
16671         into ../metadata/threads.c.
16672
16673 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16674
16675         * driver.c (mono_main): Fix --with-gc=none build.
16676
16677         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16678         (mono_spillvar_offset_float): Ditto.
16679         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16680         hreg, not when its !global, since on ia64, there is a third category: stacked
16681         registers.      
16682
16683 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16684
16685         * mini.c: set MonoInst->klass for load field address and a few other
16686         places.
16687
16688 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16689
16690         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16691
16692 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16693
16694         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16695         the branch opt changes.
16696
16697 2006-04-06  Dick Porter  <dick@ximian.com>
16698
16699         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16700         
16701         * wapihandles.c (mini_wapi_seminfo): 
16702         * driver.c (mono_main): Add semaphore info option
16703
16704 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16705
16706         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16707         branch optimization changes. Fixes #78009.
16708
16709 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16710
16711         * mini.c: ignore accessibility of methods in managed->native wrappers.
16712
16713 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16714
16715         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
16716         
16717         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
16718
16719 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16720
16721         * mini.c: Modify the branch optimizations to preserve the invariant that
16722         the entries inside the in_bb and out_bb arrays are unique.
16723         (mono_unlink_bblock): Avoid creation of new arrays.
16724
16725 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
16726
16727         * mini.c (mono_unlink_bblock): Fix regression caused by previous
16728         change (#77992).
16729
16730 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
16731
16732         * mini.c (optimize_branches): Remove the "optimizations" in
16733         the cbranch1/cbranch2 -> branch cases which were causing several
16734         problems in the past. Fixes #77986.
16735
16736 2006-03-31  Chris Toshok  <toshok@ximian.com>
16737
16738         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
16739         default optimizations :(
16740
16741 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
16742
16743         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
16744         branch.
16745
16746 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
16747
16748         * local-propagation.c: Added comments to structs and removed
16749         "Mono" prefixes from local tree mover types.
16750
16751 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
16752
16753         * Makefile.am (arch_sources): Define this for each architecture so 
16754         libmono_la_SOURCES is defined in one place.
16755
16756 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
16757
16758         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
16759         from handles/.
16760
16761 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
16762
16763         * driver.c: print the GC name supplied by configure.
16764
16765 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
16766
16767         * local-propagation.c: Added tree mover, and moved here all the
16768         local propagation code from mini.c
16769         * mini.c: Added support for treeprop, and moved all the local
16770         propagation code to local-propagation.c
16771         * mini.h: Added support for treeprop
16772         * driver.c: Added support for treeprop, enabled consprop, copyprop,
16773         treeprop, inline and deadce by default
16774         * Makefile.am: Added local-propagation.c
16775
16776 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
16777
16778         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
16779
16780 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
16781
16782         * debug-debugger.c: make it compile without the Boehm GC.
16783
16784 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16785
16786         * mini.c: fixed issue with mismatch when an icall is registered
16787         with multiple names but same address.
16788
16789 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16790
16791         * declsec.c, mini-exceptions.c: use write barrier to set reference
16792         fields of managed objects.
16793
16794 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16795
16796         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
16797         (can_access_internals): Fix a warning.
16798
16799         * mini.c (print_method_from_ip): Rename this to 
16800         mono_print_method_from_ip so it gets exported.
16801
16802         * trace.c: Deal with strings inside StringBuilder's containing garbage
16803         and fix memory leaks. Fixes #77848.
16804
16805 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16806
16807         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16808         fixes #77787.
16809
16810 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16811         
16812         * mini-s390.c: Remove OP_X86_TEST_NULL.
16813
16814 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16815
16816         * mini.c: use the correct GetHashCode() for the moving collector.
16817
16818 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16819
16820         * liveness.c: Regalloc spill cost tuning.
16821
16822 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16823         
16824         * mini-s390x.h: Correct S390_LONG macro.
16825
16826         * mini-s390x.c: Cleanup unused code.
16827
16828 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16829
16830         * jit-icalls.h: New file.
16831
16832         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16833         icalls and include that instead of including jit-icalls.c.
16834
16835         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16836         OP_X86 opcodes.
16837
16838 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16839
16840         * mini.c: when checking for member accessibility, also check for
16841         friend assemblies and for explicit interface implementations.
16842
16843 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16844
16845         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
16846
16847         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
16848
16849         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16850         common cases are done first.    
16851
16852         * mini-ops.h: Only define platform specific opcodes on the given platform.
16853
16854         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
16855         branch.
16856         
16857 2006-03-14  Martin Baulig  <martin@ximian.com>
16858
16859         Revert Paolo's change from r57348:
16860
16861         * mini.h: don't use gboolean for bitfields.
16862         * mini.c: verifier changes for fields and methods accessibility.
16863
16864 2006-03-13  Neale Ferguson <neale@sinenomine.net>
16865
16866         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
16867
16868         * mini-s390x.c: Fix conv_r_un.
16869
16870         * cpu-s390, cpu-s390x.md: Fix lengths.
16871
16872 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
16873
16874         * mini.c: nested types have access to all the nesting
16875         levels, not just the enclosing types.
16876
16877 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16878
16879         * mini.c: added a few more verification checks.
16880
16881 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
16882
16883         * liveness.c: Merge optimizations from the linear-il branch.
16884
16885 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16886
16887         * mini-ia64.c (emit_call): Add a comment.
16888
16889         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
16890
16891         * tramp-ia64.c: Fix some warnings.
16892
16893 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
16894
16895         * mini.h: don't use gboolean for bitfields.
16896         * mini.c: verifier changes for fields and methods accessibility.
16897
16898 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16899
16900         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
16901         lazy icall wrapper changes.
16902
16903         * dominators.c: Replace all the dominator algorithms with faster
16904         ones from the linear-il branch.
16905
16906         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
16907         the mempool.
16908
16909         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16910         common cases are done first.
16911
16912         * mini-amd64.c: Fix some warnings.
16913
16914         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
16915         from the mempool.
16916
16917         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
16918         added code.
16919
16920         * mini.h: Add a missing prototype.
16921
16922 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16923
16924         * mini.c: Compile icall wrappers lazily.
16925
16926         * mini-codegen.c: Use printf instead of g_print since its much faster.
16927
16928         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
16929         function.
16930
16931         * mini.c (optimize_branches): Cache the negative result from 
16932         remove_block_if_useless ().
16933
16934         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
16935         Also fix some bblock linking issues.
16936
16937         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
16938         assembly files.
16939
16940         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
16941
16942         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
16943         accessed fields first, for better cache behavior.
16944         
16945 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16946
16947         * mini.c: speedup IList<T> array accesses.
16948
16949 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16950
16951         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
16952         inline_costs counter. Fixes #77190.
16953
16954 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
16955
16956         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
16957         trace messages. Fixes #77706.
16958
16959 2006-03-04  Martin Baulig  <martin@ximian.com>
16960
16961         * tramp-amd64.c, tramp-x86.c
16962         (mono_debugger_create_notification_function): Use
16963         mono_global_codeman_reserve() to allocate a buffer at runtime and
16964         return it.
16965
16966         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
16967
16968         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
16969         notification function at runtime and then call `initialize' in the
16970         `MONO_DEBUGGER__debugger_info' vtable.
16971
16972 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16973
16974         * iltests.il: Fix a visibility problem.
16975
16976 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16977
16978         * driver.c, mini.c: add hooks for the counters API.
16979
16980 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16981
16982         * driver.c: show disabled options.
16983
16984 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16985
16986         * linear-scan.c: always use cost-driven selection.
16987
16988 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16989
16990         * jit-icalls.c (helper_compile_generic_method): Revert change from
16991         2006-02-24.
16992
16993 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
16994
16995         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
16996
16997 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16998
16999         * inssel.brg: style fixes, mostly to force the updated monoburg
17000         to run for people using svn.
17001
17002 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17003
17004         * mini.c: match monoburg changes.
17005
17006 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17007
17008         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17009         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17010         declaration in the header file.
17011
17012 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17013
17014         * helpers.c: reduce relocations and mem usage.
17015
17016 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17017
17018         * mini.h, mini-codegen.c: disable logging features if
17019         requested by configure.
17020
17021 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17022
17023         * mini.c: tiny verifier changes.
17024
17025 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17026
17027         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17028         cpu-pentium.md: stack alignment changes for osx/x86,
17029         partially from Geoff Norton <gnorton@customerdna.com>.
17030
17031 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17032
17033         * jit-icalls.c (helper_compile_generic_method): Update to changes
17034         in metadata/class.c.
17035
17036 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17037         
17038         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17039         
17040         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17041         interface calls with large offsets.
17042
17043 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17044
17045         * jit-icalls.c (helper_compile_generic_method): Document the
17046         special-case we depend on so that we can inflate the method twice
17047         with the same context with no bad side-effects.
17048
17049 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17050
17051         * mini-x86.c, mini-amd64.c: fix for case when xen support
17052         is disabled.
17053
17054 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17055
17056         * mini-x86.c, mini-amd64.c: generate code to access tls items
17057         in a faster way for Xen systems.
17058
17059 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17060
17061         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17062         updates and compilation fixes for the OSX/x86 port, mostly from
17063         Geoff Norton <gnorton@customerdna.com>.
17064
17065 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17066
17067         * inssel.brg: faster interface call implementation
17068         to sync with the interface_offsets MonoVTable changes.
17069
17070 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17071
17072         * mini.c: more verification checks.
17073
17074 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17075
17076         * mini.c: added a few more verification checks.
17077
17078 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17079
17080         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17081         facility on the processor and use it if available.
17082
17083 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17084
17085         * driver.c, aot.c, mini.c: throw exception if the IL code is
17086         invalid or unverifiable.
17087
17088 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17089
17090         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17091         m.StructField.
17092
17093 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17094
17095         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17096
17097 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17098
17099         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17100         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17101         handling of instantiated generic valuetypes.
17102
17103 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17104
17105         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17106         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17107         instead.
17108
17109         * generics.2.cs: Revert the nullable reftypes tests.
17110
17111 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17112
17113         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17114         using __builtin_frame_address (1) as it doesn't work in the presence
17115         of optimizations. Hopefully fixes #77273.
17116
17117         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17118         -> generics.cs change as it doesn't work with some automake versions.
17119
17120 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17121
17122         * mini.c: handle systems that sue a different way to
17123         retrieve the stack address of the current thread.
17124
17125 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17126
17127         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17128         it specially in the makefile.
17129
17130         * generics.2.cs: Add tests for nullable reference types.
17131
17132 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17133
17134         * mini.c: always handle the case when mono_jit_init()
17135         is called in a thread different from the main thread,
17136         confusing libgc (bug #77309).
17137
17138 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17139
17140         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17141
17142 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17143
17144         * mini.c: change optimize_branches () to use a single loop
17145         and introduce a new optimization to simplify some range checks.
17146
17147 2006-02-03  Martin Baulig  <martin@ximian.com>
17148
17149         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17150         and merged with debugger_thread_manager_add_thread().
17151         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17152         inform the debugger about the main thread.
17153
17154 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17155
17156         * basic.cs: Add test for div.un/rem.un constant folding.
17157
17158 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17159
17160         * cpu-s390x.md: correct int_xor_imm length
17161
17162 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17163
17164         * generics.2.cs: New test for #77442.
17165
17166         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17167         #77442.
17168
17169 2006-02-02  Martin Baulig  <martin@ximian.com>
17170
17171         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17172         <mono/metadata/mono-debug-debugger.h>   
17173
17174         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17175
17176 2006-02-02  Martin Baulig  <martin@ximian.com>
17177
17178         * debug-debugger.h: New header file for debug-debugger.c.
17179
17180         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17181         function is a separate thread anymore; add support for attaching.
17182
17183 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17184
17185         * tramp-x86.c: Fix a warning.
17186
17187 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17188
17189         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17190         on very large methods.
17191
17192         * aot.c (load_patch_info): Fix a warning.
17193
17194 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17195
17196         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17197         mini-ops.h: alu membase optimizations.
17198
17199 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17200
17201         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17202         to speedup StringBuilder.
17203
17204 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17205
17206         * dominators.c (mono_compute_natural_loops): Fix detection of
17207         loop body start blocks.
17208
17209         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17210
17211 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17212
17213         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17214         #75145.
17215
17216 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17217
17218         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17219
17220 2006-01-25  Martin Baulig  <martin@ximian.com>
17221
17222         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17223         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17224         started to cleanup this file a little bit.
17225
17226 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17227
17228         * mini.c: optimize a codepath frequently happening in generics code.
17229
17230 2006-01-23  Martin Baulig  <martin@ximian.com>
17231
17232         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17233
17234         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17235         functions directly.
17236
17237         * driver.c: debug-debugger.c is only available if
17238         `MONO_DEBUGGER_SUPPORTED' is defined.   
17239
17240 2006-01-23  Martin Baulig  <martin@ximian.com>
17241
17242         * debug-debugger.c: Only enable this on platforms where the Mono
17243         Debugger is working (x86 and x86_64).
17244
17245 2006-01-21  Martin Baulig  <martin@ximian.com>
17246
17247         The Mono Debugger is now using the normal `mono' instead of the
17248         `mono-debugger-mini-wrapper' when executing managed code.
17249
17250         * debug-debugger.c: New file; previously known as
17251         debugger/wrapper/wrapper.c.
17252
17253         * debug-mini.c (mono_init_debugger): Removed.
17254
17255         * driver.c (mono_main): Added new `--inside-mdb' command line
17256         argument which is used when running inside the debugger.
17257
17258 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17259
17260         * liveness.c (mono_analyze_liveness): Remove some unused data
17261         structures.
17262
17263 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17264
17265         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17266
17267 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17268
17269         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17270         depends on implementation details of monobitset.
17271
17272         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17273         Fixes #77271.
17274
17275 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17276
17277         * liveness.c: Update after monobitset changes.
17278
17279 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17280
17281         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17282
17283 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17284
17285         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17286
17287         * mini-s390x.c: Remove warning messages.
17288
17289 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17290
17291         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17292
17293 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17294
17295         * generics.2.cs: Add ldelem/stelem_any test.
17296
17297 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17298
17299         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17300
17301 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17302
17303         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17304         
17305 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17306
17307         * generics.2.cs: Reenable vtype tests.
17308
17309         * inssel-x86.brg: Remove an icorrect valuetype rule.
17310
17311 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17312
17313         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17314         initial support for OP_ABS.
17315
17316 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17317
17318         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17319
17320 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17321
17322         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17323         conversion and implement LADD/LSUB.
17324
17325         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17326         architectures.
17327
17328 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17329
17330         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17331
17332         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17333         architectures.
17334
17335 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17336
17337         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17338         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17339         (stack walk problem).
17340
17341 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17342
17343         * aot.c (mono_aot_load_method): Fix a warning.
17344
17345 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17346
17347         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17348
17349 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17350
17351         * iltests.il: Add test for #77148.
17352
17353         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17354         #77148.
17355
17356 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17357
17358         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17359
17360 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17361
17362         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17363         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17364
17365         * basic-long.cs: Add lconv-to-r4/r8 tests.
17366
17367 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17368
17369         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17370
17371         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17372         here as on other archs.
17373
17374 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17375
17376         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17377
17378 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17379
17380         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17381         
17382         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17383
17384         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17385         instrument_prolog; Add memory_barrier instruction.
17386
17387 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17388
17389         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17390
17391 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17392
17393         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17394
17395         * aliasing.c inssel.brg: Fix warnings.
17396
17397         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17398         could skip initialization of some parts of memory.
17399
17400         * mini.c mini-ia64.c: Fix warnings.
17401
17402         * inssel-sparc.brg: Add an implementation of lneg which actually works.
17403
17404 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17405
17406         * aliasing.c (mono_build_aliasing_information): Add a workaround for
17407         a crash seen on sparc.
17408
17409         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
17410         
17411         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
17412
17413 2005-12-21 Neale Ferguson <neale@sinenomine.net>
17414
17415         * mini-ops.h: Add s390_backchain instruction
17416
17417         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
17418
17419         * cpu-s390.md: Add s390_backchain instruction
17420
17421         * mini-s390.c: Significant ABI changes
17422
17423         * mini-s390.h: Cater for zero length structures
17424
17425 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17426
17427         * mini-s390.c: ABI fixes
17428
17429         * inssel-s390.brg: Remove debug statements
17430
17431         * cpu-s390.md: Fix length of ATOMIC_xx operations
17432
17433 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17434
17435         * basic-float.cs: Add float<->long conversion tests.
17436
17437 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17438
17439         * mini-s390.c: Fix LOCALLOC processing.
17440
17441         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17442
17443 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17444
17445         * iltests.il: Add tests for some opcodes not covered by the other
17446         tests.
17447
17448 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17449
17450         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17451         register loading for Tail processing; Correct trace output.
17452
17453         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17454
17455         * cpu-s390.md: Correct size of jmp instruction. 
17456
17457 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17458
17459         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17460
17461 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17462
17463         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17464           Bring s390 up to current level.
17465
17466 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17467
17468         * generics.2.cs: Disable the newly added tests as they do not work yet.
17469         
17470         * generics.2.cs: Add valuetype tests.
17471
17472 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17473
17474         * basic-long.cs: Add i4->u8 test.
17475
17476         * objects.cs: Add tests for JIT intrinsic.
17477
17478         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17479         optimizations lost by a mistake.
17480
17481 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17482
17483         * basic-long.cs: Remove a test moved to objects.cs.
17484
17485         * arrays.cs: Add more array tests.
17486
17487 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17488
17489         * arrays.cs: Add new tests for multi-dimensional arrays.
17490
17491 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17492
17493         * Makefile.am (test_sources2): Add generics.2.cs.
17494         (EXTRA_DIST): Add test_sources2.
17495
17496 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17497
17498         Support for boxing and unboxing nullable types as well as the
17499         isinst operation on nullables, per the CLI ammendment.
17500
17501         * inssel.brg (CEE_ISINST): Special case for nullable
17502
17503         * mini.c (handle_unbox_nullable): new method
17504         (handle_box): Special case for nullable types
17505         (mono_method_to_ir): Call handle_unbox_nullable in correct
17506         places.
17507
17508         * generics.2.cs: New test suite
17509
17510         * Makefile.am: Support for regression tests with generics.
17511
17512 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17513
17514         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17515         allocated to registers. Fixes #76800.
17516
17517 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17518
17519         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17520
17521 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17522
17523         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17524         of platforms.
17525
17526 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17527
17528         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17529         objects.cs.
17530
17531         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17532         
17533         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17534 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17535
17536         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17537         single precision before storing to a single precision location.
17538
17539 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17540
17541         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17542
17543 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17544
17545         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17546         correct files.
17547
17548         * basic.cs: Remove test_0_byte_compares test which was moved to
17549         objects.cs a long time ago.
17550
17551 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17552
17553         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17554
17555 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17556
17557         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17558         handlers are called.
17559
17560         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17561         throwing code.
17562
17563          * mini-ia64.c: Add support for the throw->branch exception 
17564         optimization.   
17565
17566         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17567
17568 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17569
17570         * mini.c: Enabled "fastpath" deadce :-)
17571         
17572 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17573
17574         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17575         alias analysis pass to support it.
17576         * mini.h: Likewise.
17577         * ssa.c: Likewise.
17578         * liveness.c: Likewise (liveness computation can use aliasing
17579         information to be more accurate).
17580         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17581         moreover made so that "--compile-all" uses the given optimization
17582         flags and not the default ones.
17583         * aliasing.c: Alias analysis (new file).
17584         * aliasing.h: Likewise.
17585         * Makefile.am: added "aliasing.c" and "aliasing.h".
17586         
17587 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17588
17589         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17590         OP_L opcodes.
17591
17592 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17593
17594         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17595         fp >= end_of_stack exit condition, as it is not needed, and it might
17596         become true for fp eliminated frames.
17597
17598 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17599
17600         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
17601         coded offsets.
17602
17603 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
17604
17605         * mini-arm.c: fixed alignment of doubles/longs to match
17606         the C ABI (bug #76635).
17607
17608 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
17609
17610         * aot.c: fix compilation with --enable-minimal=aot.
17611
17612 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
17613
17614         * mini-arm.c: fixed compatibility with the new
17615         floating point emulator package for compares.
17616
17617 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
17618
17619         * mini.c : reverted sig->pinvoke changes (r51396-51397).
17620
17621 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
17622
17623         * mini-exceptions.c (print_stack_frame): Output to stderr.
17624         (mono_handle_native_sigsegv): Ditto.
17625
17626 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17627
17628         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
17629         OP_LCONV_TO_OVF_I implementation.
17630
17631         * mini-amd64.c: Add support for the throw->branch exception 
17632         optimization.
17633
17634         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
17635         when the catch clause catches a more general exception, i.e. Object.
17636
17637 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
17638
17639         * cpu-ia64.md: Remove unused opcodes.
17640
17641         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17642         specific defines for architectures defining USE_SIGACTION.
17643
17644         * mini-ia64.c: Fix some warnings.
17645
17646         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17647         version seemed to skip a frame.
17648
17649 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17650
17651         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17652         only calls which are made to native code use this flag.
17653
17654 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17655
17656         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17657         varargs methods as well.
17658         
17659         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17660         which have save_lmf set. Reorganize methods prologs a bit.
17661
17662         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17663         debugger to the proper place.
17664
17665 2005-10-29  Martin Baulig  <martin@ximian.com>
17666
17667         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17668         when running inside the debugger until the debugger has support
17669         for it.
17670
17671 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17672
17673         * mini.h: Fix a warning.
17674
17675 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17676
17677         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17678         we expose publicly, this returns the string.
17679
17680 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17681
17682         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17683         with fp elimination.
17684
17685 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17686
17687         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17688         native stacktrace using the glibc 'backtrace' function if available.
17689
17690 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17691
17692         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17693
17694         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17695         handle SIGSEGVs received while in native code.
17696
17697         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17698         code, call mono_handle_native_sigsegv which will abort the runtime
17699         after printing some diagnostics, instead of converting it into a
17700         confusing NullReferenceException.
17701
17702 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17703
17704         * cpu-pentium.md: Remove unused opcodes.
17705
17706 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17707
17708         * mini-amd64.h (MonoLMF): Add rsp field.
17709
17710         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17711         the lmf too.
17712
17713 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
17714
17715         * mini-codegen.c (get_register_spilling): Fix some warnings.
17716
17717 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
17718
17719         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
17720         elimination during exception handling. Enable fp elimination by
17721         default.
17722
17723         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
17724         elimination.
17725
17726 2005-10-16  Martin Baulig  <martin@ximian.com>
17727
17728         * mini-exceptions.c
17729         (mono_debugger_run_finally): New public method for the debugger.
17730
17731 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
17732
17733         * debug-mini.c (mono_debug_init_method): Fix warning.
17734
17735         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
17736         the 'exname' parameter const to fix some warnings.
17737
17738 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
17739
17740         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
17741         introduced by the previous patch.
17742
17743 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
17744
17745         * basic-float.cs: Add test for precision of float arithmetic.
17746
17747         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
17748         when loading/storing single values from/to memory.
17749
17750         * mini.c (mono_jit_compile_method_with_opt): Create the function
17751         pointers in the correct domain.
17752
17753 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17754
17755         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
17756         introduced by previous patch.
17757         
17758         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
17759         when out_filter_idx is NULL.
17760
17761         * mini-exceptions.c: Don't run filter clauses twice during exception
17762         handling. Fixes #75755.
17763
17764 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
17765
17766         * aot.c: Add support for ldflda wrappers.
17767
17768         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
17769         #75902.
17770
17771 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
17772
17773         * mini.c, mini.h: do not consider exception handlers blocks when
17774         setting up interface variables.
17775
17776 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
17777
17778         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
17779
17780 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
17781
17782         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
17783         causes a regression.
17784
17785         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
17786
17787 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
17788
17789         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
17790         of the OP_P definitions.
17791
17792         * TODO: Add a proposal for dealing with the CEE/OP mess.
17793
17794         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
17795         optimizations from the x86 port.
17796
17797         * cpu-amd64.md: Ditto.
17798
17799         * basic.cs basic-long.cs: Add tests.
17800
17801 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
17802
17803         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
17804         Patrik Torstensson's implementation of my exception-handling
17805         optimization idea, when the exception object is not used
17806         (bug #62150).
17807
17808 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17809
17810         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17811         of the mul_imm optimizations from the old jit.
17812
17813 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17814
17815         * mini.c, liveness.c: patch by Patrik Torstensson and
17816         Zoltan Varga to improve performance in methods with
17817         exception clauses.
17818
17819 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17820
17821         * driver.c: Remove 'Globalization' entry from --version.
17822
17823 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17824
17825         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17826         there is a profiler interested in JIT events.
17827
17828         * aot.c: Load profile files produced by the AOT profiling module, and
17829         reorder methods based on the profiling info. Add a 'method_order' table
17830         to the AOT file to make mono_aot_find_jit_info work with the reordered
17831         methods.
17832
17833         * mini.h: Bump AOT file version info.
17834
17835 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17836
17837         * mini-arm.h: work around what looks like a gcc bug when optimizations
17838         are enabled.
17839
17840 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17841
17842         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17843         conditionals.  Use ...
17844         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
17845
17846 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
17847
17848         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
17849         to determine the amount of memory to copy when passing valuetypes.
17850
17851         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
17852         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
17853
17854 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
17855
17856         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
17857         information about aot.
17858
17859 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17860
17861         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17862         macros. This will allow a deadlock debugger to easily be plugged
17863         in.
17864
17865 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
17866
17867         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
17868
17869 2005-09-27  Raja R Harinath  <rharinath@novell.com>
17870
17871         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
17872         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
17873         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
17874         ($(arch_built)) [CROSS_COMPILING]: Error out.
17875
17876 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17877
17878         * aot.c: Add support for the no_special_static flag for classes.
17879
17880 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17881
17882         * Reapply reverted patches.
17883
17884         * *: Revert r50174 as well.
17885
17886         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
17887
17888 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17889
17890         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
17891
17892 2005-09-23  Miguel de Icaza  <miguel@novell.com>
17893
17894         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
17895         part of the SIG_HANDLER_SIGNATURE.  
17896
17897 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17898
17899         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
17900         statistics.
17901
17902         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
17903         introduced by previous patch.
17904
17905 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
17906
17907         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
17908         saved registers too.
17909
17910         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17911         upon the information returned by get_call_info ().
17912         
17913         * mini-x86.c (add_float): Fix stack size calculation.
17914         (mono_arch_call_opcode): Rewrite this so it works based up the
17915         information returned by get_call_info ().
17916         (mono_arch_get_this_vret_args): Ditto.
17917
17918 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
17919
17920         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
17921         in cinfo to determine the registers which need to be used.
17922
17923 2005-09-20  Miguel de Icaza  <miguel@novell.com>
17924
17925         * driver.c (mono_main): Add --server and --desktop flags. 
17926
17927 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
17928
17929         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
17930         registers as global registers.
17931
17932         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
17933         longer needed with the new register allocator.
17934
17935         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
17936
17937         * cpu-ia64.md: Remove unused opcodes.
17938         
17939         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
17940         
17941 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
17942
17943         * cpu-amd64.md: Remove unused opcodes.
17944
17945         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
17946         needed with the new register allocator.
17947
17948         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
17949         reg-reg moves.
17950
17951 2005-09-16  Raja R Harinath  <rharinath@novell.com>
17952
17953         * Makefile.am (check-local): Don't invoke semdel-wrapper.
17954
17955 2005-09-16  Martin Baulig  <martin@ximian.com>
17956
17957         * exceptions-amd64.c
17958         (throw_exception): Don't call mono_debugger_throw_exception() if
17959         we're a rethrow - see the FIXME in the code.
17960
17961 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
17962
17963         * mini.c (mono_init_exceptions): This only works on some architectures.
17964         
17965 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17966
17967         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
17968         on ia64.
17969
17970         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
17971
17972         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
17973         now in mini-exceptions.c.
17974
17975 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
17976
17977         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
17978         now in mini-exceptions.c.
17979
17980 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
17981
17982         * exceptions-x86.c: Applied patch from Patrik Torstensson 
17983         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
17984
17985         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
17986         code into mini-exceptions.c. Add some assertions to it.
17987
17988 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
17989
17990         * aot.c (emit_section_change): Applied patch from "The Software Team" 
17991         (<software@solmersa.com>). Fix as errors on windows.
17992
17993 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
17994
17995         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
17996         method info into the LMF.
17997
17998 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
17999         
18000         * mini-ia64.c: Add proper unwind info for method epilogs.
18001
18002         * exceptions-ia64.c: Add some code to help debugging.
18003         
18004         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18005
18006         * mini-exceptions.c: Fix warning.
18007
18008 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18009
18010         * mini.c: Really fix build.
18011
18012         * mini-x86.c mini-amd64.c: Fix build.
18013
18014 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18015
18016         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18017
18018         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18019         some Interlocked methods as intrinsics.
18020
18021         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18022         for Thread methods as well.
18023
18024         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18025
18026         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18027
18028         * mini-ia64.c mini-x86.c mini-amd64.c 
18029         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18030         OP_MEMORY_BARRIER.
18031         
18032         * mini.c (mono_init_exceptions): Fix build breakage.
18033
18034 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18035
18036         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18037         of instructions. Use the new ia64_unw_op macros for emitting unwind
18038         info.
18039
18040         * mini.c (mono_init_exceptions): Initialize exception handling
18041         related trampolines at startup.
18042
18043 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18044
18045         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18046
18047 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18048
18049         * mini.c: Handle type loading errors gracefully during compilation and
18050         throw the appropriate exception.
18051
18052 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18053
18054         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18055         for the mono binary.
18056
18057 2005-09-09  Martin Baulig  <martin@ximian.com>
18058
18059         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18060         the release.
18061
18062 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18063
18064         * mini-arm.h: use emulation for conv.r.un for the release.
18065
18066 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18067
18068         * mini-arm.c, objects.cs: more fixes and tests for them.
18069
18070 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18071
18072         * mini-arm.c: align structures to at least 4 bytes to be able
18073         to keep our current optimized memcpy.
18074
18075 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18076
18077         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18078
18079 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18080
18081         * mini.c: ignore SIGPIPE.
18082
18083 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18084
18085         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18086
18087         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18088
18089 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18090
18091         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18092
18093 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18094
18095         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18096         exception handling support.
18097         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18098         patch by Brian Koropoff <briank@marakicorp.com>).
18099
18100 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18101
18102         * mini.c: revert another 'optimization' which breaks when
18103         items on the eval stack need to be saved at a basic block end
18104         (bug #75940).
18105
18106 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18107
18108         * jit-icalls.c: for arrays, ensure we always provide
18109         lower bounds.
18110
18111 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18112
18113         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18114         
18115         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18116
18117 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18118
18119         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18120         arguments in their original register.
18121
18122 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18123
18124         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18125         memset/memcpy.
18126
18127         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18128         when ssapre is enabled.
18129
18130         * inssel-long.brg: Fix bug in previous patch.
18131
18132         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18133         multiplication by a constant.
18134
18135 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18136
18137         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18138         icc.
18139
18140         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18141         saving registers.
18142
18143 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18144
18145         * inssel-arm.brg: apply changes tested by Brian Koropoff
18146         <briank@marakicorp.com>.
18147
18148 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18149
18150         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18151         
18152 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18153
18154         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18155         to the same register if dreg is just a base register.
18156         (print_ins): Improve printing of membase opcodes.
18157
18158         * inssel-x86.brg: Add optimized ldind(reg) rules.
18159
18160         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18161
18162 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18163
18164         * mini.c: when running under valgrind, set the stack bottom for
18165         the GC at the actual approximate stack for the app (fixes running
18166         mono with valgrind).
18167
18168 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18169
18170         * mini.c: do no break at the first valuetype to init found
18171         (fixes bug #75791).
18172
18173 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18174
18175         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18176
18177 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18178
18179         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18180
18181 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18182
18183         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18184
18185 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18186
18187         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18188
18189         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18190         code.
18191
18192         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18193         code.
18194
18195         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18196         methods.
18197
18198 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18199
18200         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18201
18202 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18203
18204         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18205         in the tail recursion optimization.
18206
18207         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18208         debug info into the assembly file.
18209
18210         * iltests.il: Add test for filter regions.
18211
18212         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18213         initial stack of filter regions. Fixes #75755.
18214
18215 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18216
18217         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18218         stack requirements.
18219
18220 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18221
18222         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18223         the check for an already compiled method on non-ia64 platforms.
18224         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18225         proper domain.
18226
18227         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18228
18229         * inssel-x86.brg: Add some optimized call rules.
18230
18231 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18232
18233         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18234         method here.
18235
18236         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18237         mono_arch_patch_delegate_trampoline.
18238
18239         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18240
18241         * mini-trampolines.c: Fix build.
18242
18243         * mini-amd64.h: Add delegate trampolines.
18244
18245         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18246
18247         * inssel-amd64.brg: Add optimized call rules.
18248         
18249         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18250
18251         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18252
18253 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18254
18255         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18256         change.
18257
18258         * mini-ia64.c: Remove LMF fixmes.
18259
18260         * mini-ia64.h: Remove most fields from LMF.
18261
18262         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18263
18264         * mini-trampolines.c: Add support for IA64 function descriptors.
18265
18266         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18267         for IA64 function descriptors.
18268
18269 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18270
18271         * tramp-arm.c: patch the vtable for virtual calls. Added
18272         support code to register/unregister the LMF.
18273         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18274         more LMF work.
18275
18276 2005-08-19  Dick Porter  <dick@ximian.com>
18277
18278         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18279         bit value if needed.
18280
18281 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18282
18283         * mini.c (mini_get_method): Move handling of wrapper data here.
18284
18285         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18286
18287         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18288         virtual.
18289
18290         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18291         bblock->code does not remain empty.
18292
18293 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18294
18295         * arrays.cs: Add regression test for #75832.
18296
18297         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18298         rules. Fixes #75832.
18299
18300         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18301         instruction scheduling.
18302
18303 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18304
18305         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18306
18307 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18308
18309         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18310
18311         * mini-codegen.c: Fix VC build.
18312
18313         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18314
18315 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18316
18317         * mini.h: fix signature for mono_register_opcode_emulation.
18318
18319 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18320
18321         * mini.c: Get rid of most of the helper_sig_... constants using
18322         mono_create_icall_signature ().
18323
18324 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18325
18326         * jit-icalls.c (helper_ldstr): New helper function.
18327
18328         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18329
18330         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18331         throw, load the string using a helper call instead of creating a string object.
18332
18333         * aot.c: Update after LDSTR changes.
18334
18335         * mini.h: Bump AOT file version.
18336         
18337         * aot.c: Save class size info into the AOT file. Print more statistics during
18338         compilation.
18339
18340         * mini.h: Bump AOT file version.
18341
18342         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18343         ordering of disasm cases. Fixes #74957.
18344
18345 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18346
18347         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18348         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18349         the generic code needed for the ARM port.
18350
18351 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18352
18353         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18354         inssel-arm.brg: more ARM features and fixes.
18355
18356 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18357
18358         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18359         ARM port work in progress.
18360
18361 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18362
18363         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18364
18365         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18366
18367         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18368
18369         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18370
18371         * *-ia64.*: Ongoing IA64 work.
18372         
18373         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18374
18375 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18376
18377         * TODO: Remove out-of-data todo stuff.
18378
18379         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18380         dead code.
18381
18382         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18383
18384         * mini.h: Bump corlib version.
18385
18386 2005-07-27  Martin Baulig  <martin@ximian.com>
18387
18388         * mini-codegen.c
18389         (create_copy_ins): Added `const unsigned char *ip' argument; set
18390         `copy->cil_code' from it.
18391
18392 2005-07-27  Martin Baulig  <martin@ximian.com>
18393
18394         * mini-exceptions.c (mono_handle_exception): Don't call
18395         mono_debugger_handle_exception() for filters.
18396
18397 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18398
18399         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18400         as well.
18401
18402 2005-07-26  Martin Baulig  <martin@ximian.com>
18403
18404         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
18405
18406         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
18407         helper_compile_generic_method() if the method is actually virtual
18408         and non-final.
18409
18410 2005-07-26  Martin Baulig  <martin@ximian.com>
18411
18412         * mini.c
18413         (trampoline_code): Renamed to `mono_trampoline_code' and made it
18414         public; this is now accessed directly by the debugger.
18415         (mono_generic_trampoline_code): Removed.
18416
18417         * debug-mini.c
18418         (mono_debug_init_method): Also add interncalls and wrappers.
18419
18420 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
18421
18422         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18423
18424 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18425
18426         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18427
18428 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18429
18430         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18431
18432 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18433
18434         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18435         getting TLS offsets on AMD64 too.
18436
18437 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18438
18439         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18440
18441 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18442
18443         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18444         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18445
18446 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18447
18448         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18449
18450         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18451         to mini.c.
18452
18453         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18454         mono_sparc_is_virtual_call ().
18455         
18456         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18457
18458         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18459         trampoline parameters.
18460
18461         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18462         
18463         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18464         to mono_arch_get_vcall_slot_addr.
18465
18466         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18467         trampoline code.
18468
18469         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18470
18471 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18472
18473         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18474
18475 2005-07-19  Martin Baulig  <martin@ximian.com>
18476
18477         * exceptions-amd64.c (throw_exception): Call
18478         mono_debugger_throw_exception() here like we're doing it on i386.
18479
18480 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18481
18482         * mini-ia64.c: Add optimized TLS access support.
18483
18484 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18485
18486         * mini-exceptions.c: Ongoing IA64 work.
18487
18488         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18489
18490         * mini.c: Use the default optimization set when embedding. Fixes
18491         #75194.
18492
18493 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18494
18495         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18496         of trampolines to a separate file.
18497
18498         * mini-trampolines.c: New file.
18499
18500         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18501         separate file.
18502         
18503         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18504         amd64/ia64 code.
18505
18506         * mini-codegen.c: Fix cygwin build.
18507
18508 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18509
18510         * mini.c: Add some minor changes needed by the IA64 port.
18511
18512         * *-ia64.*: Ongoing IA64 work.
18513
18514 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18517         trampolines into arch-independent and arch-dependent parts.
18518
18519         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18520
18521 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18522
18523         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18524
18525         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18526         the xp-regalloc-branch for amd64.
18527
18528         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18529         xp-regalloc-branch for x86.
18530
18531 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18534
18535 2005-07-06  Martin Baulig  <martin@ximian.com>
18536
18537         * mini.c
18538         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18539         (mono_jit_runtime_invoke): Likewise.
18540
18541 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18542
18543         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18544         on x86 too.
18545         
18546         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18547         without loading their metadata. Reorganize the file format so exception handling+
18548         debug info is kept separate from normal method info. Create MonoJitInfo 
18549         structures for methods lazily.
18550
18551         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18552         loading metadata.
18553         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18554
18555         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18556
18557         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18558         in AOT code.
18559
18560         * mini.h: Bump AOT file version.
18561
18562 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18563
18564         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18565
18566 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18567
18568         * Makefile.am (check-local): Call semdel-wrapper.
18569
18570 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18571
18572         * mini-x86.c: Revert the last change as it seems to break the build..
18573
18574 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18575
18576         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18577         
18578         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18579
18580 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18581
18582         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18583         outside of the macro, so strange stuff doesn't happen with gcc4
18584         (NEW_AOTCONST_TOKEN): Likewise.
18585
18586 2005-06-28  Martin Baulig  <martin@ximian.com>
18587
18588         * mini.c (mini_class_is_system_array): New static method; use this
18589         instead of `klass->parent == mono_defaults.array_class' everywhere
18590         since this also works for the new generic array class.
18591
18592 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18593
18594         * inssel.brg: Remove warnings.
18595
18596 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18597
18598         * mini-ia64.c: Ongoing IA64 work.
18599
18600         * basic-float.cs: Add float->i1 conversion test.
18601
18602         * iltests.il: Add conv.u4 test.
18603
18604 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
18605
18606         * inssel-long.brg: Fix bug caused by last change.
18607
18608 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
18609
18610         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
18611         BSDs.  Allows the x86 JIT to work on OSX86
18612
18613 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
18614
18615         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
18616         u4->i8 conversion.
18617
18618         * mini-ia64.c: Ongoing IA64 work.
18619
18620 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18621
18622         * mini-ia64.c: Ongoing IA64 work.
18623
18624         * driver.c: Clean up jit_code_hash as well when using --regression.
18625
18626         * inssel-long.brg: Fix long->i4/u4 conversion rules.
18627
18628         * basic-long.cs: Add tests for long->u4 conversion.
18629
18630 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
18631
18632         * mini.c: Take mono_get_domainvar out of macros. This makes sure
18633         that we do not depend on undefined C behavior: the order stuff
18634         gets evaluated within an expression. Fixes mono when compiled on
18635         GCC 4.
18636
18637 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
18638
18639         * *-ia64.*: Ongoing IA64 work.
18640
18641         * aot.c: Lower memory usage while loading AOT methods.
18642
18643         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18644
18645         * mini.h: Bump AOT file format version.
18646
18647 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18648
18649         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18650
18651 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18652
18653         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18654         not on callee assembly). Fixed some comments.
18655
18656 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18657
18658         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18659         it gets proper disassembly.
18660         (emit_method_info): Remove some dead code.
18661
18662         * mini.c (mini_method_compile): Allways allocate the GOT var in
18663         mono_method_to_ir for emulating opcodes.
18664
18665 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18666
18667         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18668         before freeing the code memory. Fixes #74990.
18669
18670         * objects.cs: Add regression test for #74992.
18671
18672         * liveness.c: Extend live ranges of arguments to the beginning of the
18673         method. Fixes #74992.
18674
18675         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18676         so it points into the faulting instruction.
18677
18678 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18679
18680         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18681
18682         * *-ia64.*: Ongoing IA64 work.
18683
18684         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18685
18686 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18687
18688         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18689
18690         * *-ia64.*: Ongoing IA64 work.
18691
18692 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18693
18694         * basic-long.cs: Add tests for add/sub.ovf.
18695
18696         * basic.cs: Add tests for sub.ovf.
18697
18698         * *-ia64.*: Ongoing IA64 work.
18699
18700 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18701
18702         * *-ia64.*: Ongoing IA64 work.
18703
18704         * basic.cs: Add conv.ovf.i4.un test.
18705
18706 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18707
18708         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18709         
18710 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18711
18712         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
18713
18714 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18715
18716         * *-ia64.*: Ongoing IA64 work.
18717
18718 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18719
18720         * trace.[ch]:
18721         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
18722
18723 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
18724
18725         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
18726
18727 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
18728
18729         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
18730
18731         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
18732         of a call is callable by a near call.
18733
18734 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
18735
18736         * mini-ia64.c: Ongoing IA64 work.
18737
18738 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
18739
18740         * genmdesc.c: Make the generated array non-static.
18741
18742         * inssel-long.brg: Fix LSHR_IMM rule.
18743
18744         * *-ia64.*: Ongoing IA64 work.
18745
18746         * *-ia64.*: Ongoing IA64 work.
18747
18748 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18749
18750         * *-ia64.*: Ongoing IA64 work.
18751
18752         * *-ia64.*: Ongoing IA64 work.
18753         
18754         * mini-ia64.c: Ongoing IA64 work.
18755
18756         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
18757
18758 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * objects.cs basic-calls.cs: Move some tests to objects.cs.
18761         
18762         * objects.cs basic-long.cs: Move some tests to objects.cs.
18763
18764 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
18765
18766         * *-ia64.*: Ongoing IA64 work.
18767
18768         * iltests.il: Add a new test.
18769
18770         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
18771         newobj. Fixes #75042.
18772
18773 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
18774
18775         * *-ia64.*: Ongoing IA64 work.
18776         
18777         * *-ia64.*: Ongoing IA64 work.
18778         
18779         * *-ia64.*: Ongoing IA64 work.
18780
18781         * basic.cs objects.cs: Move tests accessing static variables as well.
18782
18783         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
18784
18785 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
18786
18787         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
18788
18789         * driver.c: Always print failed tests.
18790
18791         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
18792         frame pointer.
18793
18794         * *ia64*: Ongoing IA64 work.
18795
18796 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
18797
18798         * basic.cs: Add tests for add.ovf. Fix warnings.
18799
18800 2005-05-18  Miguel de Icaza  <miguel@novell.com>
18801
18802         * driver.c (mono_main): Avoid crash if no argument is passed to
18803         --break;  Do not use g_error, but f_printf.   And fix all other
18804         ocurrences of the same crash.
18805
18806 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18809         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18810         Fixes #74742.
18811
18812 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18813
18814         * *-ia64.*: Add beginnings of IA64 backend.
18815
18816         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18817
18818 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18821         Fixes #74925.
18822
18823         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18824
18825         * mini-amd64.c: Fix a warning.
18826
18827 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18828
18829         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18830         in float_neg. Fixes #74897.
18831
18832         * mini-amd64.c (emit_call): Fix another near call bug.
18833
18834 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18835
18836         * declsec.c: Keep the appdomain information in the structure. Added a 
18837         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18838         value gets overwritten).
18839         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18840         an MonoAppDomain member to MonoSecurityFrame.
18841         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18842         used in the stack walk. Now use a MonoArray which grow (double) when
18843         it gets full.
18844
18845 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18846
18847         * mini.c: Re-enabled runtime cleanup, since running threads should
18848         now properly stop when exiting.
18849
18850 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18851
18852         * mini-codegen.c: New file contaning the arch-independent local
18853         register allocator. Not used by any architectures yet.
18854
18855         * mini.h linear-scan.c: Merge some changes from the 
18856         mini-xp-local-regalloc branch.
18857
18858 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18859
18860         * mini-amd64.c (emit_call): Fix calls to native functions when the
18861         runtime is compiled as a shared library. Fixes #74756.
18862
18863         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
18864         on a literal field. Fixes #74751.
18865
18866 2005-04-25  Raja R Harinath  <rharinath@novell.com>
18867
18868         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
18869
18870 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * objects.cs: Add missing null casting test.
18873
18874 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18875
18876         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
18877         in wrapper methods. Also rename 'address' variable to 'offset'.
18878
18879 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
18882         warnings.
18883         
18884         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
18885
18886         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
18887         work on windows.
18888
18889 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18890
18891         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
18892
18893 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18894
18895         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
18896         just the last bytes.
18897
18898 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18899
18900         * aot.c (mono_compile_assembly): Fix warning.
18901
18902         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
18903         by the _MSC_VER stuff.
18904
18905 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18906
18907         * inssel-long.brg: Fix #74588.
18908
18909         * cpu-amd64.md: Fix #74591.
18910
18911         * iltests.il: Add new regression tests.
18912
18913 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18914
18915         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
18916         valuetype.
18917
18918 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
18919
18920         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
18921
18922         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
18923         from Bill Middleton <flashdict@gmail.com>.
18924
18925 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
18926
18927         * arrays.cs: Add new regression test. Fix warnings.
18928
18929 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
18930
18931         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
18932         and leakage in CKFINITE.
18933
18934         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
18935         this to a null op since it is called on amd64 too.
18936
18937         * exceptions-amd64.c (get_throw_trampoline): Align stack.
18938
18939         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
18940         body since this is not used on amd64.
18941         
18942         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
18943
18944         * mini-amd64.c: Remove obsolete fixmes.
18945
18946         * mini.c (print_method_from_ip): Fix debugging support.
18947
18948 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18949
18950         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
18951         so that expressions that don't give much gain are not reduced.
18952         * ssapre.h: Likewise.
18953
18954 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
18955
18956         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
18957
18958         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
18959
18960         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
18961
18962 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
18963
18964         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
18965
18966         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
18967
18968 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
18969
18970         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
18971         stack touching.
18972
18973         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
18974
18975         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
18976
18977         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
18978
18979         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
18980         MONO_ARCH_USE_SIGACTION. Fixes #74252.
18981
18982         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
18983
18984         * mini-x86.c: Fix up stack overflow handling.   
18985
18986         * exceptions.cs: Add new regression test.
18987
18988 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
18989
18990         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
18991         mono_jit_thread_attach.
18992
18993         * mini.c (mono_method_to_ir): Verify called method is not abstract.
18994
18995 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18996
18997         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
18998         avoid calling constructors using callvirt.
18999
19000         * inssel.brg: Fix #74073.
19001
19002 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19003
19004         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19005         compilation with non-GCC compilers.
19006         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19007         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19008
19009 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19010
19011         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19012         klass->interface_offsets (will likely fix bug#74073).
19013
19014 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19017
19018 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19019
19020         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19021         to amd64_div_reg_size ().
19022         
19023         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19024
19025 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19026
19027         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19028
19029 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19030
19031         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19032
19033 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19034
19035         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19036         
19037         * mini.c (mono_precompile_assembly): Load and precompile referenced
19038         assemblies as well. Fixes #74015.
19039
19040 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19041
19042         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19043
19044 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19045
19046         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19047         a lot of checks and (anyway) permissions cannot work until corlib is 
19048         loaded.
19049
19050 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19051
19052         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19053
19054 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19055
19056         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19057         calls (fixes bug#72824).
19058
19059 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19060
19061         * mini.c: fix tail recursion elimination (see test in bug#73936).
19062
19063 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19064
19065         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19066         some fp functions in sse2 mode.
19067
19068 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19069
19070         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19071
19072 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19073
19074         * mini.h mini.c: Add mono_get_jit_tls_key ().
19075
19076         * mini-x86.c: Enable fast TLS support on windows.
19077
19078 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19079
19080         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19081         * mini.c: Check for p/invoke method when generating code. If a
19082         p/invoke method, or it's class, isn't decorated with [Suppress
19083         UnmanagedCodeSecurity] then generate code to call System.Security.
19084         UnmanagedDemand (only if the security manager is active).
19085
19086 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19087
19088         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19089         last change as it seems to cause strange crashes.
19090         
19091 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19092
19093         * *.c: handle unsafe function pointers where needed.
19094
19095 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19096
19097         * mini.c (mono_jit_free_method): Remove the fixme too.
19098
19099 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19100
19101         * mini.c: As discussed, make the code actually free the delegate
19102         thunk now, to enable the debugging of delegate problems, use
19103         MONO_DEBUG=1 when running Mono. 
19104
19105         This takes also care of parts of the leaks as seen by Joe.
19106
19107 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19108
19109         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19110         thread_tls_offset calculation.
19111
19112 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19113
19114         * declsec.c: Reworked linkdemand checks for icall. The previous code
19115         was using the declaration code (untrusted) and didn't work as expected
19116         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19117         specific case.
19118
19119 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * iltests.il: Add new localloc test.
19122
19123         * mini-amd64.c: Handle large stack allocations the same way as on
19124         windows if stack overflow handling is working.
19125         
19126         * mini-amd64.c: Allocate the signal stack using mmap.
19127
19128         * mini.c (sigsegv_signal_handler): Fix reading of context.
19129
19130         * mini-exceptions.c: Fix up stack overflow handling.
19131
19132         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19133
19134         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19135
19136         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19137
19138         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19139
19140         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19141         tramp_init functions as they are no longer needed.
19142
19143 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19144
19145         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19146         
19147         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19148
19149         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19150         
19151         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19152         support that now.
19153
19154         * mini-ops.h: Add OP_LMUL_IMM.
19155
19156         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19157         long mul/div opcodes as intrinsic.
19158
19159         * mini-amd64.c (emit_call): Handle the case when the callee might be
19160         an AOT method.
19161
19162 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19163
19164         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19165         extra safe.
19166         
19167         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19168
19169         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19170
19171 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19172
19173         * mini.c (mono_codegen): Don't leak here, to help people running
19174         monogrind.
19175
19176 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19177
19178         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19179         conversions in sse2 mode.
19180
19181         * basic-float.cs: Add regression test.
19182         
19183         * mini-amd64.c: Reenable sse2.
19184
19185 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19186
19187         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19188
19189 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19190
19191         * driver.c: Copyright text should include 2005.
19192         
19193 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19194
19195         * cpu-amd64.md (load_membase): Fix more max lengths.
19196
19197 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19198
19199         * cpu-amd64.md (load_membase): Fix max length.
19200
19201         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19202
19203         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19204
19205         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19206         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19207
19208         * basic-float.cs: Add rounding regression test.
19209
19210         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19211
19212 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19213
19214         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19215         structures in registers for pinvoke wrappers.
19216
19217 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19218
19219         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19220
19221 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19222
19223         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19224         wrapper to mono_jit_thread_attach.
19225
19226         * mini.c (mini_jit_thread_attach): New jit icall.
19227
19228         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19229         native->managed wrappers.
19230
19231         * exceptions.cs: Add new regression test.
19232
19233         * mini.c (optimize_branches): Check regions in the cbranch to throw
19234         block case as well. Fixes #73242.
19235
19236 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19237
19238         * mini.c: thread safety fixes.
19239
19240 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19241
19242         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19243         patching stuff, since delegates use jump trampolines so there is
19244         no caller.
19245
19246         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19247         jump trampolines.
19248         
19249         * tramp-amd64.c: Fix build.
19250
19251         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19252         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19253
19254         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19255         Rename this to mono_arch....
19256         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19257
19258         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19259
19260         * mini-amd64.c (emit_call): If both the caller and the callee is
19261         guaranteed to have 32 bit addresses, emit a normal call.
19262
19263         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19264
19265         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19266         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19267         method_ptr inside delegates.
19268
19269 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19270
19271         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19272         invalidated. Fixes #73001.
19273
19274         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19275
19276         * mini-x86.c: Only use stdcall for pinvokes on windows.
19277
19278 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19279
19280         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19281         * mini-x86.c: remove unreliable __thread var offset detection,
19282         use the correct accessors and enable by default.
19283
19284 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19285
19286         * mini.c (mono_jit_free_method): Fix memory leak.
19287
19288 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19289
19290         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19291
19292 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19293
19294         * cpu-amd64.md: Fix lengths of atomic opcodes.
19295
19296 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19297
19298         * driver.c: try to not imply using ICU is any good.
19299
19300 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19301
19302         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19303         functions as inline ops.
19304
19305         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19306         some Interlocked functions as inline ops.
19307
19308         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19309
19310         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19311
19312         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19313
19314         * mini.c: Add support for OP_NOT_TAKEN.
19315
19316         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19317         structures in registers for pinvoke wrappers.
19318
19319         * mini-amd64.c: Fix warnings.
19320
19321 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19322
19323         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19324
19325         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19326
19327         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19328         address instead of loading the address from it.
19329
19330         * mini-x86.c: Add support for returning small structs in registers
19331         on Win32. Fixes part of #70864.
19332         
19333 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19334
19335         * trace.c (get_token): Improve error checking.
19336
19337 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19338
19339         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19340
19341 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19342  
19343         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19344         it can be reused for MonoClass.
19345         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19346         _LINKDEMAND.
19347
19348 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19349
19350         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19351         instead of a MonoReflectionMethod. The method information wasn't used
19352         when displaying SecurityException details (but will be now).
19353
19354 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19355
19356         * Makefile.am : windows build fix.
19357
19358 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19359
19360         * iltests.il: Add new regression test.
19361
19362         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19363         #72522.
19364
19365 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19366  
19367         * mini.c: Moved linkdemand check into helper function check_linkdemand
19368         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19369         LDFTN, LDVIRTFTN).
19370
19371 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19372
19373         * declsec.c: Added statistics counter for different kinds of 
19374         LinkDemands.
19375         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19376         (and commented) declaration.
19377         * mini.c: Added statistics counter for security Demand code 
19378         generation. Added display of security statistics.
19379
19380 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19381
19382         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19383         Fix compilation errors under gcc-2.95.
19384
19385 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19386
19387         * mini.c, driver.c: Use the new jit trampoline hashtable
19388
19389 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19390
19391         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19392
19393 2005-02-11  Martin Baulig  <martin@ximian.com>
19394
19395         * debug-mini.c (mono_debug_close_method): Free the line number array.
19396
19397 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19398
19399         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19400         icalls.
19401
19402         * mini.h: Bump AOT file format version. 
19403
19404 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19405
19406         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
19407         APTC and P/Invoke.
19408         * declsec.h: Added macros to get/set lazyly initialized security 
19409         informations about assemblies. Added new enum for different type of
19410         possible LinkDemand violation. Added function to check LinkDemands.
19411         * mini.h: Added a field to MonoCompile to hold any security violation
19412         detected when JITting a method (so it can be thrown later).
19413         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
19414         and CEE_CALLVIRT. Added code to throw exception at the end of
19415         mini_method_compile (note: the exception is unhandled right now).
19416
19417 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19418
19419         * mini.c, jit-icalls.c: use the managed implementation of
19420         memset for initobj and memset, to avoid managed <-> unmanaged
19421         transitions.
19422
19423 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19424
19425         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19426         optimization if it would need a GOT var.
19427
19428         * basic.cs: Add tests for constant propagation and switch statements.
19429
19430         * ssa.c: Fix out-of-range constant propagation and switch statements.
19431
19432 2005-02-09    <vargaz@freemail.hu>
19433
19434         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19435
19436 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19437
19438         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19439
19440 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19441
19442         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19443
19444 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19445
19446         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19447         arithmetic operations.
19448
19449 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19450
19451         * mini-ppc.c: add a workaround for broken user code that
19452         DllImports vararg functions with non-vararg signatures.
19453
19454 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19455
19456         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19457         meaningfull error message for assemblies written in Managed C++.
19458
19459         * tramp-amd64.c mini-amd64.h: Add support for 
19460         create_trampoline_from_token ().
19461
19462         * aot.c mini-x86.c abcremoval.c: Applied patch from
19463         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19464
19465 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19468         which takes a MonoImage/token as parameter instead of a MonoMethod.
19469
19470         * aot.c: Use the new trampoline for initializing vtables.
19471
19472         * aot.c: Add support for ldfld/stfld_remote wrappers.
19473
19474         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19475         rules for compare <MEM>, IMM.
19476
19477         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19478
19479         * aot.c: Handle inherited finalizers correctly.
19480
19481 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19482
19483         * inssel.brg (stmt): Add a missing _setup_... ().
19484
19485         * aot.c: Save some parts of the class state to the AOT file and use it
19486         to recompute that state when a class is initialized.
19487
19488         * mini.c: Install AOT hooks into the runtime.
19489
19490         * mini.h: Bump AOT file format version.
19491         
19492         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19493         Fixes #72148.
19494
19495         * iltests.il: Add new test.
19496
19497 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19498
19499         * mini.c: fix typo.
19500
19501 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19502
19503         * mini.c: setup the statistical profiler in the thread attach
19504         callback to cope with the new single thread code.
19505
19506 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19507
19508         * mini-ppc.c: ensure we have enough room for the profiler
19509         calls (fixed bug#72084).
19510
19511 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19512
19513         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19514         it.
19515
19516 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19517
19518         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19519
19520 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19521
19522         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19523         to succesfully execute parrotbench).
19524         * ssapre.h: Likewise.
19525
19526 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19527
19528         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19529         variable for stores to method arguments (fixes a SSAPRE issue).
19530
19531 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19532
19533         * mini.c: handle value types in dup, fixes gen-112.cs.
19534
19535 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19536
19537         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19538         sequence for calls in dynamic methods to avoid thunks.
19539
19540 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19541
19542         * mini.c: correctly remove dynamic methods from the hashtable.
19543
19544 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19545
19546         * driver.c: Disabled SSAPRE until fix the bug that appears
19547         in IronPython's parrotbench.
19548
19549 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19550
19551         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19552
19553         * mini.c (mono_method_to_ir): Revert the previous change.
19554         
19555         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19556         when AOT compiling.
19557
19558         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19559         mono_jit_info_table_find () etc. when running under valgrind.
19560
19561         * inssel.brg: Fix warnings.
19562
19563         * mini-exceptions.c: Fix warnings.
19564
19565 2005-01-31  Martin Baulig  <martin@ximian.com>
19566
19567         * driver.c (compile_all_methods_thread_main): Don't try to compile
19568         generic methods or anything which has type parameters.
19569
19570 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19571
19572         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19573
19574         * TestDriver.cs: Add --verbose flags.
19575
19576         * graph.c ssa.c: Fix 64 bit warnings.
19577         
19578         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19579         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19580         Fix 64 bit warnings.
19581
19582         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19583         variable not spotted by gcc.
19584         
19585         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19586         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19587         X86_COMPARE_MEMBASE opcodes.
19588
19589         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19590
19591 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19592
19593         * *: MonoMethod->signature might be NULL now. You *MUST* use
19594         mono_method_signature.
19595
19596 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19597
19598         * driver.c (compile_all_methods_thread_main): Compile the methods
19599         without invoking cctors.
19600
19601 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19602
19603         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
19604         * basic-calls.cs: test for the above.
19605
19606 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19607
19608         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
19609         MonoJitInfo changes.
19610
19611 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
19612
19613         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
19614         eagerly if it contains dynamic methods.
19615         
19616         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
19617
19618         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
19619         trace, it is now computed by an icall from trace_ips.
19620         
19621         * mini-exceptions.c: Fix a warning.
19622
19623 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19624
19625         * mini-exceptions.c: don't bother getting stack trace info if
19626         it's not going to be used.
19627
19628 2005-01-27  Raja R Harinath  <rharinath@novell.com>
19629
19630         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
19631         ssapre-mini-ops.h.
19632
19633 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
19634
19635         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
19636
19637         * aot.c: Avoid calling mono_method_get_header () if not needed.
19638
19639         * mini.h: Bump AOT file format version.
19640         
19641         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19642
19643         * mini.c (mono_print_tree): Print more info for calls.
19644
19645 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19646
19647         * declsec.h: Remove warning by adding missing include for marshal.h
19648
19649 2005-01-26  Martin Baulig  <martin@ximian.com>
19650
19651         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19652         `ip' twice.
19653
19654 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19655
19656         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19657         flags.
19658
19659         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19660
19661         * aot.c (mono_compile_assembly): Fix a warning.
19662
19663 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19664
19665         * declsec.c: Look for security attributes on the original MonoMethod 
19666         (and not the wrapped one). This fix permissions on icalls.
19667
19668 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19669
19670         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19671
19672         * mini.c (mono_allocate_stack_slots): Add a fixme.
19673
19674         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19675
19676 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19677
19678         * inssel.brg: optimize casts of sealed types (more
19679         optimizations waiting for fixes in remoting).
19680
19681 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19682
19683         * inssel.brg (stmt): Add another dummy rule.
19684
19685         * driver.c: Fix warnings.
19686
19687         * driver.c (mono_main): If running under valgrind, instruct glib to use
19688         the system allocation functions so valgrind can track the memory
19689         allocated by the g_... functions.
19690
19691         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19692
19693         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19694
19695         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19696
19697         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19698         variables in try regions.
19699
19700         * mini.c (mini_method_compile): Don't disable optimizations on large
19701         methods when AOT compiling.
19702
19703         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19704         allocate stack slots. Not yet used.
19705
19706 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19707
19708         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19709
19710 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19711
19712         * mini-ppc.c: make the branch info relative as the code
19713         buffer can be reallocated.
19714
19715 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19716
19717         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
19718         * driver.c: Removed the AOT/security restriction. Now initialize the
19719         security manager (in metadata) if --security is used.
19720         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
19721         rather than the pointer to declarative security, when AOT is used.
19722
19723 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
19724
19725         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
19726         basic blocks, reduced intrinsic exception throwing code size.
19727
19728 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
19729
19730         * driver.c (mini_usage): Reorder the usage screen.
19731
19732 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
19733
19734         * mini.c (mono_resolve_patch_target): Fix warning.
19735
19736 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
19739         previous patch.
19740
19741         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19742
19743         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
19744         breaks the amd64 build.
19745
19746         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
19747         register allocation. Fixes #71454.
19748
19749         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19750
19751         * arrays.cs: Add new regression test.   
19752
19753 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19754
19755         * ssapre.c: Turned usage of snprintf to GString.
19756         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
19757         (I left it on by mistake in my previous commit).
19758
19759 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
19760
19761         * mini.c, cfold.c, basic-calls.cs: preserve side effects
19762         on cond branch optimization (fixes bug# 71515).
19763
19764 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19765
19766         * abcremoval.c: Fixed bug 71062.
19767         * abcremoval.h: Likewise.
19768
19769 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19770
19771         * mini.c: Added a new functionality to optimize_branches, the removal
19772         of useless basic blocks, and fixed some problem in the removal of
19773         critical edges; some utility functions added for both purposes.
19774         * ssapre.c: Added complex expression support, and fixed bug 70637.
19775         * ssapre.h: Likewise.
19776         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
19777         enabled in SSAPRE.
19778         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
19779         * driver.c: Re-enabled SSAPRE.
19780
19781 2005-01-19  Martin Baulig  <martin@ximian.com>
19782
19783         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
19784         the result of mono_get_method_constrained().
19785
19786 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
19787
19788         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
19789         manager.
19790
19791 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
19792
19793         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
19794         be detected.  Fixes #59296.
19795
19796 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19797
19798         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
19799         which can happen. Fixes #71361.
19800
19801 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19802
19803         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
19804         manager.
19805
19806 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19809         appdomain-unload.exe to fail.
19810         
19811         * mini.c: Fix some memory leaks.
19812
19813 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19814
19815         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19816         Fixed bug and sped up some codepaths.
19817
19818 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * mini.c: Fix some memory leaks.
19821
19822         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19823         conversion.
19824
19825         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19826
19827         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19828         #71320.
19829
19830         * iltests.il: Add regression test for #71320.
19831
19832 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19833
19834         * mini.c (mono_codegen): Fix installation of profiler hooks.
19835
19836         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19837
19838 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19839
19840         * mini.h, mini.c, cfold.c: optimize access to enum
19841         readonly fields, too. Eval conditional branches if possible
19842         to perform unreachable code removal in more cases.
19843
19844 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
19845
19846         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
19847
19848         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
19849         code manager.
19850
19851         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
19852         WinXP DEP. Fixes #71244.
19853
19854 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
19855
19856         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
19857
19858 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19859
19860         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
19861
19862 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19863
19864         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
19865         changes.
19866
19867         * mini.h: Bump AOT version.
19868
19869         * mini.h (MonoCompile): Change exvar to a hash table.
19870
19871         * mini.c: Allocate a separate exvar for each handler block.
19872
19873         * mini.c: Get rid of the computation of filter_lengths, its not needed.
19874
19875         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
19876         ex var with the pending exception and only throw if the two are equal.
19877         Fixes #68552.
19878         
19879         * exceptions.cs: Add tests for rethrow and nested catch clauses.
19880
19881         * mini-x86.c: Fix warnings.
19882
19883         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
19884         used by all the ports now.
19885
19886         * aot.c: Add write-symbols and save-temps options.
19887
19888 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
19891
19892 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
19893
19894         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
19895         operations.
19896
19897         * tramp-s390.c: Check vtable slot belongs to the domain.
19898
19899         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
19900         as per other platforms.
19901
19902         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
19903
19904 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19905
19906         * driver.c: we don't run the Main() code in a subthread anymore.
19907
19908 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
19909
19910         * mini.c: added experimental rtc support in the statistical
19911         profiler: if the user has the permission, more accurate statistics
19912         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19913         The MONO_RTC value must be restricted to what the linux rtc allows:
19914         power of two from 64 to 8192 Hz.
19915
19916 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19917
19918         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
19919
19920 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
19921
19922         * mini-ppc.c: better icache flush for smp.
19923
19924 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * mini-amd64.c (emit_move_return_value): Fix memory leak.
19927
19928         * mini-x86.c (get_call_info): Add the get_call_info () code from the
19929         amd64 port, not yet used.
19930
19931 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19932
19933         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
19934         a struct type.
19935
19936 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19937
19938         * driver.c: Added --security option to activate the security manager.
19939         Right now this will allow code generation for declarative demands and
19940         is disabled when AOT is specified.
19941         * mini.c: Add code generation for declarative security demands.
19942         * mini.h: Add mono_use_security_manager as an extern gboolean.
19943
19944 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19945
19946         * aot.c (mono_compile_assembly): Speed up compilation a bit by
19947         emitting more dense assembly code.
19948
19949         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
19950         exception throwing stuff.
19951
19952 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19953
19954         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
19955         dead code.
19956
19957         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
19958         left in by mistake.
19959
19960         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
19961         fixed.
19962
19963         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
19964
19965         * tramp-*.c: Only patch vtable slots if the object is in the current
19966         domain. Fixes appdomain-unload.exe.
19967
19968         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
19969         
19970         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
19971         x86 branch.
19972
19973 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * mini.c (reverse_branch_op): New helper function.
19976
19977         * mini.c (optimize_branches): Run the new optimization only on 
19978         platforms which support it. Also reverse all kinds of branches.
19979
19980         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
19981
19982         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
19983         a throw statement.
19984
19985         * mini.c (optimize_branches): Reverse not-equals branches if the false
19986         bblock is a throw. This happens a lot of time with argument checking in
19987         corlib.
19988
19989         * mini.c (mono_codegen): Add support for placing basic blocks after
19990         the function epilogue.
19991
19992         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
19993         function epilogue.
19994         
19995 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
19996
19997         * mini.c (setup_stat_profiler): Only set this up if the platform
19998         supports ITIMER_PROF.
19999
20000 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20003         previous patch.
20004
20005         * inssel.brg: Fix a warning.
20006
20007 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20008
20009         * mini.c: added support for statistical profiler 
20010         (run with: --profile=default:stat).
20011
20012 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20013
20014         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20015
20016         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20017
20018         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20019         related to global registers from the amd64 port.
20020
20021 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20022
20023         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20024
20025         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20026         with global registers.
20027         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20028
20029         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20030
20031 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20032
20033         * debug-mini.c (encode_value): Fix off-by-one.
20034
20035         * aot.c (encode_value): Likewise.
20036
20037         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20038
20039 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20040
20041         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20042         AOT.
20043
20044         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20045         
20046         * aot.c (emit_method_info): Increase size of temp buffer.
20047
20048         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20049         the AOT case.
20050
20051 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * aot.c (emit_method_info): Fix build.
20054         
20055         * aot.c: Further rework of the AOT file format to reduce the size of
20056         the method info data.
20057
20058         * mini.h: Bump AOT file format version.
20059
20060 2004-12-27  Martin Baulig  <martin@ximian.com>
20061
20062         * mini.c (mini_get_method): New static method; call
20063         mono_get_method_full() and mono_get_inflated_method().
20064         (mono_method_to_ir): Use mini_get_method() instead of
20065         mono_get_method_full(). 
20066
20067 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20068
20069         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20070
20071 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20074
20075         * inssel-amd64.brg: Add some optimization rules.
20076
20077 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20078
20079         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20080         standard not GC'd stuff is fine.
20081
20082 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20083
20084         * aot.c: Rework the AOT file format to get rid of most of the global
20085         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20086
20087         * mini.h: Bump AOT file format version.
20088         
20089 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20090
20091         * mini.h: Bump AOT file format version.
20092
20093         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20094         address is inside a GOT.
20095
20096         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20097
20098         * cpu-pentium.md: Increase the maximum size of some instructions which
20099         might involve a got access.
20100         
20101         * mini.c (get_method_from_ip): Another debug helper function.
20102
20103         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20104         when got var accesses are created during the decompose phase.
20105
20106         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20107
20108         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20109         argument mini_compile_method and to MonoCompile, and use this to
20110         determine whenever a given method is compiled for AOT. This allows the
20111         other methods compiled during AOT compilation to be free of AOT stuff,
20112         so the backends does not need to add special support for them by
20113         creating a fake GOT etc.
20114
20115         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20116         longer needed.
20117
20118 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20119
20120         * mini.c (mono_method_to_ir): It turns out that some of the
20121         x-appdomain wrappers are lax with types, so just ignore this for
20122         all wrappers.
20123
20124         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20125         at the vtable->klass. If it is non-shared code we can just use the
20126         vtable.
20127
20128 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20129
20130         * mini-ppc.c: access MonoDomain from tls, too.
20131
20132 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20133
20134         * declsec.c: Removed unused variable (and related warning ;-)
20135
20136 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20137
20138         * iltests.il: New test for LDELEMA on an array of ref types.
20139
20140         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20141         all ldelema's on reftypes.
20142         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20143         it was the wrong place to put it.
20144
20145         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20146         register to pop to make this cleaner, at the request of Paolo.
20147
20148 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20149
20150         * mini-ops.h (OP_GETHASHCODE): New op.
20151
20152         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20153
20154         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20155         operation.
20156
20157         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20158         by 25%.
20159         
20160         * mini-x86.c (mono_arch_output_basic_block): Rather than
20161
20162         add ebp, 4
20163
20164         Emit
20165
20166         pop edx
20167
20168         The first is 3 bytes while the second is 1. This saves 36 kb on
20169         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20170         see a small boost because of icache locality.
20171
20172         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20173
20174 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20175
20176         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20177         started code sharing with the generic code.
20178
20179 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20180
20181         * mini-ppc.c, cpu-g4.md: added code for direct access to
20182         tls data slots.
20183
20184 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20185
20186         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20187          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20188         to OP_TLS_GET.
20189
20190 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20191
20192         * declsec.c|h: Added functions to cache the declarative stack modifiers
20193         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20194         structure.
20195         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20196         created. Register internal calls for System.Security.SecurityFrame::
20197         _GetSecurityFrame and _GetSecurityStack.
20198         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20199         the definitions for the new stack walk/callback mechanism.
20200         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20201         first security frame for LinkDemands and InheritanceDemands) and
20202         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20203         from lupus.
20204         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20205         walk initialization (lupus).
20206
20207 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20208
20209         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20210         idiom.
20211         (handle_loaded_temps): Do not create a temporary variable for
20212         things that we know are temps. They will never be modified.
20213         (mono_spill_call): Set MONO_INST_IS_TEMP
20214         (mono_emulate_opcode): ditto
20215         (emit_tree): ditto
20216         (mono_method_to_ir.CEE_DUP): ditto
20217
20218 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20219
20220         * mini.c (type_to_eval_stack_type): Make this handle the void type
20221         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20222         (emit_tree): use ip_in_bb to special case some common idioms
20223         Update all callers to pass in the IP.
20224         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20225
20226         This gives us a nice 2% speedup in mcs bootstrap.
20227
20228         * mini-x86.c (peephole_pass): Peephole pass to make
20229         mov  [foo], eax
20230         push [foo]
20231
20232         into
20233
20234         mov [foo], eax
20235         push eax
20236
20237         * mini.c (ip_in_bb): new method.
20238         (mono_method_to_ir): use this method rather than doing the hash
20239         lookup ourselves.
20240
20241         * linear-scan.c (mono_linear_scan): When expiring actives, you
20242         don't need to keep around variables that expire on this
20243         instruction. This makes it so that:
20244              a = b + 1
20245         will turn into:
20246              store (ebx add (ebx, 1))
20247         which will become
20248              add ebx, 1
20249
20250 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20251
20252         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20253         combination to avoid doing two copies. Fix up problems with previous
20254         patch.
20255
20256         * mini.c: Fix 64 bit warnings.
20257
20258         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20259
20260 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20261
20262         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20263         changes from the x86 code.
20264
20265         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20266
20267 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20268
20269         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20270         throwing code to reduce its size, unify the AOT and non-aot code and 
20271         get rid of relocations in the AOT case.
20272
20273         * mini-x86.h mini.c exceptions-x86.c 
20274         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20275         raise corlib exceptions which doesn't require relocations in the 
20276         caller.
20277
20278         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20279
20280 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20281
20282         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20283         needed.
20284
20285         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20286         in the AOT case.
20287
20288 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20289
20290         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20291         with add function when used from Inc/dec atomic 
20292         functions. Re-enabled optimization on x86.
20293         * mini-ops.h: renamed atomic_add functions to
20294         allow _add to match the Interlocked::Add and
20295         _add_next to match Interlocked::Inc/Dec.
20296
20297 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20298
20299         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20300         linking of BBs to the end BB, and enabled SSAPRE also with
20301         consprop and copyprop (which was prevented by that bug).
20302
20303 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20304
20305         * mini-x86.c: disabling the Interlocked optimizing code. 
20306
20307 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20310         file version check.
20311         
20312 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20313
20314         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20315         interlocked optimization due lack of support on x86, rewrote 
20316         exchange to take into account that base may be in eax.
20317         
20318         xsp works again; activated Interlocked optimizing code.
20319         
20320 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20321
20322         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20323
20324 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20325
20326         * mini-ops.h: Add new opcodes.
20327
20328         * mini.h: Add new patch types. Add got_var to MonoCompile.
20329
20330         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20331         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20332         make it work with all kinds of patchable code.
20333
20334         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20335         address of the GOT, and referencing entries in the GOT.
20336
20337         * mini.c: Add code to load the GOT address if needed by an opcode.
20338
20339         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20340         independent AOT code on the x86 using an elf-style Global Offset Table.
20341
20342 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20343
20344         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20345
20346 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20347
20348         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20349         when running xsp.
20350
20351 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20352
20353         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20354         of Interlocked:Increment/Decrement/Add as inline ops.
20355         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20356
20357 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20358
20359         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20360         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20361
20362 2004-12-12  Duncan Mak  <duncan@ximian.com>
20363
20364         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20365         again. `patch_info->table_size' is no longer valid after Zoltan's
20366         commit #37636.
20367
20368 2004-12-12  Martin Baulig  <martin@ximian.com>
20369
20370         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20371         if we are the "real" method, ie. not an inlined method inside it.
20372
20373 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20374
20375         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20376         before we look in the special fields table. This fixes
20377         ../tests/thread-static-init.cs.
20378
20379 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20380
20381         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20382         for Array get_Rank and get_Length. Fixes bug #70465.
20383
20384 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20385
20386         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20387         separate structure to reduce the size of MonoJumpInfo.
20388
20389 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20390
20391         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20392
20393 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20394
20395         * mini.c (mini_get_inst_for_method): Changed to allow ports
20396         to return a MonoInst instead of opcode 
20397         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20398         
20399         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20400         Allow ports to return a created MonoInst instead of op-code, will enable
20401         new optimizations.
20402         (renamed mini_get_opcode_for_method to better reflected the functionality)
20403
20404 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
20405
20406         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
20407
20408 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20409
20410         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
20411         Fixes #69985.
20412
20413 2004-12-08  Martin Baulig  <martin@ximian.com>
20414
20415         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
20416         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
20417
20418 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20419
20420         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
20421         correctly.
20422
20423         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20424         arithmetic.
20425
20426 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20427
20428         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20429
20430 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20431
20432         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20433         bug introduced by the previous patch.
20434
20435 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20436
20437         * mini-ppc.c, objectc.cs: handle large structs passed by value
20438         (fixes bug #69972).
20439
20440 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20441
20442         * mini-ppc.c: OP_ARGLIST implementation from
20443         Geoff Norton  <gnorton@customerdna.com>.
20444
20445 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20446
20447         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20448         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20449
20450 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20451
20452         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20453
20454 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20455
20456         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20457         support.
20458
20459 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20460
20461         * mini-sparc.c: Zero out localled-ed memory.
20462
20463         * iltests.il: Add tests for zeroing out localloc-ed memory.
20464
20465 2004-12-04  Martin Baulig  <martin@ximian.com>
20466
20467         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20468         mono_method_get_signature_full().       
20469
20470 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20471
20472         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20473         and some utility functions (always for SSAPRE), integrated SSAPRE.
20474         * mini.h: Likewise.
20475         * driver.c: Added ssapre option.
20476         * ssa.c: Small fix on OP_ARG handling.
20477         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20478         * Makefile.am: Likewise.
20479
20480 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20481
20482         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20483         now in the xp code.
20484
20485         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20486         icall.
20487
20488 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20489
20490         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20491         
20492         * cpu-s390.md : Increase instruction length of oparglist.
20493
20494         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20495
20496 2004-11-30  Martin Baulig  <martin@ximian.com>
20497
20498         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20499         virtual generic methods.  We call a special helper_compile_generic_method()
20500         icall to retrieve the method from the vtable, inflate and compile
20501         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20502
20503         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20504
20505 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20506
20507         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20508
20509 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20510
20511         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20512         Fixes #69929.
20513
20514 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20515
20516         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20517         platforms with PIC aot.
20518
20519 2004-11-28  Martin Baulig  <martin@ximian.com>
20520
20521         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20522         Fixes gen-112.cs.
20523
20524 2004-11-28  Martin Baulig  <martin@ximian.com>
20525
20526         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20527         the result of mono_type_get_underlying_type() to check whether
20528         we're byref.
20529
20530 2004-11-26  Martin Baulig  <martin@ximian.com>
20531
20532         * mini.c
20533         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20534         in the g_assert().
20535
20536 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20537
20538         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20539         the same way as the other arguments so they won't get clobbered.
20540
20541         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20542         calls through R11 since it is clobbered by the trampoline code.
20543
20544 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20545
20546         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20547         pick up in-tree mscorlib.dll.
20548
20549 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20550
20551         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20552
20553         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20554         runtime data/code are now stored in a table similar to the GOT in ELF. 
20555         This allows the code itself to be position independent.
20556
20557         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20558         loading changes.
20559
20560         * aot.c: Attach ELF type (object/function) directives to all global
20561         symbols.
20562
20563         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20564
20565         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20566
20567         * mini-amd64.h: Turn on PIC AOT code.
20568
20569         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20570         returning the offset within an OP_AOTCONST instruction where the GOT
20571         offset needs to be added.
20572
20573         * mini.h: Bump AOT file format version.
20574
20575 2004-11-25  Martin Baulig  <martin@ximian.com>
20576
20577         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20578         uninflated generic methods.
20579
20580 2004-11-25  Martin Baulig  <martin@ximian.com>
20581
20582         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20583
20584 2004-11-24  Martin Baulig  <martin@ximian.com>
20585
20586         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20587         original klass (this only applies for generic instances).
20588
20589 2004-11-24  Martin Baulig  <martin@ximian.com>
20590
20591         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20592         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20593         that array).
20594
20595 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20596
20597         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20598         localloc. Fixes #69678.
20599
20600         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
20601         
20602 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
20603
20604         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
20605         used SSE registers on pinvoke calls. Fixes #69774.
20606
20607 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
20608
20609         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
20610         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
20611
20612 2004-11-23  Raja R Harinath  <rharinath@novell.com>
20613
20614         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
20615         Refer directly to the mcs/ tree.
20616
20617 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20618
20619         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
20620         Check if a trampoline for a synchronized method is required. 
20621
20622 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
20623
20624         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
20625         with localloc if needed. Throe arithmetric exception in
20626         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
20627         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
20628
20629 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
20630
20631         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
20632         types before switching on type.  Fixes #69622.
20633
20634 2004-11-19  Raja R Harinath  <rharinath@novell.com>
20635
20636         * Makefile.am (check-local): New.  Integrate into 'make check'.
20637         (MCS,RUNTIME): Define using in-tree mono and mcs.
20638         (ILASM): New.
20639         (%.exe): Use $(ILASM).
20640
20641 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20642
20643         * mini-ppc.c: adjust initial prolog size (bug #69691).
20644
20645 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20646
20647         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20648         #69664.
20649
20650 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20651
20652         * Makefile.am (clean-local): Rename from 'clean'.
20653
20654 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20655
20656         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20657         to mono_arch_is_int_overflow. 
20658         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20659         SIGFPE events.
20660
20661 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20662
20663         * declsec.c|h: New files to support declarative security attributes.
20664         Added function to check if a method has (applicable) security.
20665         * mini.c|h: Add check for declarative security attributes in
20666         mono_method_check_inlining.
20667         * Makefile.am: Added declsec.c and declsec.h to the build.
20668
20669 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20670
20671         * mini.c, mini.h: update to keep dynamic code info per-domain.
20672
20673 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20674
20675         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20676         (mini_init): Get rid of it from here too.
20677
20678 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20679
20680         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20681         implemented OP_RETHROW (patch by Geoff Norton
20682         <gnorton@customerdna.com>).
20683
20684 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20685
20686         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20687         between appdomains.  Fixes appdomain-unload on PPC.
20688
20689 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20690
20691         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20692         mini-exceptions.c: handle the new wrapper types.
20693         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20694         token value as a MonoClass* when compiling a wrapper.
20695         mono_jit_create_remoting_trampoline now takes an additional
20696         MonoRemotingTarget parameter.
20697         
20698 2004-11-10  Martin Baulig  <martin@localhost>
20699
20700         * mini.c (mono_method_to_ir): Use `generic_container->context'
20701         rather than creating a new one.
20702
20703 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20704
20705         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20706
20707         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20708
20709 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20710
20711         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20712         the experimental aot cache stuff.
20713
20714 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20715
20716         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20717         mini-exceptions.c: update to exception clause structure changes.
20718
20719 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20720
20721         * exceptions-x86.c (throw_exception): Fix warnings.
20722
20723         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
20724         for OP_RETHROW.
20725
20726 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20727
20728         * exceptions-sparc.c (get_throw_exception): Really fix this.
20729
20730 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20731
20732         * tramp-*.c: we no longer support icalls without wrappers, so
20733         a bit of code can be removed here
20734
20735 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
20736
20737         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
20738         patch.
20739
20740         * cpu-sparc.md: Add op_rethrow.
20741
20742         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
20743
20744         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
20745
20746         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
20747         * mini-ops.h: Add OP_RETHROW.
20748
20749         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
20750
20751         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
20752
20753 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
20754         
20755         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
20756         Makes the output much easier to read
20757
20758 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
20759
20760         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
20761         prevents another huge leak when compiling with ssa. Secondly, the
20762         performance of doing this rather than freeing the lists is much
20763         better. GList does a lock every time you allocate a list link,
20764         so that it can use a memory pool. So, it is better to just use
20765         a memory pool of our own.
20766         
20767         * ssa.c, linear-scan.c: replace g_list_remove_link with
20768         g_list_delete.  The remove one does not free the GList, so we were
20769         leaking memory. On -O=all --compile-all with corlib, this cut down
20770         3 MB of allocations.
20771
20772 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
20773
20774         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
20775
20776         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
20777
20778         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
20779         into a new function mono_create_jit_trampoline ().
20780
20781 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
20782
20783         * trace.c (get_spec): Allow tracing of classes without a namespace.
20784
20785 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
20786
20787         * mini.c: Fix pointer overwrite in mini_method_compile.
20788
20789 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
20790
20791         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
20792         The darwin ABI needs some special handling for 1 and 2 byte structs
20793         Lets use lbz/lhz instead of lwz everywhere.
20794         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
20795         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
20796         Use stb/sth for the former, and put the latter always on stack instead of in
20797         argument registers.
20798
20799 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
20800
20801         * trace.c (is_filenamechar): Add '_'.
20802
20803 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
20804
20805         * mini-s390.c: Fix prolog length to allow for large trace requirements.
20806
20807         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20808
20809 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20810
20811         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20812         depends on libmonogc. Fixes #68805.
20813
20814 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20815
20816         * mini.c (mono_jit_free_method): Provide extra information for
20817         this error.  Currently this leaks, but will be turned into a
20818         developer option in the future.
20819
20820 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20821
20822         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20823
20824 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20825
20826         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20827         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20828         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20829
20830 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20831
20832         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20833         trampolines for AOT code.
20834
20835 2004-10-22    <vargaz@freemail.hu>
20836
20837         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20838         constructed types. Fixes #68136.
20839
20840 2004-10-21  Martin Baulig  <martin@ximian.com>
20841
20842         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20843         if it returns true, unwind the stack to the call instruction.
20844
20845 2004-10-21    <vargaz@freemail.hu>
20846
20847         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
20848
20849         * mini.h: Bump AOT version number.
20850
20851         * objects.cs: Add another test for unbox trampolines.
20852
20853         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
20854         valuetype methods.
20855
20856 2004-10-20    <vargaz@freemail.hu>
20857
20858         * driver.c: Add SHARED to the set of optimizations tested.
20859
20860         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
20861
20862         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
20863         used by CEE_NEWARR.
20864
20865         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
20866
20867 2004-10-20  Martin Baulig  <martin@ximian.com>
20868
20869         * mini-exceptions.c (mono_handle_exception): Call
20870         mono_debugger_handle_exception() to tell the debugger about
20871         catch/finally clauses.
20872
20873 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20874
20875         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
20876
20877         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
20878         #68447.
20879
20880 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
20881
20882         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
20883         methods as their native size, fixed bug #57543, #57545.
20884         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
20885         This saves a temporary register and mullw call down into 1 (minor perf
20886         increase for cases like sum = sum * 5;  This use to translate into:
20887             li r11,5
20888             mullw r28,r28,r11
20889         It now translates to
20890             mulli r28,r28,5
20891
20892 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
20893
20894         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
20895         #68388.
20896
20897 2004-10-11  Martin Baulig  <martin@ximian.com>
20898
20899         * mini.c (mono_method_to_ir): If we're a generic method, get the
20900         MonoGenericContainer from our MonoMethodNormal and create a
20901         MonoGenericContext from it.
20902
20903 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20904
20905         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
20906
20907         * basic-long.cs: Add test for checked i8->i2 cast.
20908
20909 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20910
20911         * inssel-ppc.brg: added a couple of speedup rules.
20912
20913 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20914
20915         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
20916         to speed up rebuilds.
20917
20918 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20919
20920         * mini-s390.c: Minor fix to OP_OR_IMM.
20921
20922 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20923
20924         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
20925         better. Fixes appdomain-unload.exe on sparc.
20926
20927 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20928
20929         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
20930         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
20931         see bug 67324.
20932
20933 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
20934
20935         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
20936
20937 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20938
20939         * mini.c: Always generate a field read/write wrapper for members
20940         of the class MarshalByRefObject since the actual instance could
20941         be a CBO.
20942
20943 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20944
20945         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
20946
20947 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20948
20949         * driver.c mini.h trace.c: Move the setting of the main assembly into
20950         a separate function called mono_trace_set_assembly () and call it after
20951         actually loading the main assembly. Fixes #66872.
20952
20953 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20954
20955         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
20956         using the code manager.
20957
20958 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20959
20960         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
20961
20962 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20963
20964         * cpu-amd64.md: Fix bug in previous patch.
20965         
20966         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
20967         #66650.
20968
20969 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
20970
20971         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20972         mini-exceptions.c: updates for changed stack walk interface.
20973
20974 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20975
20976         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
20977
20978 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20979
20980         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
20981
20982 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20983
20984         * driver.c (mini_regression_list): Do not call mono_assembly_close 
20985         since assemblies can't be unloaded.
20986         
20987 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20988
20989         * cpu-amd64.md: Fix more instruction lengths.
20990
20991         * cpu-amd64.md: Fix lengths of some instructions.
20992
20993 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
20994
20995         * inssel.brg: Make the array ldelema check aot friendly.
20996
20997 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20998
20999         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21000
21001         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21002
21003 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21004
21005         * mini-x86.c: Fix build.
21006
21007         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21008         mono_type_get_underlying_type () helper function to simplify code.
21009         
21010 2004-09-09  Martin Baulig  <martin@ximian.com>
21011
21012         * mini-amd64.c: Don't access `type->data.klass' directly, call
21013         mono_class_from_mono_type() instead since the type may be a
21014         generic instance.
21015
21016 2004-09-09  Martin Baulig  <martin@ximian.com>
21017
21018         * mini-amd64.c (get_call_info): Fix support for generic instances.
21019         (add_valuetype): Use mono_class_from_mono_type() to get the class
21020         since we can be a generic instance.
21021
21022 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21023
21024         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21025
21026 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21027
21028         * liveness.c: reset spill costs on each scan: bug 62107
21029
21030 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21031
21032         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21033         unnecessary line that doesn't compile
21034
21035 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21036
21037         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21038         trampolines, make them call an error function so people can fix their
21039         code.
21040
21041 2004-09-06  Martin Baulig  <martin@ximian.com>
21042
21043         * mini.c (mono_method_to_ir): When initializing locals, handle a
21044         generic instances like a valuetype if it's a valuetype and like a
21045         class if it's a class.
21046
21047 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21048
21049         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21050         stack. Fixes #64674.
21051
21052         * exceptions.cs: Add test for unwinding of call arguments.
21053
21054 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21055
21056         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21057         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21058         set the carry/borrow flag). The sparc and s390 implementations
21059         can now use optimized versions (and simplify the code). ppc bugfixes.
21060
21061 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21062
21063         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21064
21065 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21066
21067         * inssel-amd64.brg: Remove leftover 32 bit rule.
21068
21069         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21070
21071 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21072
21073         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21074         mono_arch_find_jit_info functions into a new function. Fix a memory
21075         leak.
21076
21077         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21078         refactored code.
21079         
21080 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21081
21082         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21083         as well.
21084         
21085         * exceptions.cs: Add array size tests.
21086
21087         * mini.c: Allocate a separate icall wrapper for each arity of 
21088         mono_array_new_va. Fixes #59509.
21089
21090         * exceptions.cs: Add testcase for 64578.
21091
21092         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21093
21094         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21095         
21096 2004-09-02  Martin Baulig  <martin@ximian.com>
21097
21098         * mini.c (mono_method_to_ir): When initializing the locals, call
21099         handle_initobj() on the generic instance itself, not its
21100         underlying type.
21101
21102 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21103
21104         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21105         MonoJitInfo for dynamic methods.
21106
21107         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21108
21109         * mini.c: Add support for freeing JIT data for dynamic methods.
21110         
21111 2004-09-01  Martin Baulig  <martin@ximian.com>
21112
21113         * mini-x86.c (is_regsize_var): Added support for generic
21114         instances.
21115         (mono_arch_emit_prolog): Make this compile again, use
21116         `x86_push_imm_template (code)'.
21117
21118 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21119
21120         * mini-x86.c: make all push_imm instructions that get
21121         patched always emit the long form
21122
21123 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21124
21125         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21126         in a per-domain hash.
21127
21128         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21129         types.
21130
21131 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21132
21133         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21134         work.
21135         
21136         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21137         work.
21138
21139         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21140         Beginnings of SSE2 support.
21141
21142         * exceptions.cs: Add more tests for checked int<->uint casts.
21143
21144 2004-08-28  Martin Baulig  <martin@ximian.com>
21145
21146         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21147         generic instances.
21148
21149         * mini.c
21150         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21151         Handle generic instances recursively.
21152
21153 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21154
21155         * iltests.il: test for conv.u8 on a constant
21156
21157 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21158
21159         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21160         LCONV_x4 (shrun_32 (membase)).
21161
21162 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21163
21164         * inssel-x86.brg: c&p rules for push/setret of long
21165
21166 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21167
21168         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21169         compare (regvar, base)
21170
21171         * inssel-x86.brg: more burg love
21172
21173         * inssel.brg: more cleanup
21174
21175         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21176
21177 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21178
21179         * basic-long.cs, basic-calls.cs: new tests for optimization.
21180
21181 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21182
21183         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21184         patch.
21185
21186 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21187
21188         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21189         
21190 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21191
21192         * inssel.brg (mini_emit_memcpy): use 
21193         NO_UNALIGNED_ACCESS to disable memcpy optimization
21194
21195 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21196
21197         * mini-amd64.c: Handle generic types in various places.
21198
21199         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21200
21201 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21202
21203         * mini.c (handle_box): Fix warning.
21204
21205         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21206
21207         * mini-amd64.h: Enable the emit_state optimization.
21208
21209         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21210
21211         * mini-amd64.c: Add some new 64 bit peephole opts.
21212
21213         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21214
21215         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21216
21217         * mini-amd64.c: Register allocator fixes.
21218
21219         * mini.c: Add an optimization to emit_state to avoid allocation of new
21220         registers on some platforms.
21221
21222 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21223
21224         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21225
21226         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21227         allocation. Fixes #63085.
21228
21229         * basic-long.cs: Add new regression test.
21230
21231         * mini-amd64.c: Register allocator improvements.
21232
21233 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21234
21235         * mini-amd64.c (read_tls_offset_from_method): Add another code
21236         sequence.
21237
21238         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21239         instruction sequence for nullifying class init trampolines.
21240
21241         * objects.cs: Add new regalloc test.
21242
21243         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21244
21245 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21246
21247         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21248         
21249         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21250         arguments.
21251
21252         * driver.c: Fix profiling after TLS changes.
21253         
21254         * driver.c (mono_main): Set mono_stats.enabled if needed.
21255
21256         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21257         CEE_BOX.
21258
21259 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21260
21261         * mini-x86.c: use a 1 op rather than a 2 op tls access
21262         instruction -> faster.
21263
21264 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21265
21266         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21267         x86 backend.
21268
21269 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21270
21271         * exceptions-sparc.c (throw_exception): fix typo
21272
21273 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21274
21275         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21276         set tree->dreg correctly with tls. Allow any
21277         register to be used.
21278
21279         * mini-x86.c (read_tls_offset_from_method): add new code
21280         generation pattern seen with GCC.
21281
21282
21283 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21284
21285         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21286         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21287         exceptions-sparc.c: fix some performance issues in exception
21288         handling and setting of the stack trace for exceptions that were
21289         already thrown.
21290
21291 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21292
21293         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21294         x86 backend.
21295         
21296         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21297         registers.
21298
21299 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21300
21301         This patch inlines tls access, when possible.
21302         
21303         * mini.h: new arch functions for TLS intrinsics.
21304         All platforms updated with a stub.
21305
21306         * mini.c: use the new intrinsics
21307
21308         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21309         arch specific intrinsic for tls variables
21310
21311 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21312
21313         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21314         under windows.
21315
21316 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21317
21318         * mini.c: thread local allocation
21319
21320 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21321
21322         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21323
21324         * Makefile.am: Link against the static version of libmonogc.
21325         
21326         * Makefile.am: Link the static versions of the convenience libraries
21327         into the mono executable.
21328
21329         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21330
21331 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21332
21333         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21334         on integer overflow.
21335
21336         * mini-amd64.c: Reorganize function call code.
21337
21338         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21339
21340 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21341
21342         * inssel-x86.brg: use xor eax,eax.
21343         
21344         * basic.cs: new tests
21345
21346 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21347
21348         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21349         in exception throwing code.
21350         
21351 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21352
21353         * inssel-x86.brg: use xor esi,esi.
21354
21355 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21356
21357         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21358         can trace methods compiled during mini_init () too.
21359
21360         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21361         CEE_CONV_U4.
21362
21363 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21364
21365         * Makefile.am: static link on x86 (r=zoltan)
21366
21367 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21368
21369         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21370         code since it causes some programs to fail.
21371
21372 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21373
21374         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21375
21376 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21377
21378         * mini.c: ovfops_op_map - add STACK_OBJ case for
21379         CONV_I 
21380         * basic.cs: add test_0_pin_string as test
21381         case for above.
21382
21383 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21384
21385         * Makefile.am: build C# if srcdir != builddir
21386
21387 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21388
21389         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21390         fall-through blocks.
21391
21392 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21393
21394         * driver.c: enable loop by default again and include abcrem in -O=all.
21395
21396 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21397
21398         * iltests.il: Add some localloc tests.
21399
21400         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21401
21402         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
21403         Fixes #62574.
21404
21405         * inssel-amd64.brg: Add some optimizations.
21406
21407         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
21408         for gcc-3.4.
21409
21410         * Makefile.am: Statically link mono against libmono on AMD64.
21411         
21412         * mini-amd64.c inssel-amd64.brg: Optimizations.
21413
21414 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
21415
21416         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
21417
21418         * tramp-amd64.c: Patch calling code in trampolines.
21419
21420 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
21421
21422         * mini-amd64.c: pinvoke struct passing fixes.
21423
21424 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21425
21426         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21427         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21428
21429 2004-08-05  Duncan Mak  <duncan@ximian.com>
21430
21431         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21432         CEE_LDELEM_ANY.
21433
21434 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21435
21436         * mini-amd64.c (emit_move_return_value): Move return value for normal
21437         calls too.
21438
21439 2004-08-05  Martin Baulig  <martin@ximian.com>
21440
21441         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21442         `type->type'; just modify `type' itself when dealing with enums
21443         and generic instances.
21444         (check_call_signature): Make `simple_type' a `MonoType *'.
21445
21446 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21447
21448         * mini.c: Use OP_PADD to add offsets to addresses.
21449
21450         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21451
21452 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21453
21454         * mini-sparc.c (mono_arch_emit_epilog): fix check
21455         for folding last op into restore instruction
21456
21457 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21458
21459         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21460         helper methods using the code manager.
21461         
21462         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21463
21464         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21465
21466 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21467         
21468         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21469           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21470
21471         * mini-s390.c: fix tail processing
21472
21473 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21474
21475         * mini-ppc.c: mul.ovf.un exception name fix.
21476
21477 2004-08-03  Martin Baulig  <martin@ximian.com>
21478
21479         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21480         instances; before jumping to `handle_enum', also modify `ptype'.
21481
21482 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21483
21484         * cpu-sparc.md: fcall maximal length too small.
21485
21486 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21487
21488         * mini-amd64.c mini.h: Add initial support for passing/returning 
21489         structures to/from pinvoked methods.
21490
21491 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21492
21493         * mini-ppc.c: reg allocator fix.
21494
21495 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21496
21497         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21498
21499         * inssel.brg: Optimize memset on 64 bit machines.
21500
21501         * mini-amd64.c: Fix some vararg cases.
21502
21503 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21504
21505         * mini-s390.c: Corrected macro in emit_float_to_int
21506
21507         * s390-abi.cs: Tests to exercise the s390 ABI
21508
21509 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21510
21511         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21512         caller saved regs.
21513
21514         * basic.cs: Add a test for add.ovf.un.
21515
21516 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21517
21518         * mini-sparc.c: add case for OP_IDIV_UN
21519
21520 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21521
21522         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21523         
21524         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21525
21526 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21527
21528         * basic.cs: regression tests.
21529
21530         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21531         regressions.
21532
21533 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21534
21535         * basic.cs: Add a new test.
21536
21537         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21538         and AOT. Various fixes and optimizations.
21539
21540         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21541
21542 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21543
21544         * mini-ppc.c: make sure temp regs are not used for global reg
21545         allocation.
21546
21547 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21548
21549         * cpu-sparc.md: conv_i8 fix for 64bits
21550
21551         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21552
21553 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21554         
21555         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21556         add opcode for cmp BYTE PTR [eax], imm.
21557
21558         * inssel.brg: Make memcpy and memset takes bases.
21559
21560 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21561
21562         * *-amd64.*: More AMD64 work.
21563         
21564 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21565
21566         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21567         add a compare-not-equal opcode.
21568         
21569 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21570
21571         * mini.c: Use mono_init_from_assembly instead of mono_init.
21572         
21573 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21574
21575         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21576
21577         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21578
21579         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21580
21581         * inssel.brg: 64 bit fixes.
21582
21583         * mini.h (MonoCallInst): Add some AMD64 specific data.
21584
21585         * mini.h: Add some OP_P opcodes.
21586
21587 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21588
21589         * basic.cs: tests for 61797 and 61740
21590
21591 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21592
21593         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21594         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21595
21596 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21597
21598         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
21599
21600         * *-amd64*.*: Ongoing AMD64 work.
21601
21602 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
21603
21604         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
21605
21606         * *-amd64*: Ongoing AMD64 work.
21607
21608         * mini-arch.h: Add AMD64 support.
21609
21610         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
21611
21612         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
21613
21614         * mini-ops.h: Add new opcodes.
21615
21616         * Makefile.am: Add AMD64 support.
21617
21618         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
21619         rules into the inssel-long*.brg files.
21620
21621         * *-amd64.*: Add beginnings of AMD64 backend.
21622
21623 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
21624
21625         * mini.c (print_dfn): commenting out the code that prints
21626         the cil. With -O=deadce, this makes -v -v crash.
21627         
21628         * cpu-pentium.md: make checkthis have a length of 2
21629
21630 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
21631
21632         * mini-sparc.h: fix implementations of __builtin
21633         functions for Sun compiler for V9.
21634
21635 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21636
21637         * mini.c: use the new stelem.ref wrapper
21638         * exceptions.cs, arrays.cs: new stelem.ref tests
21639
21640 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21641
21642         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21643         new XSP should work with these changes).
21644
21645 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21646         
21647         * inssel-{long32,x86,}.brg: trivial optimizations.
21648         
21649 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21650
21651         * mini.c: load value when emitting box operation in
21652         constrained calls.
21653
21654 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21655
21656         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21657         is one byte shorter than cmp DWORD PTR [eax], 0.
21658
21659 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21660
21661         * inssel-ppc.brg: arguments on the stack are always
21662         relative to the stack pointer (spotted by Neale Ferguson).
21663
21664 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21665
21666         * exceptions-x86.c: delay appending the method name to the trace until
21667         after mono_jit_info_table_find is called, as this gets the real
21668         MonoMethod.
21669
21670 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21671
21672         * aot.c: register roots
21673
21674 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21675
21676         * aot.c : I could just use PLATFORM_WIN32 flag.
21677
21678 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21679
21680         * aot.c : Reverting the previous fix. This time it broke linux build.
21681
21682 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21683
21684         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21685
21686 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21687
21688         * mini.c (handle_stack_args): Remove some more debugging code.
21689         
21690         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21691
21692         * driver.c mini.h aot.c: Allow additional options to be specified with
21693         --aot and pass them to mono_compile_assembly.
21694
21695         * aot.c: Add experimental code to AOT compile all loaded assemblies
21696         on demand and save the code into a cache in the filesystem.
21697
21698         * aot.c: Add support for more wrapper methods.
21699         
21700         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21701         58863.
21702
21703         * cpu-*.md: Remove removed opcodes.
21704
21705         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21706         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21707         related icalls to marshal.c.
21708
21709 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21710
21711         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21712
21713         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
21714
21715         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
21716
21717 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21718         * liveness.c: If liveness is recomputated we need to reset the information
21719         for each variable. This way, if the liveness range has been narrowed
21720         by optimizations that happened after the last computation, we can return
21721         a smaller range.
21722         
21723         For example, if you have
21724         
21725         {
21726                 int i = 0;
21727                 
21728                 // Tons of code that does not affect i
21729                 
21730                 i = foo ();
21731                 ...
21732         }
21733         
21734         i = 0 is dead code and will be removed by SSA. However, when
21735         linear scan gets to the code, i will still appear to be live
21736         throughout the entire block. This prevents good register allocation.
21737
21738 2004-07-06  Martin Baulig  <martin@ximian.com>
21739
21740         * debug-mini.c (mono_debug_init_method): Allow
21741         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
21742         (mono_debug_add_icall_wrapper): New method.
21743
21744         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
21745
21746 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21747
21748         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
21749         optimization.
21750
21751 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21752
21753         * aot.c (mono_aot_load_method): Fix loading of debug info.
21754
21755 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21756
21757         * aot.c: Add logging support.
21758
21759 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21760
21761         * mini.h: Add prototype for mono_print_method_from_ip.
21762
21763         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
21764
21765         * inssel.brg: 64 bit fixes.
21766
21767         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
21768         inssel-long32.brg.
21769
21770         * Makefile.am: Add SPARC64 support.
21771
21772 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21773
21774         * aot.c: Fix alignment problems on 32 bit platforms.
21775
21776 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21777
21778         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
21779         SPARC64.
21780
21781         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
21782         problems.
21783
21784         * mini.h: Bump AOT file version. Some 64 bit fixes.
21785
21786 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21787
21788         * inssel-sparc.brg: Add new rule to avoid register moves.
21789
21790         * inssel.brg: Add ldind_to_load_membase helper function.
21791
21792 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21793
21794         * mini.c: OffsetToStringData intrinsic.
21795         
21796 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
21799
21800         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
21801         regression tests.
21802
21803         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
21804 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21805
21806         * mini.c: reinstated mono_compile_get_interface_var()
21807         on x86, too, since the change breaks the Gtk# build there as well.
21808
21809 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21810
21811         * driver.c: remove loop from the default optimizations: it seems to
21812         interact badly with some of the other options (see bug #60613).
21813
21814 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21815
21816         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21817         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21818
21819 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21820
21821         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21822         vararg-using methods.
21823
21824 2004-06-21  Martin Baulig  <martin@ximian.com>
21825
21826         * mini/mini-exceptions.c
21827         (mono_handle_exception): Added `gpointer original_ip' argument.
21828         After calling mono_unhandled_exception(), call
21829         mono_debugger_unhandled_exception() and if that returns true,
21830         restore the context and return.
21831
21832 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21833
21834         * mini-ppc.c: prefer the use of relative branches so
21835         they won't need to be patched in aot code (patch from Patrick Beard).
21836
21837 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21838
21839         * aot.c: patch from Patrick Beard to make the output assembly
21840         more correct for the MacOSX assembler. Small tweak to
21841         generate sane images on Linux/PPC, too.
21842
21843 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21844
21845         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
21846         case until bug #59509 is fixed (shows up in #60332).
21847
21848 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21849
21850         * mini.c: make sure the needed wrappers are compiled, too, with
21851         precomp.
21852
21853 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
21854
21855         * driver.c: remove NPTL reference in --version output.
21856
21857 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21858
21859         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
21860         generate valid assembly for the Mach-O assembler.
21861
21862 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21863
21864         * driver.c: don't include abcrem in the all optimization specifier
21865         since it slows down jit compilation too much for now.
21866
21867 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
21868
21869         * mini.c: use BIGMUL only if both operands have the same signage.
21870         * iltests.il: Test for bug 60056. (errors related to signage in
21871         BIGMUL).
21872
21873         r=lupus.
21874
21875 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
21876
21877         * mini.c, aot.c: memory leak fixes.
21878
21879 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21880
21881         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
21882
21883 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
21884
21885         * Makefile.am: remove the -static hack completely, it links in
21886         statically glib as well.
21887
21888 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
21889
21890         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
21891         * exceptions.cs: make it compile with new mcs/csc.
21892
21893 2004-06-03 Massimiliano Mantione <massi@ximian.com>
21894         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
21895         and added relevant test case.
21896
21897 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21898
21899         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
21900         regressions in gtk-sharp.
21901
21902 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21903
21904         * exceptions.cs: New regression tests.
21905
21906         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
21907
21908 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21909
21910         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21911
21912 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21913
21914         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
21915
21916         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
21917
21918 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
21919
21920         * mini.c (mono_jit_runtime_invoke): Init class in this
21921         method instead of trusting mono_jit_compile_method to
21922         do the work (because wrappers can be in object class)
21923
21924 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
21925
21926         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
21927
21928         * basic-long.cs: New regression test.
21929
21930 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
21931
21932         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
21933         and div/rem checks.
21934
21935 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21936
21937         * Makefile.am: fix miguel's change to build mono statically against
21938         libmono (track build dependencies).
21939
21940 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21941
21942         * cfold.c: Some glib versions do not have G_MININT32.
21943
21944 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
21945
21946         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
21947         with precision of tan, atan, sin and cos, and implemented related
21948         regressions tests (fixes bug 54467, but one new problem appeared and
21949         is not fixed yet).
21950
21951 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21952
21953         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
21954
21955         * exceptions.cs: Add test for constant folding && division by zero.
21956
21957         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
21958         since driver.c is in libmono too, so the optimization was useless.
21959
21960         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
21961         variable to driver.c so the compiler can emit more efficient code to
21962         access them.
21963
21964 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21965
21966         * Makefile.am: don't distribute generated inssel.[ch] files.
21967
21968 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21969
21970         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
21971         into the default appdomain. Fixes #58707.
21972
21973         * jit-icalls.c: Remove the broken approximation for truncl, doing
21974         no conversion is better.
21975
21976         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
21977         Fixes #58863.
21978
21979 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21980
21981         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
21982         of the mcrxr instruction which is not available on some processors
21983         even if it's documented to be. Implement add and sub overflow correctly
21984         (still not complete for long unsigned). Speed up icalls a bit.
21985
21986 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
21987
21988         * mini.c (mono_jit_compile_method_with_opt): Make sure that
21989         we run .cctor in the current domain instead of target_domain.
21990         
21991         Fixes bug #58558, .cctor not being called in -O=shared.
21992
21993 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21994
21995         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
21996
21997 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
21998
21999         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22000         which can be done with an imm8, do it that way.
22001         (mono_arch_output_basic_block): ditto for a jmp
22002         (mono_arch_emit_prolog): Computate maximum offset of a label.
22003
22004 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22005
22006         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22007         now tries to allocate prefered physical reg's for virtual
22008         regs. This reduces the number of emited spills/loads with
22009         20-30% on our core assemblies.
22010
22011 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22012
22013         * jit-icalls.c: truncl() is not needed and trunc() is
22014         the correct thing to do anyway (bug #58287).
22015
22016 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22019         if available.
22020
22021 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22022
22023         * driver.c: enable loop optimizations by default.
22024
22025 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22026
22027         * mini-x86.c: fix calc of max loop size when aligning loops start.
22028
22029 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22030
22031         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22032         the stack.
22033
22034 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22035
22036         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22037         should set carry.
22038
22039         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22040
22041         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22042         
22043         * mini.c (inline_method): Allways inline some wrappers even if the cost
22044         is too large. Fixes #58785.
22045
22046         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22047         
22048 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22051         (crichton@gimp.org). Beginning of support for sparc/linux.
22052
22053         * mini-sparc.c: Optimize retrieval of LMF address.
22054
22055 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22056
22057         * exceptions-ppc.c:  handle alloca in methods with clauses.
22058
22059 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22060
22061         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22062
22063 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22064
22065         * mini.c: Delegate most of the abort signal work to 
22066           mono_thread_request_interruption, which also handles Stop and Suspend
22067           states.
22068
22069 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22070
22071         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22072         supports the save/restore lmf opcodes.
22073
22074 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22075
22076         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22077         by gcc-3.4 as well.
22078
22079         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22080
22081 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22082
22083         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22084         methods which contain array accesses.
22085
22086         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22087         boundaries. Fixes #58537.
22088
22089         * iltests.il: Add regression test for #58537.
22090
22091 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22092
22093         * mini-x86.c (mono_arch_local_regalloc): Last part of
22094         fix for bug #58633 (releasing register to early).
22095
22096 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22097
22098         * basic-long.cs: Add new regression test.
22099
22100 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22101
22102         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22103         register too early on the chain.
22104
22105 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22106
22107         * mini.c (create_helper_signature): Use a helper function to reduce
22108         the code which needs to be written. Also set the calling convention of
22109         icalls on windows. Fixes #57840.
22110
22111 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22112
22113         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22114         exceptions-ppc.c: added helper function to get the instruction address
22115         from a signal handler context.
22116
22117 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22118
22119         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22120         from gonzalo.
22121
22122 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22123
22124         * helpers.c: Add new env variable to pass args to objdump.
22125         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22126
22127 2004-05-17  Radek Doulik  <rodo@ximian.com>
22128
22129         * Makefile.am (common_sources): added abcremoval.h so it get
22130         disted and daily mono packages on go-mono.com will build again
22131
22132 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22133
22134         * abcremoval.c: Fixed coding style, added copyright header.
22135
22136         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22137
22138         * mini.h: Added prototype for abc removal main function.
22139
22140         * build_relations_propagation_table.pl: Added copyright header.
22141
22142 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22143
22144         * basic-long.cs: reg test for complex ceq_long bug.
22145
22146 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22147
22148         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22149         reg in long and clob case (bug #58343). Fixed/added comments.
22150
22151 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22152
22153         * mini.c (mono_jit_runtime_invoke): Follow new convention
22154         of calling the invoke method with an function pointer.
22155
22156 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22157
22158         * ChangeLog: Fix author of memory leak patch.
22159
22160 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22161
22162         * Makefile.am: fix make dist as well...
22163
22164
22165 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22166
22167         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22168         on archs where pointers are 4 bytes long.
22169
22170         * Makefile.am: Added abcremoval.c source file.
22171
22172         * abcremoval.c: Added abcremoval.c.
22173
22174         * abcremoval.h: Added abcremoval.h.
22175
22176         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22177
22178         * inssel.brg: Enabled bounds check removal.
22179
22180         * mini.c: Added support for abcrem optimization.
22181
22182         * mini.h: Added abcrem optimization label.
22183
22184         * driver.c: Added support for abcrem optimization.
22185
22186         * propagated_relations_table.def: Added propagated_relations_table.def.
22187
22188 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22189
22190         * mini.c, cfold.c: fix style.
22191
22192 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22193
22194         * mini.c: handle issue with the low-level implementation of
22195         some long opcodes (bug #54209).
22196
22197 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22198
22199         * basic.cs: test for my new cmov stuff.
22200
22201 2004-05-13      Patrik Torstensson
22202
22203         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22204         opt and added peephole documentation.
22205
22206 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22207
22208         * tramp-ppc.c: rewrote the generic trampoline code.
22209
22210 2004-05-11      Patrik Torstensson
22211
22212         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22213
22214 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22215
22216         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22217
22218         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22219         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22220
22221         * mini.c: Add new icalls for AsAny marshalling.
22222
22223 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22224
22225         * tramp-ppc.c, mini-ppc.c: more cleanups.
22226
22227 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22228
22229         * mini.c: no warnings.
22230
22231 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22232
22233         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22234
22235 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22236
22237         * mini.c: In the thread abort signal handler, if the thread is in the
22238         process of being stoped, don't throw the Abort exception, just stop the
22239         thread.
22240
22241 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22242
22243         * tramp-ppc.c: removed old code.
22244
22245 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22246
22247         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22248         do some simple speed optimizations on ppc.
22249
22250 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22251
22252         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22253         and large offsets in load/store.
22254
22255 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22256
22257         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22258         it causes regressions.
22259
22260 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22261
22262         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22263         support.
22264
22265 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22266
22267         * jit-icalls.c: remove warnings.
22268         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22269         speedups for unsafe code.
22270
22271 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22272
22273         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22274
22275 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22276
22277         * basic-calls.cs: Add new regression test.
22278
22279         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22280         more portable.
22281
22282         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22283
22284         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22285         is no longer used.
22286
22287 2004-05-06      Patrik Torstensson
22288
22289         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22290         long reg allocation in any reg (not only eax:edx) and implemented 
22291         long shl/shr ops in asm instead of helpers.
22292
22293 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22294
22295         * mini-sparc.h: Fix warnings.
22296
22297         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22298         stack.
22299
22300         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22301         separate statement for clarity.
22302
22303         * mini-sparc.c: Update status.
22304
22305 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22306
22307         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22308         here.
22309
22310 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22311
22312         * inssel-ppc.brg: another small pre-release workaround:
22313         we don't do overflow detection for long_sub_un.
22314
22315 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22316
22317         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22318         (also works around a weird ppc bug: 57957).
22319
22320 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22321
22322         * tramp-ppc.c: trampoline fixes.
22323
22324 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22325
22326         * mini-ppc.c: fixed typos.
22327
22328 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22329
22330         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22331         at the top of the stack. Fixed typos. Use a frame registers
22332         for all the methods with exception clauses.
22333
22334 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22335
22336         * exceptions-ppc.c: restore fp registers.
22337
22338 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22339
22340         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22341         order from the stack top (moved the stack room to save the
22342         return value for trace after the param area). Fixed corruption
22343         in restoring registers on unwind.
22344
22345 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22346
22347         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22348
22349 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22350
22351         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22352         and prolog/epilog for methods that use it. Allow
22353         enough param area room for varargs methods. Fix miguel's
22354         breakage in exception handling.
22355
22356 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22357
22358         * Makefile.am: run genmdesc only on current arch.
22359
22360 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22361
22362         * exceptions-x86.c:
22363         * mini-x86.h: fix the build on windows.
22364
22365 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22366
22367         * 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.
22368
22369         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22370
22371         * mini-exceptions.c: New file.
22372         
22373         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22374         Move some parts of the x86 exception handling code to an 
22375         arch-independent file so it can be shared with other ports.
22376
22377 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22378
22379         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22380
22381 2004-04-26  David Waite  <mass@akuma.org>
22382
22383         * driver.c: remove comma from end of enumeration declaration
22384
22385 2004-04-26  Jackson Harper  <jackson@ximian.com>
22386
22387         * driver.c: parse config file before loading first assembly. This
22388         allows the user gac to be enabled/disabled. 
22389         
22390 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22391
22392         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22393         simpler mechanism: we do not care what is encoded initially
22394         (branch absolute or relative), we care about the code and its
22395         target.  I kept the old code for reference for now.
22396
22397         The new code tries first to determine if the jump is anywhere in
22398         the -/+32 absolute meg range, if it succeeds, it encodes using the
22399         absolute branch;  If not, it tried to find something in the
22400         relative range, if not, it uses the handle_thunk code. 
22401
22402 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
22403
22404         * exceptions-ppc.c: use the correct ip register on macosx.
22405
22406 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
22407
22408         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
22409
22410 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
22411
22412         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
22413         Raise exception on integer divide by zero by hand since the hw
22414         doesn't support it. Handle NaNs in FP compares.
22415
22416 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22417
22418         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
22419         code reducing duplication between the platforms and enabled
22420         signal exception handling (on linux for now).
22421
22422 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22423
22424         * exceptions-ppc.c: more macosx support.
22425
22426 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22427
22428         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22429
22430 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22431
22432         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22433
22434 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22435
22436         * iltests.il: more tests.
22437
22438 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22439
22440         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22441         vars as well.
22442
22443 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22444
22445         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22446
22447 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22448
22449         * liveness.c: Mark variables as volatile in all basic blocks reachable
22450         from exception clauses.
22451
22452 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22453
22454         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22455         inlining.
22456
22457 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22458
22459         * iltests.il, basic.cs: more tests for regalloc.
22460
22461 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22462
22463         * iltests.il: Some tests for register allocation modifications
22464         I have locally.
22465
22466 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22467
22468         * exceptions.cs: Add regression test for bug #56782.
22469
22470         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22471         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22472         the beauty of fixing the same thing in 5 different files...
22473
22474 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22475
22476         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22477         methods.
22478
22479 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22480
22481         * mini.c: Add support for STRWLPARRAY marshalling convention.
22482
22483 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22484
22485         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22486         to init the context to setup the regs pointer).
22487
22488 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22489
22490         * exceptions-ppc.c: more exceptions work.
22491
22492 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22493
22494         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22495         not allowed.
22496
22497 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22498
22499         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22500         can use the memory directly.
22501
22502         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22503
22504         add x86_add_membase, x86_sub_membase, x86_mul_membase
22505
22506 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22507
22508         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22509         GENERAL_REGS they were also hardcoded for all PPC ports.
22510
22511         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22512
22513         Remove hard-coded limit for floating point registers, use
22514         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22515
22516         Notice that in MacOS X calling conventions you can fit a lot more
22517         floating point values in registers, so I should update the PInvoke
22518         test to excercise the passing of floating point values on the
22519         stack (currently broken).
22520         
22521 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22522
22523         * tramp-ppc.c (create_trampoline_code): Added
22524         JUMP_TRAMPOLINE_SIZE. 
22525         (ppc_magic_trampoline): Follow the pattern from
22526         x86_magic_trampoline: if code is set to zero, return. 
22527         (create_trampoline_code): Always pass MonoMethod to the jump
22528         trampoline, before it was passing a null.
22529         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22530         share the code with mono_arch_create_jit_trampoline. 
22531
22532         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22533         implemented.
22534         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22535         implemented.  
22536
22537         * cpu-g4.md: Added length for jmp instruction, the worst case
22538         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22539         for save_lmf).
22540
22541 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22542
22543         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22544
22545 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22546
22547         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22548         before each IL instruction.
22549
22550         * mini.c (CEE_BOX): Fix warnings.
22551
22552 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22553
22554         * mini.c: removed a few unused vars and extra whitespace.
22555
22556 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22557
22558         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22559         checks.
22560         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22561         index.
22562         (OP_GETCHR): use the above
22563         (CEE_LDELEMA): use the above.
22564
22565         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22566         version of the generic impl.
22567         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22568         (CEE_LDELEMA): use the above.
22569
22570 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22571
22572         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22573         Fixes #56317.
22574
22575         * iltests.il: Added new regression test for #56317.
22576
22577 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22578
22579         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22580         under NetBSD. Fixes #56450.
22581
22582         * liveness.c (update_gen_kill_set): Fix previous patch.
22583
22584 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22585
22586         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22587
22588 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22589
22590         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22591         ldsfld and ldsflda.
22592
22593         * inssel-sparc.brg: Add more optimizations.
22594
22595         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22596
22597 2004-04-01  Martin Baulig  <martin@ximian.com>
22598
22599         * mini.c (handle_box): New static function; moved the
22600         implementation of CEE_BOX here.
22601         (mono_method_to_ir): Added `constrained_call' variable.
22602         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
22603         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
22604         mono_method_get_constrained() to get the method.
22605
22606 2004-04-01  Martin Baulig  <martin@ximian.com>
22607
22608         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
22609         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
22610         (mono_method_to_ir): We don't need these macros anymore since
22611         mono_class_get_full() already takes care of it. 
22612
22613 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22614
22615         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
22616         use @function (as doesn't accept #function here) and check the return
22617         value of system and stop if fails.
22618
22619 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22620
22621         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
22622
22623 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
22624
22625         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
22626
22627         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
22628
22629         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
22630         #56223.
22631
22632         * basic-long.cs: Add test for negation of Int64.MinValue.
22633
22634 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
22635
22636         * mini-sparc.c: Update status.
22637
22638         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
22639
22640         * exceptions-sparc.c: Fix return value in filters.
22641
22642         * inssel-sparc.brg: Fix register allocation in some rules.
22643
22644 2004-03-28  Martin Baulig  <martin@ximian.com>
22645
22646         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22647         if neccessary.  
22648
22649 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22650
22651         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22652         
22653         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22654         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22655         remove unused conv_u4 opcode.
22656
22657         * mini-x86.c: Remove valgrind workaround since it slows down things
22658         even when mono is not run under valgrind.
22659
22660 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22661
22662         * mini-sparc.c: Update status.
22663
22664         * inssel-sparc.brg: Add some optimizations.
22665
22666         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22667         future delay slot filling. Add support for varargs, tail calls and JMP.
22668
22669         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22670         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22671
22672         * inssel.brg: Fix register allocation in OP_ARGLIST.
22673
22674         * inssel.brg: Fix warnings.
22675
22676 2004-03-25  Martin Baulig  <martin@ximian.com>
22677
22678         * mini.c (inflate_generic_field): Removed.
22679         (mini_get_method): Removed, use mono_get_method_full(),
22680         (mini_get_class): Removed, use mono_class_get_full().
22681         (mono_method_to_ir): Pass our generic context to
22682         mono_field_from_token().        
22683
22684 2004-03-25  Martin Baulig  <martin@ximian.com>
22685
22686         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22687         of a `MonoMethod *'.
22688         (mini_get_method): Take a `MonoGenericContext *' instead
22689         of a `MonoMethod *'.
22690         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22691         a new local variable called `generic_context' which holds the
22692         current `MonoGenericContext *'; use it to lookup things.
22693
22694 2004-03-24  Martin Baulig  <martin@ximian.com>
22695
22696         * mini.c (mini_get_class): New static method; if we're inside a
22697         generic instance, inflate the class if neccessary.
22698         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22699
22700 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22701
22702         * iltests.il: New regression test for #55976.
22703
22704         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22705         #55976.
22706
22707 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22708
22709         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22710         output.
22711
22712 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22713
22714         * liveness.c: Consider SSA stores as well as loads when making vars
22715         volatile.
22716
22717         * exceptions.cs: New regression tests for register allocation.
22718         
22719 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22720
22721         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
22722         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
22723           domain lock only to protect puntual access to data structures.
22724           Added access lock for sighash, jit_icall_hash_name, 
22725           jit_icall_hash_addr and domain->code_mp.
22726
22727 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
22728
22729         * driver.c: Print SIGSEGV handling method.
22730
22731         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
22732
22733         * mini.c (setup_jit_tls_data): Handle case when this is called
22734         multiple times for a thread.
22735
22736         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
22737         is different from fbxx_un. Fixes #54303. Also use constants instead of
22738         magic numbers in a lot of places.
22739
22740 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
22741
22742         * exceptions.cs: Fix cctor test when --regression is used.
22743
22744 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
22745
22746         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
22747         for Linux/ppc.
22748
22749 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22750
22751         * inssel-ppc.brg: fixed register assignments for some rules.
22752
22753 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22754
22755         * exceptions.cs: Add test for exceptions in static constructors.
22756
22757         * mini.c (mono_jit_compile_method_with_out): Move the calling of
22758         static constructors outside the domain lock. Fixes #55720.
22759
22760 2004-03-17  Martin Baulig  <martin@ximian.com>
22761
22762         * mini.c (get_generic_field_inst): Removed, this'll never happen.
22763         (inflate_generic_field): Take the `MonoMethod *' instead of the
22764         `MonoClass *' and added support for generic method.
22765         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
22766         have a `field->parent->gen_params', only inflate the field if it's
22767         an open constructed type.
22768
22769 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22770
22771         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
22772         exception object instead of the preconstructed ones.
22773
22774 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22775
22776         * mini.c: reverted changed to sigsegv_signal_handler commited
22777         accidentally in the previous patch.
22778
22779 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22780
22781         * mini.c:
22782         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
22783         running --aot with an old assembly.
22784
22785 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
22788         point values.
22789
22790         * mini-sparc.c: Add support for v9 branches with prediction.
22791
22792 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
22793
22794         * mini.c (mini_init): #warning is GNUC only
22795
22796         * mini-sparc.h: implement __builtin_frame_address
22797         and __builtin_return_address for Sun C compiler
22798
22799 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
22800
22801         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
22802
22803 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22804
22805         * basic-calls.cs: Add test for unaligned byref long argument passing.
22806
22807         * mini-ops.h: Add sparcv9 compare and branch instructions.
22808
22809         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22810         v9 instructions if we have a v9 cpu.
22811
22812         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22813         registers for global allocation.
22814
22815         * exceptions-sparc.c: Fixes.
22816         
22817 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22818
22819         * liveness.c (mono_analyze_liveness): Optimized version.
22820
22821         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22822
22823         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22824         sparc work.
22825
22826         * basic-float.cs basic-calls.cs: New regression tests.
22827
22828 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22829
22830         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22831         sigaltstack implementation.
22832
22833         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22834         
22835         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22836         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22837
22838 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22839
22840         * mini.c: Fix warnings.
22841         
22842         * mini.c (mono_resolve_patch_target): New function which contains the
22843         arch independent part of the patching process.
22844
22845         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
22846         patching code to a separate function.
22847
22848 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
22849
22850         * mini.c (add_signal_handler): ifdef out on Windows
22851
22852 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
22853
22854         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
22855         cpu-sparc.md: Add exception handling support + other fixes.
22856
22857         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
22858         typed GC detection in --version.
22859
22860         * basic.cs exceptions.cs: New regression tests.
22861
22862         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
22863         the arch specific code can store data during a compilation.
22864
22865         * mini-ops.h: Add OP_SETFRET.
22866
22867         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
22868         function, register a separate icall for each arity, so the icalls can
22869         get a wrapper.
22870         
22871         * mini.c (mono_print_tree): Print negative offsets in a more readable
22872         form.
22873         
22874         * mini.c: Make signal handling work on sparc.
22875         
22876         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
22877
22878         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
22879
22880         * jit-icalls.c: Emulate truncl by aintl on solaris.
22881
22882         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
22883
22884 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
22885
22886         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
22887
22888 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22889
22890         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
22891         a MarshalByRef type, inline a method that performs the check, taking into
22892         account that the object can be a proxy. Also implemented tow new opcodes:
22893         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22894         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
22895         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22896
22897 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22898
22899         * mini-ppc.c: if a relative branch displacement is too big
22900         but it points to and area reachable with an absolute branch, 
22901         avoid the thunks.
22902
22903 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
22904
22905         * mini.c: optimize small copies in cpblk.
22906
22907 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
22908
22909         * basic-calls.cs basic-float.cs: New regression tests.
22910
22911         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22912         negative offsets from %fp. Implement localloc. Fix local register 
22913         allocation. Fix the case when the this argument needs to be saved to
22914         the stack. Implement some missing opcodes.
22915
22916 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22917
22918         * mini.c (mini_method_compile): Reenable global regalloc in methods
22919         with exception handlers.
22920
22921         * linear-scan.c (mono_varlist_sort): Fix warning.
22922
22923         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
22924
22925         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
22926         regalloc costs.
22927
22928         * liveness.c: Make all variables uses in exception clauses volatile, to
22929         prevent them from being allocated to registers. Fixes #42136.
22930
22931 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
22932
22933         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
22934         causes regressions.
22935
22936         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
22937         argument to mono_arch_regalloc_cost.
22938
22939         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
22940         precisely.
22941
22942 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
22943
22944         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
22945         Make the cost of allocating a variable to a register arch dependent.
22946
22947         * basic-calls.cs: Fix compilation of tests.
22948         
22949         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
22950         helper function to cut back on the number of #ifdefs needed.
22951
22952         * mini-ppc.c: Fix compilation.
22953
22954         * basic-calls.cs: New regression tests.
22955
22956         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
22957
22958         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
22959         of l0 since that is callee saved.
22960
22961         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
22962         to virtual calls.
22963
22964         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
22965         of delay instruction.
22966
22967         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
22968
22969         * mini.h (MonoCallInst): Add 'virtual' flag.
22970
22971         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
22972
22973 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22974
22975         * *.cs: New regression tests.
22976
22977         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
22978         work.
22979
22980         * mini.c (mono_runtime_install_handlers): Fix build.
22981
22982         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
22983         'signal_stack_size' members.
22984
22985         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
22986         alternate signal stack.
22987
22988         * exceptions-x86.c: Add stack overflow handling.
22989
22990         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
22991         functions to arch independent code.
22992
22993         * mini.c (mono_print_tree): Print more detailed info for load_membase
22994         opcodes.
22995         
22996 2004-02-23  Martin Baulig  <martin@ximian.com>
22997
22998         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
22999
23000 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23001
23002         * mini-x86.c: fixed reg allocation for div/rem.
23003
23004 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23005
23006         * driver.c (mono_main): Report some configuratio options on --version.
23007
23008 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23009
23010         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23011         low in the address space. Correctly flush memory in thunks where we
23012         output native code.
23013
23014 2004-02-20  Martin Baulig  <martin@ximian.com>
23015
23016         * mini.c (mini_get_method): New static method; inflate all generic
23017         methods and methods in open generic instances.
23018         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23019         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23020
23021 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23022
23023         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23024
23025         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23026
23027 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23028
23029         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23030
23031         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23032         it compile using Sun's compiler.
23033
23034 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23035
23036         * 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.
23037
23038         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23039
23040 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23041
23042         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23043         code.
23044         * mini-ppc.c: handle calls outside of the allowed range with thunks
23045         allocated using the code manager.
23046         * tramp-ppc.c: use the code manager to hold generated native code.
23047         Fixed the magic trampoline to just patch vtable entries.
23048
23049 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23050
23051         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23052         independent file.
23053
23054 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23055
23056         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23057         PPC.
23058
23059         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23060         if we have a working __thread implementation.
23061
23062         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23063         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23064
23065 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23066
23067         * mini-x86.c: Fix compilation under gcc 2.
23068         
23069 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23070
23071         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23072         contains a call to the wrapped function.
23073
23074         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23075         OP_<CALL>_IMM opcodes, and use them under X86.
23076         
23077         * mini.c (mono_jit_find_compiled_method): Fix warning.
23078
23079         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23080
23081         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23082
23083         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23084         functionality to mini.c.
23085
23086         * mini.c (mono_create_jump_trampoline): New function to create a jump
23087         trampoline. Return a compiled method instead of a trampoline if it
23088         exists. Add a cache for jump trampolines.
23089
23090         * mini.c (mono_jit_find_compiled_method): New function to return a
23091         compiled method if it exists.
23092
23093         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23094         mono_arch_create_jit_trampoline.
23095
23096         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23097         a jump trampoline. Fixes #52092.
23098         
23099 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23100
23101         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23102         which is not up-to-date. Add check_corlib_version () instead.
23103
23104         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23105         have to call it.
23106         
23107         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23108         since newer valgrind versions do not need it.
23109
23110         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23111         compile a method with a given set of optimizations.
23112
23113         * mini.c: Compile icall wrappers on-demand instead of at startup.
23114
23115         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23116         wrapper for an icall.
23117
23118 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23119
23120         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23121         #54063.
23122
23123         * iltests.il: Add test for non-empty stack before switch instruction.
23124
23125 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23126
23127         * mini.c: Add support for new stringbuilder marshalling conventions.
23128
23129         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23130
23131 2004-02-01  Martin Baulig  <martin@ximian.com>
23132
23133         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23134         in `ginst->mtype_argv'.
23135
23136 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23137
23138         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23139         facilitate grepping.
23140
23141 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23142
23143         * mini.c: fixed buglet in initobj generic implementation for references.
23144
23145 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23146
23147         * Makefile.am: make the version script conditional.
23148         * jit-icalls.c: handle missing truncl().
23149
23150 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23151
23152         * exceptions.cs: Add more tests for double->int conversion.
23153
23154         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23155         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23156
23157 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23158
23159         * driver.c: make --verbose --version emit an error
23160         if the loaded corlib doesn't match the runtime version.
23161
23162 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23163
23164         * mini-ppc.h: export ppc_patch().
23165         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23166         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23167         on par or better than on MacOSX.
23168
23169 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23170
23171         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23172         mono_lookup_pinvoke_call.
23173
23174         * mini-x86.c: Under windows, the default pinvoke calling convention is
23175         stdcall. Fixes #52834.
23176
23177         * mini.c (optimize_branches): Add an upper bound to the number of
23178         iterations to prevent infinite loops on strange loops. Fixes #53003.
23179
23180 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23181
23182         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23183         and ISINST. Fixes #52093.
23184
23185         * objects.cs (test_0_vector_array_cast): New tests.
23186         
23187 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23188
23189         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23190         checking in Array.Set ().
23191
23192         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23193         #52590.
23194
23195         * object.cs (test_0_multi_array_cast): New regression test.
23196
23197 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23198
23199         * exceptions-ppc.c: fix build on Linux/PPC.
23200
23201 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23202
23203         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23204         running under valgrind.
23205         (x86_magic_trampoline): Fix build bustage.
23206
23207         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23208         negative values as well. This is needed for the encoding of the line number
23209         info, since sometimes the line numbers are not in increasing order.
23210
23211 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23212
23213         * cpu-pentium.md (localloc): Increase the size of the localloc 
23214         instruction since it is a loop under Win32.
23215
23216         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23217         allocation.
23218
23219 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23220
23221         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23222         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23223         Max Horn (max@quendi.de). Fix file names in comments.
23224
23225 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23226
23227         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23228         avoid stack overflow.
23229         (replace_usage): Avoid uninitialized variable warnings.
23230
23231         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23232         and taking the address of valuetype variables.
23233
23234 2004-01-03  Patrik Torstensson
23235
23236         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23237         for other purposes than FP later on.
23238
23239 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23240
23241         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23242         of tail calls.
23243
23244 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23245
23246         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23247
23248 2003-12-30  Patrik Torstensson <p@rxc.se>
23249
23250         * mini-x86.h: Decreased number of availiable fp regs.
23251         Solves corner cases with FP spilling.
23252
23253 2003-12-23  Patrik Torstensson <p@rxc.se>
23254
23255         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23256         for floating point stack tracking / spilling on x86. 
23257         Fixes bug #49012.
23258         
23259         * basic-float.cs: added float mul overflow test.
23260
23261 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23262
23263         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23264
23265 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23266
23267         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23268         supports for cond branches that overflow the immediate
23269         overflow offset. mcs can compile simple programs.
23270
23271 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23272
23273         * exceptions-ppc.c: exception handling support wip:
23274         finally handlers get run on exception.
23275
23276 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23277
23278         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23279         profiling.
23280
23281 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23282
23283         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23284         initial support for stack walking and unwinding.
23285
23286 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23287
23288         * driver.c (mono_main): Make corlib-out-of-sync message more 
23289         descriptive. Also remove verify_corlib call.
23290
23291 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23292
23293         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23294         not overlap with other call's arguments, too.
23295
23296 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23297
23298         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23299         move to arch-specific code the choice of arch-specific
23300         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23301         * mini.c: ensure emulation calls will not interleave
23302         with other calls.
23303
23304 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23305
23306         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23307         the magic trampoline stack frame is dropped before executing
23308         the new method.
23309
23310 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23311
23312         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23313         and integer to fp conversions. Added support for overflowing
23314         arguments on the stack. Reserve a couple more registers as temps.
23315         Added support for aot compilation (as output still needs to be
23316         tweaked, though).
23317
23318 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23319
23320         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23321         Don't overwrite return register in some corner cases.
23322
23323 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23324
23325         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23326         static constructors when AOT compiling.
23327
23328         * driver.c (mono_main): Call mono_check_corlib_version.
23329
23330 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23331
23332         * cpu-g4.md, basic.cs: fixed div target register.
23333
23334 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23335
23336         * mini-ppc.c, basic.cs: shl_imm fix with test.
23337
23338 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23339
23340         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23341         structures by value. Misc fixes.
23342         * objects.cs: more tests.
23343
23344 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23345
23346         * mini-ppc.c: lconv.ovf.i implemented.
23347
23348 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23349
23350         * mini.c:
23351         (mini_init): don't error out if someone already called g_thread_init.
23352
23353 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23354
23355         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23356         to be any type per the spec. Fix abnormal memory usage when
23357         the same object is repeatedly thrown.
23358
23359 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23360
23361         * mini.c: check for overruns in IL code.
23362
23363 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23364
23365         * TODO: Add/remove some todo entries.
23366
23367 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23368
23369         * driver.c (mono_main): Call mono_verify_corlib.
23370
23371 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23372
23373         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23374         This has been moved to mini.c
23375         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23376         type being casted is marshalbyref it could be a proxy, so instead of
23377         emitting the type check code, emit a call to a runtime method that will
23378         perform the check by calling CanCastTo if needed.
23379
23380 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23381
23382         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23383         methods with large stack frames under Win32.
23384
23385 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23386
23387         * Makefile.am: Distribute regression tests.
23388
23389         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23390         at the end instead of inserting each variable into the sorted list.
23391
23392         * linear-scan.c (mono_varlist_sort): New helper function.
23393         
23394 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23395
23396         * mini.c: ensure arguments and locals are within bounds.
23397
23398 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23399
23400         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23401         related fixes.
23402
23403 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23404
23405         * mini.c (mono_cprop_copy_values): Fix crash.
23406
23407         * aot.c: Set verbosity back to 0.
23408         
23409 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23410
23411         * regalloc.c: complete memory leak fix by Laurent Morichetti
23412         (l_m@pacbell.net).
23413
23414 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23415
23416         * driver.c (main_thread_handler): Revert the previous patch.
23417
23418         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
23419         under valgrind.
23420
23421         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23422         memory from the memory pool.
23423
23424         * driver.c (main_thread_handler): Turn on all optimizations when
23425         --aot is used.
23426
23427         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23428         an array for better performance.
23429
23430         * regalloc.c (mono_regstate_assign): Fix memory leak.
23431
23432         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23433         serialize the debug info.
23434
23435         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23436         debug info from the serialized representation.
23437
23438         * aot.c: Save debug info into the generated file and load it when 
23439         loading a method.
23440
23441         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23442
23443 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23444
23445         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23446         More FP-related fixes.
23447
23448 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23449
23450         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23451         and register allocation buglet. Hello world now runs.
23452
23453 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23454
23455         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23456         * tramp-ppc.c: fixed class init trampoline.
23457         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23458
23459 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23460
23461         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23462         mini.c: more ppc changes/fixes.
23463
23464 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23465
23466         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23467         Also optimize the case when the arguments are the same in the caller 
23468         and in the callee.
23469
23470         * iltests.il: Add tests for tail calls with valuetype arguments.
23471
23472 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23473
23474         * mini-ppc.c: fixes for struct return type.
23475
23476 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23477
23478         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23479         mono_spillvar_offset() to arch-specific code.
23480
23481 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23482
23483         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23484
23485 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23486
23487         * exceptions-x86.c: Fix stack space leaks.
23488         
23489         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23490         registers from the lmf if the method has save_lmf set.
23491
23492 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23493
23494         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23495         of icall wrappers into InvokeInDomain, since these are now per-domain.
23496
23497 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23498
23499         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23500         make some opcode emulation and intrinsic ops enabled/disabled 
23501         according to the architecture. More fixes.
23502
23503 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23504
23505         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23506
23507 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23508
23509         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23510         arch-specific handling for 'this' and struct return type to
23511         arch-specific code.
23512
23513 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23514
23515         * aot.c: prevent divide by zero error when reporting (it happened with
23516         Accessibility.dll).
23517
23518 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23519
23520         * mini.h (inst_switch): Remove unused macro.
23521
23522 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23523
23524         * aot.c:
23525         (load_aot_module): free 'info->methods' and 'info' properly. No more
23526         "free(): invalid pointer blah" messages when you have an old aot
23527         compiled assembly.
23528
23529 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23530
23531         * jit-icalls.c, mini.c: Added support for context static fields.
23532
23533 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23534
23535         * mini.c (mono_method_blittable): Methods which set LastError are not 
23536         blittable either. Fixes #51108.
23537         
23538 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23539
23540         * mini.c: flush icache.
23541         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23542
23543 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23544
23545         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23546
23547 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23548
23549         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23550         safe on IA32.
23551
23552         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23553         vararg calls.
23554
23555         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23556
23557 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23558
23559         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23560         instruction when the result is discarded.
23561
23562         * iltests.il (test_0_div_regalloc): New regression test.
23563
23564         * arrays.cs: Fix compilation error.
23565
23566 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23567
23568         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23569         float rules to inssel-x86.brg: sane architectures with FP registers
23570         don't need to implement these rules.
23571
23572 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23573
23574         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23575
23576 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23577
23578         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23579         implementation of 32 bit systems.
23580
23581 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23582
23583         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23584         (Jeroen Zwartepoorte).
23585
23586 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23587
23588         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23589         the caller and the callee matches.
23590         
23591         * mini.c (mono_method_to_ir): Add comment.
23592
23593         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23594         signbit is missing on some platforms.
23595
23596 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23597
23598         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
23599
23600         * mini.c (setup_jit_tls_data): Call the new function.
23601         
23602         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
23603
23604         * mini-x86.c: Add experimental support for fast access to the lmf
23605         structure under NPTL/Linux 2.6.x.
23606
23607 2003-11-06  Martin Baulig  <martin@ximian.com>
23608
23609         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
23610         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
23611         the debugger.
23612
23613 2003-11-02  Martin Baulig  <martin@ximian.com>
23614
23615         * mini.c (inflate_generic_field): New static method.
23616         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
23617         generic instance and the field is declared in a generic type, call
23618         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
23619
23620 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
23621
23622         * mini.h mini.c (mono_method_same_domain): New function to return
23623         whenever the caller and the callee are in the same domain.
23624
23625         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
23626
23627 2003-10-30  Martin Baulig  <martin@ximian.com>
23628
23629         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
23630         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
23631         method parameters.
23632         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
23633         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
23634
23635 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
23636
23637         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
23638         propagation.
23639
23640         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23641         object here, so it is in the correct appdomain etc.
23642
23643 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23644
23645         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23646         already done.
23647         (mono_method_to_ir): Avoid freeing the type created returned from
23648         mono_type_create_from_typespec, since it is put into an internal cache
23649         by the function. Fixes pointer.exe.
23650
23651         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23652         trampolines for icalls and pinvokes as well. Fixes #33569.
23653
23654 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23655
23656         * mini.c: Update after appdomain changes.
23657
23658         * mini.c (mono_jit_compile_method_inner): Allways compile native
23659         method wrappers in the root domain, since there can only be one
23660         instance of them, whose address is stored in method->info.
23661
23662 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23663
23664         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23665         environment variable. Instead detect automatically whenever running
23666         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23667         valgrind.h.
23668
23669 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23670
23671         * trace.c, trace.h: New files that implement the new trace option
23672         parsing. 
23673
23674         * driver.c: Document new --trace options.
23675
23676         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23677         mini-x86.c: Apply:
23678
23679         -       if (mono_jit_trace_calls)
23680         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23681
23682         * mini.h: prototypes.
23683         
23684 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23685
23686         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23687
23688         * mini.c inssel.brg: Implement typedefbyref opcodes.
23689
23690         * mini.c (mono_jit_compile_method): Remove unused local variable.
23691
23692         * mini.c (mono_jit_compile_method_inner): Ditto.
23693         
23694 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23695
23696         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23697         
23698         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23699
23700 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23701
23702         * mini.c (mono_no_aot): Remove unused global variable.
23703
23704         * mini.c: Thread safety fixes.
23705
23706 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23707
23708         * mini.c (mono_create_class_init_trampoline): Add a lock around
23709         class_init_hash_addr.
23710
23711         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23712         #30073.
23713
23714         * mini.c: Decompose the NEWARR instruction before decomposing its
23715         arguments. Fixes #30073.
23716
23717 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
23718
23719         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
23720         convention.
23721
23722 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23723
23724         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
23725
23726         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
23727
23728         * driver.c: Add support for compiling icall wrappers to --compile.
23729
23730 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
23731
23732         * inssel.brg: The empty value in class->interface_offsets is -1, not
23733         0. Fixes #49287.
23734
23735 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
23736
23737         * objects.cs: New test for 'is' operator on an array of interfaces.
23738
23739 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23740
23741         * tramp-ppc.c: update trampoline code to support jumps
23742         and class initialization.
23743
23744 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
23745
23746         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
23747
23748         * inssel.brg (OP_UNBOXCAST): Fix #46027.
23749
23750         * inssel.brg (OP_UNBOX): Remove unused rule.
23751
23752         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
23753         region instead of one for each method. Fixes #47813.
23754
23755 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
23756
23757         * exceptions.cs (test_0_nested_finally): New regression test for
23758         nested exception handlers.
23759
23760         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
23761
23762         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
23763
23764         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
23765         inlining.
23766
23767         * mini.c (mono_method_check_inlining): Make the inlining limit 
23768         configurable by an environment variable.
23769         
23770         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
23771
23772         * mini.h: Bump AOT file version.
23773
23774         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
23775         token, store the image along with the token, since the token might not 
23776         refer to the same image as the method containing the relocation, 
23777         because of inlining.
23778
23779 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
23780
23781         * mini.c (mono_precompile_assemblies): New function to compile
23782         all methods in all loaded assemblies.
23783
23784         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
23785
23786         * regalloc.h regalloc.c (MonoRegState): Change the type of 
23787         iassign and fassign to int*, since they can contain large negative
23788         values if the register is spilled. Also added some comments. Fixes
23789         #45817.
23790
23791         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
23792         under Win32. Fixes #42964.
23793
23794 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
23795
23796         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
23797
23798         * aot.c: Added support for AOT compiling methods which contain calls
23799         to wrappers. Currently, only remoting-invoke-with-check wrappers are
23800         handled.
23801         
23802         * driver.c (compile_all_methods): Run the compilation in a thread
23803         managed by mono. Fixes #44023.
23804
23805         * mini.c (mono_codegen): Print full method name in verbose output.
23806
23807         * mini-x86.c (mono_arch_patch_code): Fix warning.
23808         
23809         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23810         jumps, since the method we are jumping to might be domain-specific.
23811
23812         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23813
23814 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23815
23816         * inssel.brg: string chars are unsigned.
23817
23818 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23819
23820         * TODO: New todo item.
23821
23822         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23823         which calls mono_runtime_class_init and patches the call site to
23824         avoid further calls.
23825         (mono_arch_create_class_init_trampoline): New arch specific function 
23826         to create a class init trampoline.
23827         (create_trampoline_code): Generalized so it can create
23828         class init trampolines as well.
23829
23830         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23831         (mono_create_class_init_trampoline): New function to create and cache
23832         class init trampolines.
23833         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23834         vtable given the address of a class init trampoline. Used by the
23835         patching process.
23836         (mono_codegen): Generate a call to a trampoline instead of
23837         mono_runtime_class_init in LDSFLD[A].
23838         (mono_codegen): Add relocations for the new trampoline.
23839         
23840         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23841         MONO_PATCH_INFO_CLASS_INIT.
23842
23843         * mini.h: Bump AOT version number.
23844
23845         * aot.c: Create a copy of the loaded code instead of using the original
23846         so methods which call each other will be close in memory, improving
23847         cache behaviour.
23848         
23849         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
23850         patch since it breaks the regression tests.
23851         
23852         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
23853         for the register saving instruction sequence since the 
23854         frame_state_for function in glibc 2.3.2 don't seem to detect it.
23855
23856 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
23857
23858         * TODO: Fix todo item && remove another.
23859
23860 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
23861
23862         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
23863         previous checkin.
23864
23865         * aot.c: Moved the check for MONO_LASTAOT into the initialization
23866         function of the module.
23867
23868         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
23869         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
23870         --no-aot command line option.
23871
23872 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23873
23874         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
23875         by Bernie Solomon (bernard@ugsolutions.com).
23876
23877         * inssel.brg: Refactor the interface offset table related code into
23878         its separate functions and add support for the AOT case.
23879
23880 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23881
23882         * aot.c (mono_aot_get_method_inner): Fix memory leak.
23883         
23884         * aot.c: Added mono_aot_verbose variable and made all debugging
23885         output depend on the value of this variable.
23886
23887         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
23888         method_label and info_label.
23889
23890         * mini.h mini-x86.c aot.c: Added a new relocation type 
23891         MONO_PATCH_INFO_IID for klass->interface_id.
23892
23893         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
23894         the MonoJitInfo structure.
23895
23896         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
23897         a non-root appdomain in shared mode.
23898
23899 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23900
23901         * aot.c: make aot loader less verbose. Remove free of unused variable.
23902
23903 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23904
23905         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
23906
23907         * .cvsignore: Added *.dll.
23908
23909         * mini.c (mono_print_tree_nl): New function callable while debugging.
23910
23911         * mini.c (mono_print_code): Export this.
23912
23913         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23914         patched code.
23915
23916 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
23917
23918         * mini.h (MonoCompile): Added 'jit_info' field.
23919
23920         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
23921         the cfg structure, since it is needed by the AOT compiler.
23922
23923         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23924
23925         * aot.c: A major rewrite. Changes include:
23926         - save exception tables for methods which have them.
23927         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
23928         to g_module_symbol.
23929         - reworked the file format so it is now much smaller and needs
23930         fewer relocation entries.
23931         
23932 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23933
23934         * aot.c (load_aot_module): Fix build bustage on platforms without
23935         Boehm GC.
23936
23937 2003-09-04  Martin Baulig  <martin@ximian.com>
23938
23939         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
23940
23941 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23942
23943         * TODO: Some new optimization ideas.
23944
23945         * aot.c: Move AOT module loading logic here from mono_assembly_open.
23946
23947         * aot.c: Save the optimization flags used to compile the code into
23948         the AOT module.
23949
23950         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
23951         support emitting domain specific code.
23952         
23953         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
23954         no longer domain neutral. It can be made domain neutral by compiling 
23955         with --optimize=shared.
23956
23957         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
23958         between appdomains.
23959
23960         * driver.c mini.h mini.c: New --no-aot debugging option which disables
23961         loading of AOT code.
23962
23963         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
23964         
23965         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
23966         if there is no domain neutrality information.
23967
23968 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23969
23970         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
23971         format version into the generated library.
23972
23973         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
23974         callee method into the caller since one of them could be shared.
23975
23976         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
23977         system exceptions from AOT code now works.
23978
23979         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
23980         method if it is domain neutral and the callee is not.
23981
23982         * graph.c (cfg_emit_one_loop_level): Fix warning.
23983
23984 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23985
23986         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
23987         last checkin.
23988
23989 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23990
23991         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
23992         is needed  by code which is executed before mono_runtime_init ().
23993         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
23994         
23995         * mini.c (mono_thread_abort): Fix warning.
23996         (mono_jit_compile_method): Call static constructor in the AOT case too.
23997
23998         * aot.c (mono_compile_assembly): Fix warning.
23999
24000 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24001
24002         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24003
24004 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24005
24006         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24007
24008         * cpu-pentium.md: Fix the length of call opcodes so they include the
24009         ESP restoring instruction. Fixes #47968.
24010
24011 2003-08-28  Martin Baulig  <martin@ximian.com>
24012
24013         * mini-x86.c (mono_arch_call_opcode): Added support for
24014         MONO_TYPE_GENERICINST.
24015
24016         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24017
24018 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24019
24020         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24021         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24022
24023         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24024         metadata_section.
24025
24026 2003-08-26  Martin Baulig  <martin@ximian.com>
24027
24028         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24029         when reporting an error, set this to the actual error location.
24030         (mono_method_to_ir): Report the correct error location if
24031         get_basic_blocks() returned an error.
24032
24033 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24034
24035         * mini.c (mono_type_blittable): OBJECT is not blittable.
24036         (mono_method_blittable): Methods which have marshalling descriptors
24037         are not blittable either. Fixes #47842.
24038
24039 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24040
24041         * driver.c mini.c: Use an environment variable instead of a global 
24042         variable. Also fix the build.
24043
24044         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24045         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24046         reporting this. 
24047
24048         * driver.c mini.c: Added --with-valgrind option to turn off some
24049         code which prevents mono from running under valgrind.
24050
24051         * mini.c (mono_emit_call_args): Fixed warning.
24052
24053         * mini.c (mono_emulate_opcode): Fixed warning.
24054
24055 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24056
24057         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24058         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24059         regalloc.c, regalloc.h: specify available registers in arch-specific
24060         code and support floats in the regallocator (patch by Laurent Morichetti 
24061         <l_m@pacbell.net>)
24062
24063 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24064
24065         * mini.c: mono_thread_current() can be called only after
24066         mono_runtime_init(): rearrange code to not call it early on.
24067
24068 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24069
24070         * mini.c: allocate jump tables in the code mempools.
24071
24072 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24073
24074         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24075         freed.
24076
24077 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24078
24079         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24080         12 to 16.  This fixes bug #47453.
24081
24082
24083 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24084
24085         * mini-ppc.c: fixed indexed load and unsigned compares.
24086
24087 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24088
24089         * mini.c: reenabled installation of handler for
24090           thread abort signal.
24091
24092 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24093
24094         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24095         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24096         until it's fixed and actually useful.
24097
24098 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24099
24100         * inssel-long32.brg: couple more opcodes implemented.
24101
24102 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24103         
24104         * mini-sparc.c: Even more opcodes implemeted.
24105
24106 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24107
24108         * mini-sparc.c: More opcodes implemented.
24109
24110 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24111
24112         * mini-sparc.c: More opcodes implemented.
24113
24114 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24115
24116         * inssel-sparc.brg: Add some needed rules.  Direct
24117         copy from PPC.
24118         * Makefile.am: Use inssel-sparc.brg
24119         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24120         an assert happy for now.
24121
24122 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24123
24124         * mini-sparc.c: Fixed compile errors.
24125         * exceptions-sparc.c: Same.  We now produce a mono binary 
24126         on sparc-linux.  Yea.
24127
24128 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24129
24130         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24131         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24132         They compile, but do not work.
24133
24134 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24135
24136         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24137         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24138         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24139         (ct@gentoo.org).
24140
24141 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24142
24143         * mini.c: more opcodes implemented and better support for generics.
24144
24145 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24146
24147         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24148         * mini.c, mini.h: first cut at generics support: some new instructions 
24149         added and changed the behaviour of some of the existing ones.
24150
24151 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24152
24153         * mini.c: Removed definition of metadata_shared mutex here.
24154
24155 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24156
24157         * mini-x86.c: make vararg calls work for instance methods.
24158
24159 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24160
24161         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24162         returns the arguments in a separte list, now.
24163
24164 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24165
24166         * aot.c, mini.c: updates for array type representation changes.
24167
24168 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24169
24170         * mini.c: register function to perform jit shutdown.
24171
24172 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24173
24174         * mini.c: use a faster allocator if possible.
24175
24176 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24177
24178         * aot.c: some cleanups and portability changes.
24179
24180 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24181
24182         * mini.c: use faster allocation for CEE_BOX if possible.
24183
24184 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24185
24186         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24187         Moved inlined mempcy code to its own function so that is can be
24188         reused. Added an inline memset function as well (optimized initobj).
24189         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24190
24191 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24192
24193         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24194
24195 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24196
24197         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24198         arch code can setup the cpu for CLR execution, if needed.
24199         We use it on x86 to set the precision of FP operations.
24200
24201 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24202
24203         * mini.c: disable some optimizations if we can guess they'll cost too
24204         much for a given method.
24205
24206 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24207
24208         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24209         
24210 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24211         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24212         info collection support.
24213
24214 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24215
24216         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24217         is now implemented in the profiling API. Get rid of a couple of
24218         unnecessary global variables.
24219
24220 2003-06-15  Nick Drochak <ndrochak@gol.com>
24221
24222         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24223         * cpu-g4.md: add op_bigmul and op_bigmul_un
24224         * cpu_pentium.md: add op_bigmul_un
24225         * inssel-long32.brg: add rule for unsigned bigmul
24226         * mini-ops.h: define OP_BIGMUL_UN
24227         * mini-x86.c: THE BUG: handle (un)signed properly
24228         * mini.c: choose unsigned opcode if needed.
24229         This set of patches fixes bug #44291
24230
24231 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24232
24233         * mini.c (optimize_branches): improved to handle all kinds of
24234         conditional branches.
24235
24236 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24237
24238         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24239         don't raise exceptions.
24240
24241 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24242
24243         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24244         to arch-specific files.
24245
24246 2003-06-09  Martin Baulig  <martin@ximian.com>
24247
24248         * Makefile.am (libs): Added $(LIBGC_LIBS).
24249
24250 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24251
24252         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24253         and OP_ATAN (fixes bug#44293).
24254
24255 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24256
24257         * Makefile.am, mini-x86.c: rename cpu description array to
24258         pentium_desc, since some compilers define the 'pentium' preprocessor
24259         symbol.
24260
24261 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24262
24263         * mini.c (mini_select_instructions): add explicit branch if the
24264         following block is not the false target of a conditional branch -
24265         we need this with any optimization that reorder or remove bblocks
24266
24267         * mini.c (optimize_branches): bug fixes
24268
24269 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24270
24271         * mini.c (mono_method_to_ir): inline static readonly fields
24272
24273         * ssa.c (fold_tree): start cfold support for long (very simple
24274         cases only)
24275
24276         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24277
24278 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24279
24280         * inssel.brg: fixed memcpy (bug #44219).
24281
24282 2003-06-05  Dick Porter  <dick@ximian.com>
24283
24284         * driver.c: Set the glib log levels to not abort if g_message
24285         recurses.
24286
24287         g_set_prgname() has to happen before mini_init() so that the
24288         process handle gets the info.
24289         
24290 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24291
24292         * driver.c: add intrins to the default optimizations to get wider
24293         exposure.
24294
24295 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24296
24297         * mini.h: some large basic blocks will overflow a 16-bit
24298         integers for symbolic registers.
24299
24300 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24301
24302         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24303         (mono_arch_output_basic_block): fix bug 43499 
24304
24305 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24306
24307         * mini.c: kill duplicated definition of mono_debug_format.
24308
24309 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24310
24311         * mini-x86.c, arrays.cs: fixed register allocation bug.
24312
24313 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24314
24315         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24316
24317         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24318
24319 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24320
24321         * mini.c:
24322         (print_method_from_ip): also print source location information if
24323         available.
24324
24325 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24326
24327         * mini.c (mono_find_block_region): bug fix in region code
24328         (mini_method_compile): enable removing unreachable code again, but
24329         only in methods without exception clauses.
24330
24331 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24332
24333         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24334         Implemented arglist opcode and handling of TypedReference type.
24335         Fixed x86 call convention when a structure is returned.
24336         Minimal support for calling static vararg methods.
24337
24338 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24339
24340         * mini.c (mini_method_compile):  always remove unreachable code,
24341         because the code in them may be inconsistent  (access to dead
24342         variables for example).
24343
24344 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24345
24346         * driver.c, debug-mini.c: warning fixes.
24347
24348 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24349
24350         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24351
24352 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24353
24354         * mini.c: thread-static fields are registered in mono_class_vtable(),
24355         so ensure the function is called before checking for them.
24356
24357 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24358
24359         * mini.c (optimize_branches): fix for bug 43586
24360
24361         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24362         overflow (fixes Bug #43639)
24363
24364 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24365
24366         * mini.c, objects.cs: allow the use of stobj for primitive types.
24367
24368 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24369
24370         * mini.c: be less strict about argument checking until we support
24371         running the verifier.
24372
24373 2003-05-27  Nick Drochak <ndrochak@gol.com>
24374
24375         * basic-long.cs: tests for (ulong)int * (ulong)int also
24376         * mini.c: use the same trick for (ulong)int * (ulong)int
24377
24378 2003-05-27  Nick Drochak <ndrochak@gol.com>
24379
24380         * basic-long.cs: add regression test for (long)int * (long)int
24381         * cpu-pentium.md: add op_bigmul specification
24382         * inssel-long32.brg: add OP_BIGMUL rule
24383         * mini-ops.h: add OP_BIGMUL
24384         * mini-x86.c: register allocator: handle case where src1 needs to be
24385         in EAX.
24386         * mini.c: substitute special BIGMUL opcode in the tree for 
24387         (long)int * (long)int
24388
24389 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24390
24391         * jit-icalls.c: call the type ctor on field access if needed.
24392
24393 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24394
24395         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24396         to a method (including results of ldelema, bug#43207).
24397
24398 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24399
24400         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24401         colors to show exception handler blocks.
24402
24403         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
24404         (fix for pinvoke7.cs).
24405
24406 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24407
24408         * mini.h, mini.c: ensure correct initialization order for types that
24409         require it. Prepare for lazy compilation of jit icall wrappers.
24410         Provide a name for opcode emulation to reduce unneeded mallocing.
24411
24412 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24413
24414         * mini-x86.c: better register restoring code and profiling
24415         support for tail calls.
24416
24417 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24418
24419         * mini.h, driver.c: prepare for leaf methods optimization.
24420
24421 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24422
24423         * mini.c: get targets of branches before converting a method.
24424
24425 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24426
24427         * mini.c (optimize_branches): added some experimental code (disbaled) 
24428
24429 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24430
24431         * mini.c (optimize_branches): fix branch to branch optimization 
24432
24433         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24434
24435         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24436
24437         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24438
24439         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24440         if needed.
24441
24442 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24443
24444         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24445         enable use of interface variables again.
24446
24447         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24448         I1 to registers because there is no simply way to sign extend 8bit
24449         quantities in caller saved registers on x86.
24450
24451         * inssel-float.brg: set costs of some rules to 2 so
24452         that monobure always select the arch. specific ones if supplied,
24453         regardless of the order we pass the files to monoburg.
24454
24455 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24456
24457         * mini.c, mini-x86.c: since the magic trampoline for jumps
24458         can't patch the code directly, we do it as soon as the
24459         method gets compiled.
24460
24461 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24462
24463         * mini-x86.c, mini.h: introduce a new patching method
24464         to support CEE_JMP and tail calls.
24465         * mini.c: obey tail.call. Don't precompile methods target
24466         of CEE_JMP.
24467         * tramp-x86.c: new trampoline code to handle methods
24468         reached through a jump.
24469
24470 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24471
24472         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24473         bit values to registers
24474
24475 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24476
24477         * mini.c (mono_compile_get_interface_var): share interface
24478         variables if possible.
24479
24480 2003-05-16  Martin Baulig  <martin@ximian.com>
24481
24482         * debug-mini.c (mono_init_debugger): New function to initialize
24483         the debugger.  This is not in the debugger since it needs to
24484         access some of mini's internals.
24485
24486 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24487
24488         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24489
24490 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24491
24492         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24493         for value type handling.
24494
24495 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24496
24497         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24498         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24499
24500 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24501
24502         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24503           the constructor through a proxy.
24504
24505 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24506
24507         * jit-icalls.c, inssel.brg: fixes to array element address
24508         calculations.
24509
24510 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24511
24512         * mini-x86.c (is_regsize_var): allocate pointer to registers
24513
24514 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24515
24516         * driver.c: fixed typo, added intrins to the set of optimizations
24517         tested with regressions.
24518
24519 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24520
24521         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24522         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24523         test case.
24524
24525 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24526
24527         * inssel.brg: remove some common pop instructions without side effects
24528
24529 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24530
24531         * inssel-x86.brg: fixed thinko in int to double conversions.
24532
24533 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24534
24535         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24536
24537 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24538
24539         * inssel-long32.brg: two more missing instructions.
24540
24541 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24542
24543         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24544         if not already set.
24545
24546 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24547
24548         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24549         correctly.
24550
24551         * basic-float.cs: Added tests for negative zero.
24552
24553 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24554
24555         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24556         a couple of missing operations for long casts, with test cases.
24557
24558 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24559
24560         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24561
24562 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24563
24564         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24565         code size estimation.
24566
24567 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24568
24569         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24570         abstract methods (fix bug 42542)
24571
24572         * aot.c: add ability to handle array types
24573         
24574 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24575
24576         * mini.c: Call the _specific versions of the object allocation
24577         functions if possible.
24578
24579 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24580
24581         * driver.c: call setlocale ().
24582
24583 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24584
24585         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24586         windows build.
24587
24588 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24589
24590         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24591
24592         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24593         wrappers (fix bug 42122)
24594
24595 2003-05-04  Martin Baulig  <martin@ximian.com>
24596
24597         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24598
24599         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
24600         s/mini_set_defaults/mono_set_defaults/g.
24601
24602 2003-05-04  Martin Baulig  <martin@ximian.com>
24603
24604         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
24605
24606 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24607
24608         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
24609         (reported by Don Roberts).
24610
24611 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24612
24613         * mini.c: temporarily work around two bugs for this release.
24614
24615 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24616
24617         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
24618         that contains -export-dynamic and it makes using the ld script
24619         useless.
24620         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
24621
24622 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24623
24624         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
24625         specific cpu.
24626
24627 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24628
24629         * mini.c: make sure leave calls all the needed finally blocks,
24630         even when the target jumps out of multiple exception clauses.
24631
24632 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24633
24634         * ldscript, Makefile.am: add linker script to reduce the number of
24635         exported symbols (should also fix the issues with libwine defining
24636         some of the same symbols in io-layer).
24637
24638 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
24639
24640         * driver.c (mini_main): Avoid assertion when no file name is given on 
24641         the command line.
24642
24643 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24644
24645         * driver.c: added --version/-V command line option.
24646         Added the inline optimization in the regression tests.
24647
24648 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24649
24650         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24651         to the type in the method signature (fixes bug#42134).
24652
24653 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24654
24655         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24656
24657 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24658
24659         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24660
24661 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24662
24663         * driver.c: fixed bug #42100.
24664
24665 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24666
24667         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24668
24669 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24670
24671         * mini.c: moved most of the code required to do inlining to its own
24672         function so it can be reused. Inline also ctors if appropriate.
24673
24674 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24675
24676         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24677         the runtime can call mono API functions.
24678
24679 2003-04-27  Martin Baulig  <martin@ximian.com>
24680
24681         * debug-mini.c (mono_debug_init_method): Added
24682         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24683         send a notification to the debugger.
24684
24685         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24686         running in the Mono Debugger, just pass the breakpoint number to
24687         mono_debug_init_method().
24688
24689         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24690
24691 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24692
24693         * mini.c: allow some more unsafe compares.
24694
24695 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24696
24697         * mini-x86.c, Makefile.am: make distcheck works (partially from
24698         a patch by Richard Lee <r.h.lee@attbi.com>).
24699         * regset.c, regset.h: removed, they are unused.
24700
24701 2003-04-25  Dick Porter  <dick@ximian.com>
24702
24703         * driver.c: Usage reports the name as 'mono' not 'mini'
24704         * exceptions-x86.c: Build and run on freebsd
24705
24706 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24707
24708         * Makefile.am: install the program with the 'mono' name and
24709         the library as libmono instead of mini and libmini.
24710
24711 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24712
24713         * driver.c: provide the APIs for the embedding interface of the old jit.
24714
24715 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
24716
24717         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
24718
24719 2003-04-23  Martin Baulig  <martin@ximian.com>
24720
24721         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
24722
24723         * driver.c: Added `--debug' command line argument to enable
24724         debugging support.
24725
24726 2003-04-23  Martin Baulig  <martin@ximian.com>
24727
24728         * debug.[ch]: Removed.  The code is now in
24729         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
24730
24731         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
24732         last six months.
24733
24734 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24735
24736         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
24737
24738 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24739
24740         * mini.c:
24741         (mini_cleanup): moved mono_runtime_cleanup call after the call to
24742         mono_domain_finalize.
24743         (mini_method_compile): use mono_method_profile* if the the option is
24744         enabled.
24745
24746 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24747
24748         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24749         methods with their wrapper.
24750
24751         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24752         methods with their wrapper.
24753
24754         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
24755         their wrapper.
24756
24757         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
24758         wrapper.
24759
24760         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
24761         methods.
24762
24763 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
24764
24765         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
24766
24767 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
24768
24769         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
24770         of the mempool. This is slightly faster and uses less memory
24771
24772 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24773
24774         * mini.c: avoid O(n) allocation for variables.
24775
24776 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24777
24778         * mini.c: handle items on the stack after inlining methods.
24779
24780 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24781
24782         * mini.c: make the method->opcode optimization dependent
24783         on MONO_OPT_INSTRINS and do it lazily.
24784
24785 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24786
24787         * driver.c: print overall results at the end of regression run.
24788
24789 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
24790
24791         * inssel.brg: don't overwrite symbolic registers.
24792
24793 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24794
24795         * inssel-x86.brg: fix conversion from long to float.
24796
24797 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
24798
24799         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
24800
24801 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24802
24803         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
24804
24805         * driver.c: Added --print-vtable option as in the old JIT.
24806
24807 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24808
24809         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24810
24811 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24812
24813         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24814
24815 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24816
24817         * mini.c regalloc.c regalloc.h: Fix memory leak.
24818
24819 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24820
24821         * aot.c (mono_aot_get_method): register all used strings
24822
24823 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24824
24825         * mini.c: always intern strings references with ldstr at compile time.
24826
24827 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24828
24829         * Makefile.am: add BUILT_SOURCES.
24830
24831 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24832
24833         * driver.c: give a better error message when the assembly to execute
24834         doesn't have an entry point.
24835
24836 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24837
24838         * Makefile.am: added hack for automake
24839
24840         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24841         correct sematics.
24842
24843         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
24844
24845 22003-04-07  Martin Baulig  <martin@ximian.com>
24846
24847         * Makefile.am: Added Makefile.am.
24848
24849         * debugger-main.c: Removed, this is now in the debugger where it
24850         belongs.
24851
24852         * mini.pc.in: Call this package `mini' for the moment.
24853
24854
24855
24856
24857
24858
24859
24860
24861
24862
24863
24864
24865
24866
24867