Add and use compare-and-branch macros to support architectures that
[mono.git] / mono / mini / ChangeLog
1 2006-11-21  Mark Mason  <mason@broadcom.com>
2
3         * inssel.brg: Add and use compare-and-branch macros to support
4         architectures that do not have condition code registers (ie. MIPS).
5         * *-mips.{c,brg,md}: Fix copyright statements
6
7 2006-11-20  Mark Mason  <mason@broadcom.com>
8
9         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11         * mini.h: Added declaration for mono_print_ins()
12         * mini-codegen.c: added ins_spec initializer for MIPS
13         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14         vreg to be virtual and hreg to be non-virtual.
15         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16         is not yet working/implemented correctly.
17         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
18         non-static, fixup calls to print_ins() from other parts in the file.
19
20 2006-11-20  Mark Mason  <mason@broadcom.com>
21
22         * basic-calls.cs: added tests for passing structures as arguments
23         to calls.
24
25 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
26
27         * inssel-long32.brg: optimize signed division by power of two.
28
29 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
30
31         * mini-arm.c: added support for interworking with thumb code
32         (mono must be still be built using the ARM instruction encoding).
33
34 2006-11-19  Miguel de Icaza  <miguel@novell.com>
35
36         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
37         verifier has different rules for it.   Fixes a few verifier issues
38         in the test suite.
39
40         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
41         at the end, so people know what happened.
42
43 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
44
45         * brach-opts.c: in optimize_exception_target() make sure we
46         are in a catch clause (fixes bug #79871).
47
48 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
49
50         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
51         more soft-float support fixes.
52
53 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
54
55         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
56         that are passed half on the stack and half in registers.
57
58 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
59
60         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
61         more mips integration work from Mark E Mason 
62         <mark.e.mason@broadcom.com>.
63
64 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
65
66         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
67         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
68         tramp-mips.c: added sources for the mips port, not
69         integrated in the build yet. Contributed by
70         Mark E Mason <mark.e.mason@broadcom.com>.
71
72 2006-11-14  Neale Ferguson <neale@sinenomine.net>
73
74         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
75
76 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
77
78         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
79         put the soft-float rules in its own file since it seems to
80         break s390 compilation.
81
82 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
83
84         * mini-arm.c: fixed wrnings.
85
86 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
87
88         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
89         inssel-arm.brg: ARM support for soft-float.
90
91 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
92
93         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
94         loads and stores of 32 bit fp values.
95
96 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
97
98         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
99
100         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
101         works. Fixes #79852 and #79463.
102
103 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
104
105         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
106         more soft-float support WIP and fixes.
107
108 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
109
110         * mini-arm.c: some VFP updates.
111
112 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
113
114         * mini-exceptions.c: 0 is a valid local var offset in some
115         architectures, don't assert (bug #78508).
116
117 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
118
119         * exceptions-arm.c: fixed off by one error in stack walk code.
120
121 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
122
123         * mini.h, mini.c: more precise tracking of type load exceptions.
124
125 2006-11-03  Robert Jordan  <robertj@gmx.net>
126
127         * Makefile.am: [WIN32] Add monow.exe target.
128         * driver.c: [WIN32] Don't detach the console when debugging.
129         Fixes bug #79797.
130         
131 2006-10-30  Miguel de Icaza  <miguel@novell.com>
132
133         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
134
135 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
136
137         * aot-compiler.c (emit_method_info): Add a case missed earlier.
138
139         * driver.c (mini_regression): Fix --regression with AOT.
140
141         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
142
143 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
144
145         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
146
147         * mini-sparc.h: Don't use sigaction on sparc/linux.
148
149         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
150
151         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
152
153         * mini-exceptions.c: Add proper include files for getpid ().
154
155 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
156
157         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
158         address instead of a MonoJitInfo* to avoid decoding the exception info for the
159         method.
160
161         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
162         name cache to reduce its size.
163
164         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
165
166 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
167
168         * mini-x86.c: Save/restore the current LMF structure more efficiently using
169         the mono_lmf TLS variable.
170
171         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
172         trampoline lmf frames.  
173
174         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
175
176 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
177
178         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
179         the mono_lmf TLS variable.
180
181         * mini-exceptions.c: Access the LMF structure through accessors.
182
183         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
184         variable instead of in jit_tls->lmf.
185
186         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
187         
188         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
189         trampoline lmf frames.
190
191         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
192
193 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
194
195        * mini.c trace.c mini-x86.c: Revert these too.
196         
197        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
198        signature change.
199
200 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
201
202         * genmdesc.c: removed now dead code.
203
204 2006-10-09  Robert Jordan <robertj@gmx.net>
205
206         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
207
208 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
209
210         * mini.h: do not leave gaps in the opcode values.
211
212 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
213
214         * jit-icalls.h: flag functions as internal here, too.
215
216 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
217
218         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
219         functions with the internal attribute.
220
221 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
222
223         * aot-compiler.c: fclose the file descriptor in the profile read loop.
224
225 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
226
227         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
228         for soft-float.
229
230 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
231
232         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
233         tail calls as on other platforms.
234
235         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
236
237         * iltests.il: Add a few tailcall tests.
238
239 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
240
241         * driver.c: fix loop for old compilers (bug #79521).
242
243 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
244
245         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
246
247         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
248
249         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
250         metadata without any code.
251
252         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
253         more precise debugging information using gdb.
254
255 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
256
257         * inssel-ia64.brg: Make the helper methods static.
258
259 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
260
261         * inssel-x86.brg: make the helper methods static.
262
263 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
264
265         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
266
267 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
268
269         * mini.c: updates for monoburg changes.
270         * inssel.brg: make a few helper functions static as they should.
271
272 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
273
274         * Makefile.am: Move mini-codegen.c to common_sources.
275
276 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
277
278         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
279         instructions.
280         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
281         mini-ppc.h: port to use the common local register allocator.
282
283 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
284
285         * mini.h: Remove the comment too then.
286
287 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
288
289         * mini.h: put back backend.data which is to be used shortly and
290         doesn't increase the size of MonoInst. If any 64 bit arch aligned
291         pointers on 4 byte boundaries it'd have much bigger issues running
292         and you can ifdef it out anyway.
293
294 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
295
296         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
297         MonoInst size by 4 bytes on 64 bit machines.
298
299 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
300
301         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
302         replacement with more meaningful field names. Arch maintainers, please
303         check the assigned names are good enough for your arch.
304
305 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
306
307         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
308         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
309
310 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
311
312         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
313         relocations and memory requirements, put the optimization flags
314         definitions in their own file.
315
316 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
317
318         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
319
320         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
321
322 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
323
324         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
325
326 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
327
328         * inssel.brg: use the correct function to get the size of an item
329         in an array, given an element class.
330         * aot-compiler.c: do not access class->class_size directly.
331
332 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
333
334         * mini.h, debug-mini.c: added a debugging function to print
335         info about local variables and arguments in a jitted method.
336
337 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
338
339         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
340
341         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
342
343 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
344
345         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
346         inner and outer loops when passing vtypes.
347
348 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
349
350         * mini-ppc.c: take into account the cpu errata for cache flushing
351         which caused some random errors (bug #79381).
352
353 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
354
355         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
356         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
357
358 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
359
360         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
361         loaded.
362
363         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
364         freebsd ports tree.
365
366         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
367         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
368
369         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
370         displacement.
371
372 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
373
374         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
375
376 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
377
378         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
379         macro does not have to be changed during debugging.
380
381         * 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>.
382
383         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
384
385         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
386         
387         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
388         MONO_ARCH_NO_EMULATE_MUL is defined.
389
390         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
391
392         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
393
394         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
395
396         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
397         
398 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
399
400         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
401         stuff to mini-exceptions.c where it is used.
402
403         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
404         setup code, the real one is in mini-exceptions.c.
405
406         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
407         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
408         some changes from the freebsd ports tree.
409
410         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
411         constants.
412         
413         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
414
415 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
416
417         * mini.c: on Linux, check for /proc to be mounted
418         (bug# 79351, novell bug#201204).
419
420 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
421
422         * mini.c: handle cases where pthread_attr_getstack() behaves
423         incorrectly (bug #78096).
424
425 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
426
427         * mini-arm.c: support larger stack frames (bug #79272).
428
429 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
430
431         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
432
433         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
434         tokens.
435
436         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
437         mono_class_from_name () to find a class from its name.
438
439         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
440
441 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
442
443         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
444
445 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
446
447         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
448
449 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
450
451         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
452         callinfo->trampoline.
453
454         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
455         fixes #79271.
456         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
457         future.
458
459 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
460
461         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
462
463 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
464
465         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
466         stats.method_trampolines, it is already done by the generic trampoline code.
467
468         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
469         
470 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
471
472         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
473
474         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
475
476         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
477
478         * mini.c (print_jit_stats): Print mscorlib mempool size too.
479         
480         * mini.c (print_jit_stats): Print new stats.
481
482         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
483
484 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
485
486         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
487         Address on two dimensional arrays. Fixes #78729.
488
489         * mini.h (MonoCompile): Add a 'skip_visibility' field.
490
491         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
492         a method.
493
494         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
495
496         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
497         #79130.
498         
499         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
500         a race condition.
501         (mini_get_ldelema_ins): Ditto.
502
503 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
504
505         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
506         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
507         Fixes #79213.
508
509 2006-08-29 Neale Ferguson <neale@sinenomine.net>
510
511         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
512         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
513
514         * exceptions-s390x.c: Cosmetic change.
515
516         * tramp-s390.c: Fix warning.
517
518         * cpu-s390.md: Correct length of mul_imm.
519
520 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
521
522         * aot-compiler.c: added binary writer with ELF backend
523         implementation (only on Linux/x86 for now).
524
525 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
526
527         * Makefile.am: Don't run net 2.0 AOT tests.
528
529         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
530         (mono_compile_assembly): Skip net 2.0 assemblies as well.
531
532         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
533
534 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
535
536         * aot-compiler.c: simplified and refactored the asm-writing code
537         to allow different backends.
538
539 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
540
541         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
542
543         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
544         little. Share patches of type TYPE_FROM_HANDLE as well.
545
546         * mini.c (mono_patch_info_equal): New helper function.
547         (mono_patch_info_hash): Ditto.
548
549         * aot-compiler.c (emit_method_code): Fix s390 build.
550
551         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
552         is not handled because it is stored as a flag and not as a type ctor. Fixes
553         #79016.
554
555 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
556
557         * aot-compiler.c: Fix computation of GOT slot statistics.
558         
559         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
560         Also remove support for not PIC AOT.
561
562         * mini.h: Bump AOT file format version.
563
564         * objects.cs: Add a test for #78990.
565
566         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
567         (peter.dettman@iinet.net.au). Fixes #79087.
568
569         * basic-long.cs: Add a test for the above.
570
571 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
572
573         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
574         
575         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
576         code somewhat.
577
578 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
579
580         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
581         exceptions.
582
583 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
584
585         * mini.c: Don't verify COM proxy invoke calls
586         
587
588 2006-08-10  Dick Porter  <dick@ximian.com>
589
590         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
591         which process is holding semaphores locked.
592
593 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
594
595         * mini-ia64.c mini-amd64.c: Fix #79027.
596
597         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
598
599         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
600
601         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
602         implicit arguments in a vararg call. Fixes #79027.
603
604 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
605
606         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
607         (mono_get_array_new_va_signature): Ditto.
608
609 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
610
611         * aot-runtime.c: Call init_plt lazily.
612
613         * inssel-long.brg: Fix unsigned long->int conversion.
614
615         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
616
617         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
618         that most data is now in the .rss/.data section.
619
620 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
621
622         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
623
624         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
625
626         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
627
628         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
629
630         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
631         virtual call. Fixes #79010.
632
633         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
634         and use the result as the this argument in the real call.
635
636         * generics.2.cs: Add a new test for #79010.
637         
638 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
639
640         * mini-x86.c: Fix a warning.
641
642         * aot-compiler.c: Add a bunch of statistics.
643
644         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
645
646 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
647
648         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
649
650 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
651
652         * 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>.
653
654 2006-07-13  Miguel de Icaza  <miguel@novell.com>
655
656         * mini.c (mono_method_to_ir): Obtain the original method in the
657         CIL stream and use this to perform validation.
658
659         Fixed: #78816
660
661 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
662
663         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
664         (mono_arch_call_opcode): Ditto.
665
666         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
667         #78826.
668
669         * mini.c (mono_patch_info_dup_mp): New helper function.
670         
671         * aot-compiler.c (compile_method): Fix some of the memory allocated during
672         compilation. Fixes #78827.
673
674 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
675
676         * declsec.c: Use original security informations for
677           MONO_WRAPPER_MANAGED_TO_MANAGED.
678
679 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
680
681         * mini.c: Allow Com Interop methods/classes and
682         don't verify COM wrapper calls
683         
684
685 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
686
687         * inssel-long32.brg: Fix long->i4 checked conversion.
688
689         * exceptions.cs: Add a test for the above.
690
691 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
692
693         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
694
695         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
696         leaks.
697
698         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
699         #78775.
700
701 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
702
703         * mini.c: Fix solaris/x86 exception handling.
704
705         * Makefile.am: Get rid of $(ICU_LIBS).
706
707 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
708
709         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
710         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
711         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
712
713         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
714
715         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
716         this function causes a SIGSEGV.
717
718 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
719
720         * mini.c: Remove unused solaris/x86 includes.
721
722 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
723
724         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
725
726 2006-06-20  Jb Evain  <jbevain@gmail.com>
727
728         * cpu-g4.md: fix max length of start_handler instruction.
729
730 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
731         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
732
733 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
734         * ssa.c: Fixed bug 78653 for SSA based deadce.
735         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
736         MonoInst.flags, used in SSA based deadce.
737         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
738         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
739
740 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
741
742         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
743         it can end up using non executable memory on ppc64 systems
744         running ppc32 userspace (fix from Johannes Berg).
745
746 2006-06-14  Dick Porter  <dick@ximian.com>
747
748         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
749         4.1.1
750
751 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
752         * mini.c: Made so that inline is locally disabled if it would
753         trigger a .cctor, because too many apps depend on this behavior
754         (which seems to be also the one of the MS CLR).
755
756 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
757
758         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
759         No idea why this worked before.
760
761         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
762         which branch to outer exception clauses since they could skip the
763         inner finally clauses. Fixes #78633.
764
765         * exceptions.cs: Add a test for the above.
766
767         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
768         Fixes #78629.
769
770         * iltests.il: Add a test for the above.
771
772 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
773
774         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
775         after the end of a try bblock, to prevent asserts in mini_method_compile ().
776
777         * iltests.il: Add a test for the above.
778
779 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
780
781         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
782         
783         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
784         methods as instrinsics.
785
786 2006-06-09  Wade Berrier <wberrier@novell.com>
787
788         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
789         (simple-cee-ops.h ssapre-mini-ops.h)
790
791 2006-06-09  Neale Ferguson <neale@sinenomine.net>
792
793         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
794         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
795         instruction).
796         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
797         * cpu-s390x.md: Fix max. length values for a couple of instructions.
798
799 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
800
801         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
802
803 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
804
805         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
806         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
807         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
808         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
809         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
810         of opcodes, so that bug 78549 should not happen again.
811         * ssapre.c: Updated to use the renamed files.
812
813 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
814
815         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
816         in OP_ATOMIC_EXCHANGE_I4.
817
818 2006-06-07  Wade Berrier <wberrier@novell.com>
819
820         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
821         in mono_debugger_create_notification_function)
822
823 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
824
825         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
826         
827         * mini.c (type_from_stack_type): Disable some changes which do not
828         seem to work.
829
830         * driver.c: Reenable opts.
831
832         * mini.h (MonoStackSlot): New structure to keep track of the verification state
833         of the evaluation stack.
834         
835         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
836         evaluation stack trace at entry to the bblock.
837
838         * mini.c (merge_stacks): New function to perform verification of stack merges.
839         Turned off by default.
840
841         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
842         STACK_MP.
843         
844 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
845
846         * local-propagation.c: Fixed bug 78549.
847
848 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
849
850         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
851
852 2006-06-02  Miguel de Icaza  <miguel@novell.com>
853
854         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
855         tramp-arm.c, tramp-ia64.c
856         (mono_debugger_create_notification_function): Update signature to
857         new signature and use new protocol for creating the notification
858         function.  
859
860         Should fix the build.
861
862 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
863
864         * exceptions-ppc.c (mono_jit_walk_stack)
865         (ves_icall_get_frame_info): Fix the build
866
867 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
868
869         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
870
871 2006-05-31  Raja R Harinath  <rharinath@novell.com>
872
873         * il2tests.2.il: New file for generics CIL tests.  Add test for
874         #78019.
875         * Makefile.am: Update.
876
877         Fix #78019
878         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
879         to nullable types.
880
881 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
882
883         * aliasing.c: Fixed bug 78311.
884
885 2006-05-29  Martin Baulig  <martin@ximian.com>
886
887         * mini-exceptions.c (mono_find_jit_info): When computing the
888         native offset, check whether we're actually inside the method's
889         code; call mono_debug_print_stack_frame() to format the frame.
890         (ves_icall_System_Exception_get_trace): Call
891         mono_debug_print_stack_frame() to format the stack frame.
892         (ves_icall_get_trace): Update to the new debugging API.
893         (mono_jit_walk_stack_from_ctx): Likewise.
894         (ves_icall_get_frame_info): Likewise.
895
896         * mini.c (get_method_from_ip): Use the new debugging API.
897         (mono_print_method_from_ip): Likewise.
898
899         * exceptions-ppc.c
900         (mono_jit_walk_stack): Use the new debugging API.
901         (ves_icall_get_frame_info): Likewise.   
902
903 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
904
905         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
906
907 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
908
909         * mini.c: Added "limitator" to inline for debugging.
910
911 2006-05-24  Martin Baulig  <martin@ximian.com>
912
913         * debug-debugger.c (mono_debugger_init): Create a private,
914         malloc()-based code manager for the notification function and
915         intentionally leak it on exit.  This fixes the crash-on-exit race
916         condition.
917
918         * tramp-amd64.c
919         (mono_debugger_create_notification_function): Added
920         `MonoCodeManager *' argument.
921
922         * tramp-x86.c
923         (mono_debugger_create_notification_function): Added
924         `MonoCodeManager *' argument.
925
926 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
927
928         * aliasing.c: Fixed 64 bit issue.
929         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
930         default since all known bugs are fixed (one more time!).
931
932 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
933
934         * mini.c: write barrier support.
935
936 2006-05-23  Martin Baulig  <martin@ximian.com>
937
938         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
939         check at the top of the file.
940
941 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
942
943         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
944         reverting changes without reason and without changelog entries.
945
946 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
947
948         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
949         to a few opcodes. Fixes #78439.
950
951         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
952         consistency with other archs.
953
954         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
955
956 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
957
958         * debug-debugger.c: fix the build.
959
960 2006-05-17  Martin Baulig  <martin@ximian.com>
961
962         * debug-debugger.c
963         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
964         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
965         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
966         (debugger_attach): Call GC_mono_debugger_add_all_threads().
967
968 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
969
970         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
971
972 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
973
974         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
975         MONO_TYPE_GENERICINST.
976         
977         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
978         MONO_TYPE_GENERICINST.
979
980 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
981
982         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
983         #78325.
984
985 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
986
987         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
988         mempool.
989         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
990
991 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
992
993         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
994         mono_trace_cleanup ().
995
996         * iltests.il: Fix problem with the newly added test.
997
998         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
999         due to register constraints, free up the previous hreg. Fixes #78314.
1000
1001         * iltests.il: Add new test for #78314.  
1002
1003         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
1004         Interlocked.Add. Fixes #78312.
1005
1006         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
1007         
1008 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
1009
1010         * inssel.brg (mini_emit_virtual_call): Fix a warning.
1011
1012 2006-05-05  Martin Baulig  <martin@ximian.com>
1013
1014         * debug-mini.c (mono_debug_open_block): New method.
1015
1016         * mini-amd64.c
1017         (mono_arch_output_basic_block): Call mono_debug_open_block() at
1018         the beginning of each basic block.
1019
1020         * mini-x86.c
1021         (mono_arch_output_basic_block): Call mono_debug_open_block() at
1022         the beginning of each basic block.
1023
1024 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
1025
1026         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
1027         default until I understand why they break the build on amd64.
1028
1029 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * mini.c (mini_cleanup): Call mono_cleanup ().
1032
1033         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
1034         errors.
1035
1036 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
1037
1038         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
1039         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
1040         default since all known bugs are fixed, and I cannot reproduce bug
1041         77944... I'm asking Matt Hargett to test again after this commit.
1042
1043 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
1044
1045         * mini-codegen.c: Fixed typo that thrashed inline.
1046
1047 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * dominators.c (compute_dominators): Avoid using a worklist since
1050         it is not correct in some cases. Instead, iterate over all bblocks as
1051         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
1052
1053 2006-04-28  Miguel de Icaza  <miguel@novell.com>
1054
1055         * mini.c (mono_jit_compile_method_inner): Use
1056         mono_prepare_exception_from_error that resets the value
1057         internally.
1058
1059 2006-04-27  Miguel de Icaza  <miguel@novell.com>
1060
1061         * mini.c: Move the mini_loader_error_to_exception to metadata. 
1062         
1063 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
1064
1065         * aliasing.c: Fixed bug 78210.
1066
1067 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
1068
1069         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
1070         default until all their problems (or the ones they trigger) are fixed.
1071
1072 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
1073
1074         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
1075         
1076         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
1077         as loaded only after resolving patches since that could invoke the same method.
1078
1079         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
1080
1081         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
1082         functions.
1083
1084         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
1085         AOT loader.
1086
1087         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
1088         stack.
1089
1090         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
1091         made from AOT code through the PLT table.
1092
1093         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
1094         holding the plt offset when a call is made to the aot plt trampoline.
1095         
1096 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
1099         amd64 AOT support.
1100
1101         * Makefile.am (common_sources): Fix build breakage.
1102
1103         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
1104         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
1105         intra-assembly calls if possible.
1106         
1107         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
1108
1109         * mini-trampolines.c: Handle PLT entries.
1110
1111         * mini.c: Avoid creating a GOT var for calls.
1112
1113         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
1114         from mscorlib code.
1115
1116         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
1117         from mscorlib code.
1118
1119         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
1120         AOT code.       
1121
1122         * mini.h: Bump AOT file format version.
1123         
1124         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
1125         covers more cases.
1126
1127 2006-04-25  Martin Baulig  <martin@ximian.com>
1128
1129         * driver.c: Disable copyprop, consprop and inline when running
1130         inside the debugger.
1131
1132 2006-04-25  Martin Baulig  <martin@ximian.com>
1133
1134         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
1135         with `get_current_thread' and added `detach'.
1136         (MonoDebuggerMetadataInfo): Added `thread_size',
1137         `thread_tid_offset', `thread_stack_ptr_offset' and
1138         `thread_end_stack_offset'.
1139
1140 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
1141
1142         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
1143         aot-runtime.c.
1144
1145         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
1146         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
1147
1148         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
1149
1150         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
1151
1152         * aot.c: Add support for ADJUSTED_IID.  
1153
1154 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * aot.c (emit_method_order): Don't align method_order_end.
1157
1158         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
1159         the interface ID changes.
1160
1161 2006-04-21  Dick Porter  <dick@ximian.com>
1162
1163         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
1164         cleaning up a thread.  Fixes the new part of bug 77470.
1165
1166 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
1167
1168         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
1169         to managed wrapper.
1170                      
1171 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
1172
1173         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
1174         
1175         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
1176         SIGSEGV. Fixes #78072.
1177
1178         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
1179         unregister our SIGABRT handler.
1180
1181 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
1182
1183         * mini.c: Disabled inline where it can alter the call stack in a
1184         way visible from managed code.
1185         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
1186         default.
1187
1188 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
1189
1190         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
1191         on other platforms. Fixes #78089.
1192
1193 2006-04-13  Martin Baulig  <martin@ximian.com>
1194
1195         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
1196         determine whether we're inside the debugger.
1197
1198         * debug-debugger.h
1199         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
1200
1201 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
1204         handler clauses. Fixes #78024.
1205
1206         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
1207         in the CALL_MEMBASE opcodes. Fixes #78088.
1208         (mono_arch_get_vcall_slot_addr): Ditto.
1209
1210 2006-04-10  Martin Baulig  <martin@ximian.com>
1211
1212         * debug-debugger.c: The thread handling code has now been moved
1213         into ../metadata/threads.c.
1214
1215 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
1216
1217         * driver.c (mono_main): Fix --with-gc=none build.
1218
1219         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
1220         (mono_spillvar_offset_float): Ditto.
1221         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
1222         hreg, not when its !global, since on ia64, there is a third category: stacked
1223         registers.      
1224
1225 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
1226
1227         * mini.c: set MonoInst->klass for load field address and a few other
1228         places.
1229
1230 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
1233
1234 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
1237         the branch opt changes.
1238
1239 2006-04-06  Dick Porter  <dick@ximian.com>
1240
1241         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
1242         
1243         * wapihandles.c (mini_wapi_seminfo): 
1244         * driver.c (mono_main): Add semaphore info option
1245
1246 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
1247
1248         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
1249         branch optimization changes. Fixes #78009.
1250
1251 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
1252
1253         * mini.c: ignore accessibility of methods in managed->native wrappers.
1254
1255 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
1256
1257         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
1258         
1259         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
1260
1261 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
1262
1263         * mini.c: Modify the branch optimizations to preserve the invariant that
1264         the entries inside the in_bb and out_bb arrays are unique.
1265         (mono_unlink_bblock): Avoid creation of new arrays.
1266
1267 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * mini.c (mono_unlink_bblock): Fix regression caused by previous
1270         change (#77992).
1271
1272 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * mini.c (optimize_branches): Remove the "optimizations" in
1275         the cbranch1/cbranch2 -> branch cases which were causing several
1276         problems in the past. Fixes #77986.
1277
1278 2006-03-31  Chris Toshok  <toshok@ximian.com>
1279
1280         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
1281         default optimizations :(
1282
1283 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
1286         branch.
1287
1288 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
1289
1290         * local-propagation.c: Added comments to structs and removed
1291         "Mono" prefixes from local tree mover types.
1292
1293 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
1294
1295         * Makefile.am (arch_sources): Define this for each architecture so 
1296         libmono_la_SOURCES is defined in one place.
1297
1298 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
1299
1300         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
1301         from handles/.
1302
1303 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
1304
1305         * driver.c: print the GC name supplied by configure.
1306
1307 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
1308
1309         * local-propagation.c: Added tree mover, and moved here all the
1310         local propagation code from mini.c
1311         * mini.c: Added support for treeprop, and moved all the local
1312         propagation code to local-propagation.c
1313         * mini.h: Added support for treeprop
1314         * driver.c: Added support for treeprop, enabled consprop, copyprop,
1315         treeprop, inline and deadce by default
1316         * Makefile.am: Added local-propagation.c
1317
1318 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
1319
1320         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
1321
1322 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
1323
1324         * debug-debugger.c: make it compile without the Boehm GC.
1325
1326 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
1327
1328         * mini.c: fixed issue with mismatch when an icall is registered
1329         with multiple names but same address.
1330
1331 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
1332
1333         * declsec.c, mini-exceptions.c: use write barrier to set reference
1334         fields of managed objects.
1335
1336 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
1337
1338         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
1339         (can_access_internals): Fix a warning.
1340
1341         * mini.c (print_method_from_ip): Rename this to 
1342         mono_print_method_from_ip so it gets exported.
1343
1344         * trace.c: Deal with strings inside StringBuilder's containing garbage
1345         and fix memory leaks. Fixes #77848.
1346
1347 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
1348
1349         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
1350         fixes #77787.
1351
1352 2006-03-16 Neale Ferguson <neale@sinenomine.net>
1353         
1354         * mini-s390.c: Remove OP_X86_TEST_NULL.
1355
1356 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
1357
1358         * mini.c: use the correct GetHashCode() for the moving collector.
1359
1360 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
1361
1362         * liveness.c: Regalloc spill cost tuning.
1363
1364 2006-03-15 Neale Ferguson <neale@sinenomine.net>
1365         
1366         * mini-s390x.h: Correct S390_LONG macro.
1367
1368         * mini-s390x.c: Cleanup unused code.
1369
1370 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
1371
1372         * jit-icalls.h: New file.
1373
1374         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
1375         icalls and include that instead of including jit-icalls.c.
1376
1377         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
1378         OP_X86 opcodes.
1379
1380 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
1381
1382         * mini.c: when checking for member accessibility, also check for
1383         friend assemblies and for explicit interface implementations.
1384
1385 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
1388
1389         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
1390
1391         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
1392         common cases are done first.    
1393
1394         * mini-ops.h: Only define platform specific opcodes on the given platform.
1395
1396         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
1397         branch.
1398         
1399 2006-03-14  Martin Baulig  <martin@ximian.com>
1400
1401         Revert Paolo's change from r57348:
1402
1403         * mini.h: don't use gboolean for bitfields.
1404         * mini.c: verifier changes for fields and methods accessibility.
1405
1406 2006-03-13  Neale Ferguson <neale@sinenomine.net>
1407
1408         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
1409
1410         * mini-s390x.c: Fix conv_r_un.
1411
1412         * cpu-s390, cpu-s390x.md: Fix lengths.
1413
1414 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
1415
1416         * mini.c: nested types have access to all the nesting
1417         levels, not just the enclosing types.
1418
1419 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
1420
1421         * mini.c: added a few more verification checks.
1422
1423 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
1424
1425         * liveness.c: Merge optimizations from the linear-il branch.
1426
1427 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
1428
1429         * mini-ia64.c (emit_call): Add a comment.
1430
1431         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
1432
1433         * tramp-ia64.c: Fix some warnings.
1434
1435 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
1436
1437         * mini.h: don't use gboolean for bitfields.
1438         * mini.c: verifier changes for fields and methods accessibility.
1439
1440 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
1441
1442         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
1443         lazy icall wrapper changes.
1444
1445         * dominators.c: Replace all the dominator algorithms with faster
1446         ones from the linear-il branch.
1447
1448         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
1449         the mempool.
1450
1451         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
1452         common cases are done first.
1453
1454         * mini-amd64.c: Fix some warnings.
1455
1456         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
1457         from the mempool.
1458
1459         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
1460         added code.
1461
1462         * mini.h: Add a missing prototype.
1463
1464 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * mini.c: Compile icall wrappers lazily.
1467
1468         * mini-codegen.c: Use printf instead of g_print since its much faster.
1469
1470         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
1471         function.
1472
1473         * mini.c (optimize_branches): Cache the negative result from 
1474         remove_block_if_useless ().
1475
1476         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
1477         Also fix some bblock linking issues.
1478
1479         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
1480         assembly files.
1481
1482         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
1483
1484         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
1485         accessed fields first, for better cache behavior.
1486         
1487 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
1488
1489         * mini.c: speedup IList<T> array accesses.
1490
1491 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
1492
1493         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
1494         inline_costs counter. Fixes #77190.
1495
1496 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
1499         trace messages. Fixes #77706.
1500
1501 2006-03-04  Martin Baulig  <martin@ximian.com>
1502
1503         * tramp-amd64.c, tramp-x86.c
1504         (mono_debugger_create_notification_function): Use
1505         mono_global_codeman_reserve() to allocate a buffer at runtime and
1506         return it.
1507
1508         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
1509
1510         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
1511         notification function at runtime and then call `initialize' in the
1512         `MONO_DEBUGGER__debugger_info' vtable.
1513
1514 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
1515
1516         * iltests.il: Fix a visibility problem.
1517
1518 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
1519
1520         * driver.c, mini.c: add hooks for the counters API.
1521
1522 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
1523
1524         * driver.c: show disabled options.
1525
1526 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
1527
1528         * linear-scan.c: always use cost-driven selection.
1529
1530 2006-02-28  Raja R Harinath  <rharinath@novell.com>
1531
1532         * jit-icalls.c (helper_compile_generic_method): Revert change from
1533         2006-02-24.
1534
1535 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
1536
1537         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
1538
1539 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
1540
1541         * inssel.brg: style fixes, mostly to force the updated monoburg
1542         to run for people using svn.
1543
1544 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
1545
1546         * mini.c: match monoburg changes.
1547
1548 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
1549
1550         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
1551         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
1552         declaration in the header file.
1553
1554 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
1555
1556         * helpers.c: reduce relocations and mem usage.
1557
1558 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
1559
1560         * mini.h, mini-codegen.c: disable logging features if
1561         requested by configure.
1562
1563 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
1564
1565         * mini.c: tiny verifier changes.
1566
1567 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
1568
1569         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
1570         cpu-pentium.md: stack alignment changes for osx/x86,
1571         partially from Geoff Norton <gnorton@customerdna.com>.
1572
1573 2006-02-24  Raja R Harinath  <harinath@gmail.com>
1574
1575         * jit-icalls.c (helper_compile_generic_method): Update to changes
1576         in metadata/class.c.
1577
1578 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
1579         
1580         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
1581         
1582         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
1583         interface calls with large offsets.
1584
1585 2006-02-23  Raja R Harinath  <rharinath@novell.com>
1586
1587         * jit-icalls.c (helper_compile_generic_method): Document the
1588         special-case we depend on so that we can inflate the method twice
1589         with the same context with no bad side-effects.
1590
1591 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
1592
1593         * mini-x86.c, mini-amd64.c: fix for case when xen support
1594         is disabled.
1595
1596 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
1597
1598         * mini-x86.c, mini-amd64.c: generate code to access tls items
1599         in a faster way for Xen systems.
1600
1601 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
1602
1603         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
1604         updates and compilation fixes for the OSX/x86 port, mostly from
1605         Geoff Norton <gnorton@customerdna.com>.
1606
1607 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
1608
1609         * inssel.brg: faster interface call implementation
1610         to sync with the interface_offsets MonoVTable changes.
1611
1612 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
1613
1614         * mini.c: more verification checks.
1615
1616 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
1617
1618         * mini.c: added a few more verification checks.
1619
1620 2006-02-17      Neale Ferguson <neale@sinenomine.net>
1621
1622         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
1623         facility on the processor and use it if available.
1624
1625 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
1626
1627         * driver.c, aot.c, mini.c: throw exception if the IL code is
1628         invalid or unverifiable.
1629
1630 2006-02-17  Raja R Harinath  <rharinath@novell.com>
1631
1632         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
1633         m.StructField.
1634
1635 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
1636
1637         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
1638
1639 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
1640
1641         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
1642         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
1643         handling of instantiated generic valuetypes.
1644
1645 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
1648         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
1649         instead.
1650
1651         * generics.2.cs: Revert the nullable reftypes tests.
1652
1653 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
1654
1655         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
1656         using __builtin_frame_address (1) as it doesn't work in the presence
1657         of optimizations. Hopefully fixes #77273.
1658
1659         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
1660         -> generics.cs change as it doesn't work with some automake versions.
1661
1662 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
1663
1664         * mini.c: handle systems that sue a different way to
1665         retrieve the stack address of the current thread.
1666
1667 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
1668
1669         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
1670         it specially in the makefile.
1671
1672         * generics.2.cs: Add tests for nullable reference types.
1673
1674 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
1675
1676         * mini.c: always handle the case when mono_jit_init()
1677         is called in a thread different from the main thread,
1678         confusing libgc (bug #77309).
1679
1680 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
1681
1682         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
1683
1684 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
1685
1686         * mini.c: change optimize_branches () to use a single loop
1687         and introduce a new optimization to simplify some range checks.
1688
1689 2006-02-03  Martin Baulig  <martin@ximian.com>
1690
1691         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
1692         and merged with debugger_thread_manager_add_thread().
1693         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
1694         inform the debugger about the main thread.
1695
1696 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * basic.cs: Add test for div.un/rem.un constant folding.
1699
1700 2006-02-03  Neale Ferguson <neale@sinenomine.net>
1701
1702         * cpu-s390x.md: correct int_xor_imm length
1703
1704 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * generics.2.cs: New test for #77442.
1707
1708         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
1709         #77442.
1710
1711 2006-02-02  Martin Baulig  <martin@ximian.com>
1712
1713         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
1714         <mono/metadata/mono-debug-debugger.h>   
1715
1716         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
1717
1718 2006-02-02  Martin Baulig  <martin@ximian.com>
1719
1720         * debug-debugger.h: New header file for debug-debugger.c.
1721
1722         * debug-debugger.c: Big API cleanup; don't run the managed Main()
1723         function is a separate thread anymore; add support for attaching.
1724
1725 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * tramp-x86.c: Fix a warning.
1728
1729 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
1730
1731         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
1732         on very large methods.
1733
1734         * aot.c (load_patch_info): Fix a warning.
1735
1736 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
1737
1738         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
1739         mini-ops.h: alu membase optimizations.
1740
1741 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
1742
1743         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
1744         to speedup StringBuilder.
1745
1746 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * dominators.c (mono_compute_natural_loops): Fix detection of
1749         loop body start blocks.
1750
1751         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
1752
1753 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
1754
1755         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
1756         #75145.
1757
1758 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
1759
1760         * aliasing.c: Fixed aliasing issue on 64 bit archs.
1761
1762 2006-01-25  Martin Baulig  <martin@ximian.com>
1763
1764         * debug-debugger.c: Moved the `MonoDebuggerManager' and
1765         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
1766         started to cleanup this file a little bit.
1767
1768 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
1769
1770         * mini.c: optimize a codepath frequently happening in generics code.
1771
1772 2006-01-23  Martin Baulig  <martin@ximian.com>
1773
1774         * Makefile.am: Only compile debug-debugger.c on supported platforms.
1775
1776         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
1777         functions directly.
1778
1779         * driver.c: debug-debugger.c is only available if
1780         `MONO_DEBUGGER_SUPPORTED' is defined.   
1781
1782 2006-01-23  Martin Baulig  <martin@ximian.com>
1783
1784         * debug-debugger.c: Only enable this on platforms where the Mono
1785         Debugger is working (x86 and x86_64).
1786
1787 2006-01-21  Martin Baulig  <martin@ximian.com>
1788
1789         The Mono Debugger is now using the normal `mono' instead of the
1790         `mono-debugger-mini-wrapper' when executing managed code.
1791
1792         * debug-debugger.c: New file; previously known as
1793         debugger/wrapper/wrapper.c.
1794
1795         * debug-mini.c (mono_init_debugger): Removed.
1796
1797         * driver.c (mono_main): Added new `--inside-mdb' command line
1798         argument which is used when running inside the debugger.
1799
1800 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
1801
1802         * liveness.c (mono_analyze_liveness): Remove some unused data
1803         structures.
1804
1805 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
1808
1809 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
1810
1811         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
1812         depends on implementation details of monobitset.
1813
1814         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
1815         Fixes #77271.
1816
1817 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
1818
1819         * liveness.c: Update after monobitset changes.
1820
1821 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
1824
1825 2006-01-11 Neale Ferguson <neale@sinenomine.net>
1826
1827         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
1828
1829         * mini-s390x.c: Remove warning messages.
1830
1831 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
1832
1833         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
1834
1835 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
1836
1837         * generics.2.cs: Add ldelem/stelem_any test.
1838
1839 2006-01-10 Neale Ferguson <neale@sinenomine.net>
1840
1841         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
1842
1843 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
1846         
1847 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * generics.2.cs: Reenable vtype tests.
1850
1851         * inssel-x86.brg: Remove an icorrect valuetype rule.
1852
1853 2006-01-06 Neale Ferguson <neale@sinenomine.net>
1854
1855         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
1856         initial support for OP_ABS.
1857
1858 2006-01-05 Neale Ferguson <neale@sinenomine.net>
1859
1860         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
1861
1862 2006-01-05 Neale Ferguson <neale@sinenomine.net>
1863
1864         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
1865         conversion and implement LADD/LSUB.
1866
1867         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
1868         architectures.
1869
1870 2006-01-05 Neale Ferguson <neale@sinenomine.net>
1871
1872         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
1873
1874         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
1875         architectures.
1876
1877 2006-01-05 Neale Ferguson <neale@sinenomine.net>
1878
1879         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
1880         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
1881         (stack walk problem).
1882
1883 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * aot.c (mono_aot_load_method): Fix a warning.
1886
1887 2006-01-03  Neale Ferguson <neale@sinenomine.net>
1888
1889         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
1890
1891 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * iltests.il: Add test for #77148.
1894
1895         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
1896         #77148.
1897
1898 2006-01-03  Neale Ferguson <neale@sinenomine.net>
1899
1900         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
1901
1902 2006-01-03  Neale Ferguson <neale@sinenomine.net>
1903
1904         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
1905         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
1906
1907         * basic-long.cs: Add lconv-to-r4/r8 tests.
1908
1909 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
1910
1911         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
1912
1913         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
1914         here as on other archs.
1915
1916 2005-12-29 Neale Ferguson <neale@sinenomine.net>
1917
1918         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
1919
1920 2005-12-29 Neale Ferguson <neale@sinenomine.net>
1921
1922         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
1923         
1924         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
1925
1926         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
1927         instrument_prolog; Add memory_barrier instruction.
1928
1929 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
1930
1931         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
1932
1933 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
1934
1935         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
1936
1937         * aliasing.c inssel.brg: Fix warnings.
1938
1939         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
1940         could skip initialization of some parts of memory.
1941
1942         * mini.c mini-ia64.c: Fix warnings.
1943
1944         * inssel-sparc.brg: Add an implementation of lneg which actually works.
1945
1946 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
1947
1948         * aliasing.c (mono_build_aliasing_information): Add a workaround for
1949         a crash seen on sparc.
1950
1951         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
1952         
1953         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
1954
1955 2005-12-21 Neale Ferguson <neale@sinenomine.net>
1956
1957         * mini-ops.h: Add s390_backchain instruction
1958
1959         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
1960
1961         * cpu-s390.md: Add s390_backchain instruction
1962
1963         * mini-s390.c: Significant ABI changes
1964
1965         * mini-s390.h: Cater for zero length structures
1966
1967 2005-12-20 Neale Ferguson <neale@sinenomine.net>
1968
1969         * mini-s390.c: ABI fixes
1970
1971         * inssel-s390.brg: Remove debug statements
1972
1973         * cpu-s390.md: Fix length of ATOMIC_xx operations
1974
1975 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * basic-float.cs: Add float<->long conversion tests.
1978
1979 2005-12-16 Neale Ferguson <neale@sinenomine.net>
1980
1981         * mini-s390.c: Fix LOCALLOC processing.
1982
1983         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
1984
1985 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
1986
1987         * iltests.il: Add tests for some opcodes not covered by the other
1988         tests.
1989
1990 2005-12-15 Neale Ferguson <neale@sinenomine.net>
1991
1992         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
1993         register loading for Tail processing; Correct trace output.
1994
1995         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
1996
1997         * cpu-s390.md: Correct size of jmp instruction. 
1998
1999 2005-12-13 Neale Ferguson <neale@sinenomine.net>
2000
2001         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
2002
2003 2005-12-13 Neale Ferguson <neale@sinenomine.net>
2004
2005         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
2006           Bring s390 up to current level.
2007
2008 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
2009
2010         * generics.2.cs: Disable the newly added tests as they do not work yet.
2011         
2012         * generics.2.cs: Add valuetype tests.
2013
2014 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
2015
2016         * basic-long.cs: Add i4->u8 test.
2017
2018         * objects.cs: Add tests for JIT intrinsic.
2019
2020         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
2021         optimizations lost by a mistake.
2022
2023 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
2024
2025         * basic-long.cs: Remove a test moved to objects.cs.
2026
2027         * arrays.cs: Add more array tests.
2028
2029 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
2030
2031         * arrays.cs: Add new tests for multi-dimensional arrays.
2032
2033 2005-12-06  Raja R Harinath  <rharinath@novell.com>
2034
2035         * Makefile.am (test_sources2): Add generics.2.cs.
2036         (EXTRA_DIST): Add test_sources2.
2037
2038 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
2039
2040         Support for boxing and unboxing nullable types as well as the
2041         isinst operation on nullables, per the CLI ammendment.
2042
2043         * inssel.brg (CEE_ISINST): Special case for nullable
2044
2045         * mini.c (handle_unbox_nullable): new method
2046         (handle_box): Special case for nullable types
2047         (mono_method_to_ir): Call handle_unbox_nullable in correct
2048         places.
2049
2050         * generics.2.cs: New test suite
2051
2052         * Makefile.am: Support for regression tests with generics.
2053
2054 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
2055
2056         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
2057         allocated to registers. Fixes #76800.
2058
2059 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
2060
2061         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
2062
2063 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
2064
2065         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
2066         of platforms.
2067
2068 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
2069
2070         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
2071         objects.cs.
2072
2073         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
2074         
2075         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
2076 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
2077
2078         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
2079         single precision before storing to a single precision location.
2080
2081 2005-11-28  Raja R Harinath  <rharinath@novell.com>
2082
2083         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
2084
2085 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
2088         correct files.
2089
2090         * basic.cs: Remove test_0_byte_compares test which was moved to
2091         objects.cs a long time ago.
2092
2093 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
2094
2095         * aliasing.c: Fixed aliasing issue on 64 bit archs.
2096
2097 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
2100         handlers are called.
2101
2102         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
2103         throwing code.
2104
2105          * mini-ia64.c: Add support for the throw->branch exception 
2106         optimization.   
2107
2108         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
2109
2110 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
2111
2112         * mini.c: Enabled "fastpath" deadce :-)
2113         
2114 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
2115
2116         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
2117         alias analysis pass to support it.
2118         * mini.h: Likewise.
2119         * ssa.c: Likewise.
2120         * liveness.c: Likewise (liveness computation can use aliasing
2121         information to be more accurate).
2122         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
2123         moreover made so that "--compile-all" uses the given optimization
2124         flags and not the default ones.
2125         * aliasing.c: Alias analysis (new file).
2126         * aliasing.h: Likewise.
2127         * Makefile.am: added "aliasing.c" and "aliasing.h".
2128         
2129 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
2130
2131         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
2132         OP_L opcodes.
2133
2134 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
2135
2136         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
2137         fp >= end_of_stack exit condition, as it is not needed, and it might
2138         become true for fp eliminated frames.
2139
2140 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
2141
2142         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
2143         coded offsets.
2144
2145 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
2146
2147         * mini-arm.c: fixed alignment of doubles/longs to match
2148         the C ABI (bug #76635).
2149
2150 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
2151
2152         * aot.c: fix compilation with --enable-minimal=aot.
2153
2154 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
2155
2156         * mini-arm.c: fixed compatibility with the new
2157         floating point emulator package for compares.
2158
2159 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
2160
2161         * mini.c : reverted sig->pinvoke changes (r51396-51397).
2162
2163 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
2164
2165         * mini-exceptions.c (print_stack_frame): Output to stderr.
2166         (mono_handle_native_sigsegv): Ditto.
2167
2168 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
2169
2170         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
2171         OP_LCONV_TO_OVF_I implementation.
2172
2173         * mini-amd64.c: Add support for the throw->branch exception 
2174         optimization.
2175
2176         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
2177         when the catch clause catches a more general exception, i.e. Object.
2178
2179 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * cpu-ia64.md: Remove unused opcodes.
2182
2183         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
2184         specific defines for architectures defining USE_SIGACTION.
2185
2186         * mini-ia64.c: Fix some warnings.
2187
2188         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
2189         version seemed to skip a frame.
2190
2191 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
2192
2193         * mini.c: Clean up the usage of sig->pinvoke flag. Now
2194         only calls which are made to native code use this flag.
2195
2196 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
2197
2198         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
2199         varargs methods as well.
2200         
2201         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
2202         which have save_lmf set. Reorganize methods prologs a bit.
2203
2204         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
2205         debugger to the proper place.
2206
2207 2005-10-29  Martin Baulig  <martin@ximian.com>
2208
2209         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
2210         when running inside the debugger until the debugger has support
2211         for it.
2212
2213 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * mini.h: Fix a warning.
2216
2217 2005-10-24  Miguel de Icaza  <miguel@novell.com>
2218
2219         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
2220         we expose publicly, this returns the string.
2221
2222 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
2223
2224         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
2225         with fp elimination.
2226
2227 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
2230         native stacktrace using the glibc 'backtrace' function if available.
2231
2232 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
2235
2236         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
2237         handle SIGSEGVs received while in native code.
2238
2239         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
2240         code, call mono_handle_native_sigsegv which will abort the runtime
2241         after printing some diagnostics, instead of converting it into a
2242         confusing NullReferenceException.
2243
2244 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
2245
2246         * cpu-pentium.md: Remove unused opcodes.
2247
2248 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
2249
2250         * mini-amd64.h (MonoLMF): Add rsp field.
2251
2252         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
2253         the lmf too.
2254
2255 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
2256
2257         * mini-codegen.c (get_register_spilling): Fix some warnings.
2258
2259 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
2260
2261         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
2262         elimination during exception handling. Enable fp elimination by
2263         default.
2264
2265         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
2266         elimination.
2267
2268 2005-10-16  Martin Baulig  <martin@ximian.com>
2269
2270         * mini-exceptions.c
2271         (mono_debugger_run_finally): New public method for the debugger.
2272
2273 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
2274
2275         * debug-mini.c (mono_debug_init_method): Fix warning.
2276
2277         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
2278         the 'exname' parameter const to fix some warnings.
2279
2280 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
2281
2282         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
2283         introduced by the previous patch.
2284
2285 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * basic-float.cs: Add test for precision of float arithmetic.
2288
2289         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
2290         when loading/storing single values from/to memory.
2291
2292         * mini.c (mono_jit_compile_method_with_opt): Create the function
2293         pointers in the correct domain.
2294
2295 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
2296
2297         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
2298         introduced by previous patch.
2299         
2300         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
2301         when out_filter_idx is NULL.
2302
2303         * mini-exceptions.c: Don't run filter clauses twice during exception
2304         handling. Fixes #75755.
2305
2306 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * aot.c: Add support for ldflda wrappers.
2309
2310         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
2311         #75902.
2312
2313 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
2314
2315         * mini.c, mini.h: do not consider exception handlers blocks when
2316         setting up interface variables.
2317
2318 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
2319
2320         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
2321
2322 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
2325         causes a regression.
2326
2327         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
2328
2329 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
2330
2331         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
2332         of the OP_P definitions.
2333
2334         * TODO: Add a proposal for dealing with the CEE/OP mess.
2335
2336         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
2337         optimizations from the x86 port.
2338
2339         * cpu-amd64.md: Ditto.
2340
2341         * basic.cs basic-long.cs: Add tests.
2342
2343 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
2344
2345         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
2346         Patrik Torstensson's implementation of my exception-handling
2347         optimization idea, when the exception object is not used
2348         (bug #62150).
2349
2350 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
2351
2352         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
2353         of the mul_imm optimizations from the old jit.
2354
2355 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
2356
2357         * mini.c, liveness.c: patch by Patrik Torstensson and
2358         Zoltan Varga to improve performance in methods with
2359         exception clauses.
2360
2361 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * driver.c: Remove 'Globalization' entry from --version.
2364
2365 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
2366
2367         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
2368         there is a profiler interested in JIT events.
2369
2370         * aot.c: Load profile files produced by the AOT profiling module, and
2371         reorder methods based on the profiling info. Add a 'method_order' table
2372         to the AOT file to make mono_aot_find_jit_info work with the reordered
2373         methods.
2374
2375         * mini.h: Bump AOT file version info.
2376
2377 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
2378
2379         * mini-arm.h: work around what looks like a gcc bug when optimizations
2380         are enabled.
2381
2382 2005-09-28  Raja R Harinath  <rharinath@novell.com>
2383
2384         * Makefile.am (AM_CFLAGS): Don't use += to append inside
2385         conditionals.  Use ...
2386         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
2387
2388 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
2389
2390         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
2391         to determine the amount of memory to copy when passing valuetypes.
2392
2393         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
2394         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
2395
2396 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
2397
2398         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
2399         information about aot.
2400
2401 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
2402
2403         * *.c: Replace the use of {Enter,Leave}CriticalSection with
2404         macros. This will allow a deadlock debugger to easily be plugged
2405         in.
2406
2407 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
2408
2409         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
2410
2411 2005-09-27  Raja R Harinath  <rharinath@novell.com>
2412
2413         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
2414         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
2415         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
2416         ($(arch_built)) [CROSS_COMPILING]: Error out.
2417
2418 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
2419
2420         * aot.c: Add support for the no_special_static flag for classes.
2421
2422 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
2423
2424         * Reapply reverted patches.
2425
2426         * *: Revert r50174 as well.
2427
2428         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
2429
2430 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
2431
2432         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
2433
2434 2005-09-23  Miguel de Icaza  <miguel@novell.com>
2435
2436         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
2437         part of the SIG_HANDLER_SIGNATURE.  
2438
2439 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
2442         statistics.
2443
2444         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
2445         introduced by previous patch.
2446
2447 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
2448
2449         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
2450         saved registers too.
2451
2452         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
2453         upon the information returned by get_call_info ().
2454         
2455         * mini-x86.c (add_float): Fix stack size calculation.
2456         (mono_arch_call_opcode): Rewrite this so it works based up the
2457         information returned by get_call_info ().
2458         (mono_arch_get_this_vret_args): Ditto.
2459
2460 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
2461
2462         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
2463         in cinfo to determine the registers which need to be used.
2464
2465 2005-09-20  Miguel de Icaza  <miguel@novell.com>
2466
2467         * driver.c (mono_main): Add --server and --desktop flags. 
2468
2469 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
2470
2471         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
2472         registers as global registers.
2473
2474         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
2475         longer needed with the new register allocator.
2476
2477         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
2478
2479         * cpu-ia64.md: Remove unused opcodes.
2480         
2481         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
2482         
2483 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
2484
2485         * cpu-amd64.md: Remove unused opcodes.
2486
2487         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
2488         needed with the new register allocator.
2489
2490         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
2491         reg-reg moves.
2492
2493 2005-09-16  Raja R Harinath  <rharinath@novell.com>
2494
2495         * Makefile.am (check-local): Don't invoke semdel-wrapper.
2496
2497 2005-09-16  Martin Baulig  <martin@ximian.com>
2498
2499         * exceptions-amd64.c
2500         (throw_exception): Don't call mono_debugger_throw_exception() if
2501         we're a rethrow - see the FIXME in the code.
2502
2503 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
2504
2505         * mini.c (mono_init_exceptions): This only works on some architectures.
2506         
2507 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
2508
2509         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
2510         on ia64.
2511
2512         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
2513
2514         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
2515         now in mini-exceptions.c.
2516
2517 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
2518
2519         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
2520         now in mini-exceptions.c.
2521
2522 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * exceptions-x86.c: Applied patch from Patrik Torstensson 
2525         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
2526
2527         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
2528         code into mini-exceptions.c. Add some assertions to it.
2529
2530 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * aot.c (emit_section_change): Applied patch from "The Software Team" 
2533         (<software@solmersa.com>). Fix as errors on windows.
2534
2535 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
2536
2537         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
2538         method info into the LMF.
2539
2540 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
2541         
2542         * mini-ia64.c: Add proper unwind info for method epilogs.
2543
2544         * exceptions-ia64.c: Add some code to help debugging.
2545         
2546         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
2547
2548         * mini-exceptions.c: Fix warning.
2549
2550 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
2551
2552         * mini.c: Really fix build.
2553
2554         * mini-x86.c mini-amd64.c: Fix build.
2555
2556 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
2557
2558         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
2559
2560         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
2561         some Interlocked methods as intrinsics.
2562
2563         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
2564         for Thread methods as well.
2565
2566         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
2567
2568         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
2569
2570         * mini-ia64.c mini-x86.c mini-amd64.c 
2571         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
2572         OP_MEMORY_BARRIER.
2573         
2574         * mini.c (mono_init_exceptions): Fix build breakage.
2575
2576 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
2577
2578         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
2579         of instructions. Use the new ia64_unw_op macros for emitting unwind
2580         info.
2581
2582         * mini.c (mono_init_exceptions): Initialize exception handling
2583         related trampolines at startup.
2584
2585 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
2586
2587         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
2588
2589 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * mini.c: Handle type loading errors gracefully during compilation and
2592         throw the appropriate exception.
2593
2594 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
2595
2596         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
2597         for the mono binary.
2598
2599 2005-09-09  Martin Baulig  <martin@ximian.com>
2600
2601         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
2602         the release.
2603
2604 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
2605
2606         * mini-arm.h: use emulation for conv.r.un for the release.
2607
2608 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
2609
2610         * mini-arm.c, objects.cs: more fixes and tests for them.
2611
2612 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
2613
2614         * mini-arm.c: align structures to at least 4 bytes to be able
2615         to keep our current optimized memcpy.
2616
2617 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
2618
2619         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
2620
2621 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
2622
2623         * mini.c: ignore SIGPIPE.
2624
2625 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
2626
2627         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
2628
2629         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
2630
2631 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * mini.h: Add prototype for mono_allocate_stack_slots_full.
2634
2635 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
2636
2637         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
2638         exception handling support.
2639         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
2640         patch by Brian Koropoff <briank@marakicorp.com>).
2641
2642 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
2643
2644         * mini.c: revert another 'optimization' which breaks when
2645         items on the eval stack need to be saved at a basic block end
2646         (bug #75940).
2647
2648 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
2649
2650         * jit-icalls.c: for arrays, ensure we always provide
2651         lower bounds.
2652
2653 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
2656         
2657         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
2658
2659 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
2660
2661         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
2662         arguments in their original register.
2663
2664 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
2665
2666         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
2667         memset/memcpy.
2668
2669         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
2670         when ssapre is enabled.
2671
2672         * inssel-long.brg: Fix bug in previous patch.
2673
2674         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
2675         multiplication by a constant.
2676
2677 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
2678
2679         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
2680         icc.
2681
2682         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
2683         saving registers.
2684
2685 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
2686
2687         * inssel-arm.brg: apply changes tested by Brian Koropoff
2688         <briank@marakicorp.com>.
2689
2690 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
2691
2692         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
2693         
2694 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
2695
2696         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
2697         to the same register if dreg is just a base register.
2698         (print_ins): Improve printing of membase opcodes.
2699
2700         * inssel-x86.brg: Add optimized ldind(reg) rules.
2701
2702         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
2703
2704 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
2705
2706         * mini.c: when running under valgrind, set the stack bottom for
2707         the GC at the actual approximate stack for the app (fixes running
2708         mono with valgrind).
2709
2710 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
2711
2712         * mini.c: do no break at the first valuetype to init found
2713         (fixes bug #75791).
2714
2715 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
2716
2717         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
2718
2719 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
2720
2721         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
2722
2723 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
2724
2725         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
2726
2727 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
2728
2729         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
2730
2731         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
2732         code.
2733
2734         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
2735         code.
2736
2737         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
2738         methods.
2739
2740 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
2741
2742         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
2743
2744 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
2745
2746         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
2747         in the tail recursion optimization.
2748
2749         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
2750         debug info into the assembly file.
2751
2752         * iltests.il: Add test for filter regions.
2753
2754         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
2755         initial stack of filter regions. Fixes #75755.
2756
2757 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
2758
2759         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
2760         stack requirements.
2761
2762 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
2763
2764         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
2765         the check for an already compiled method on non-ia64 platforms.
2766         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
2767         proper domain.
2768
2769         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
2770
2771         * inssel-x86.brg: Add some optimized call rules.
2772
2773 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
2774
2775         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
2776         method here.
2777
2778         * mini.h mini-trampolines.c: Pass the trampoline argument to 
2779         mono_arch_patch_delegate_trampoline.
2780
2781         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
2782
2783         * mini-trampolines.c: Fix build.
2784
2785         * mini-amd64.h: Add delegate trampolines.
2786
2787         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
2788
2789         * inssel-amd64.brg: Add optimized call rules.
2790         
2791         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
2792
2793         * inssel-ia64.brg: Add optimized ldind(reg) rules.
2794
2795 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
2796
2797         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
2798         change.
2799
2800         * mini-ia64.c: Remove LMF fixmes.
2801
2802         * mini-ia64.h: Remove most fields from LMF.
2803
2804         * inssel-ia64.brg (stmt): Fix unaligned access errors.
2805
2806         * mini-trampolines.c: Add support for IA64 function descriptors.
2807
2808         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
2809         for IA64 function descriptors.
2810
2811 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
2812
2813         * tramp-arm.c: patch the vtable for virtual calls. Added
2814         support code to register/unregister the LMF.
2815         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
2816         more LMF work.
2817
2818 2005-08-19  Dick Porter  <dick@ximian.com>
2819
2820         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
2821         bit value if needed.
2822
2823 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
2824
2825         * mini.c (mini_get_method): Move handling of wrapper data here.
2826
2827         * mini.c (mono_method_to_ir): Add support for dynamic methods.
2828
2829         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
2830         virtual.
2831
2832         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
2833         bblock->code does not remain empty.
2834
2835 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
2836
2837         * arrays.cs: Add regression test for #75832.
2838
2839         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
2840         rules. Fixes #75832.
2841
2842         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
2843         instruction scheduling.
2844
2845 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
2846
2847         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
2848
2849 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
2850
2851         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
2852
2853         * mini-codegen.c: Fix VC build.
2854
2855         * cpu-pentium.md: Increase length of atomic_exhange_i4.
2856
2857 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
2858
2859         * mini.h: fix signature for mono_register_opcode_emulation.
2860
2861 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
2862
2863         * mini.c: Get rid of most of the helper_sig_... constants using
2864         mono_create_icall_signature ().
2865
2866 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
2867
2868         * jit-icalls.c (helper_ldstr): New helper function.
2869
2870         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
2871
2872         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
2873         throw, load the string using a helper call instead of creating a string object.
2874
2875         * aot.c: Update after LDSTR changes.
2876
2877         * mini.h: Bump AOT file version.
2878         
2879         * aot.c: Save class size info into the AOT file. Print more statistics during
2880         compilation.
2881
2882         * mini.h: Bump AOT file version.
2883
2884         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
2885         ordering of disasm cases. Fixes #74957.
2886
2887 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
2888
2889         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
2890         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
2891         the generic code needed for the ARM port.
2892
2893 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
2894
2895         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
2896         inssel-arm.brg: more ARM features and fixes.
2897
2898 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
2899
2900         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
2901         ARM port work in progress.
2902
2903 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
2904
2905         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
2906
2907         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
2908
2909         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
2910
2911         * inssel.brg (mini_emit_memset): Add support for unaligned access.
2912
2913         * *-ia64.*: Ongoing IA64 work.
2914         
2915         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
2916
2917 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
2918
2919         * TODO: Remove out-of-data todo stuff.
2920
2921         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
2922         dead code.
2923
2924         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
2925
2926         * mini.h: Bump corlib version.
2927
2928 2005-07-27  Martin Baulig  <martin@ximian.com>
2929
2930         * mini-codegen.c
2931         (create_copy_ins): Added `const unsigned char *ip' argument; set
2932         `copy->cil_code' from it.
2933
2934 2005-07-27  Martin Baulig  <martin@ximian.com>
2935
2936         * mini-exceptions.c (mono_handle_exception): Don't call
2937         mono_debugger_handle_exception() for filters.
2938
2939 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
2940
2941         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
2942         as well.
2943
2944 2005-07-26  Martin Baulig  <martin@ximian.com>
2945
2946         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
2947
2948         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
2949         helper_compile_generic_method() if the method is actually virtual
2950         and non-final.
2951
2952 2005-07-26  Martin Baulig  <martin@ximian.com>
2953
2954         * mini.c
2955         (trampoline_code): Renamed to `mono_trampoline_code' and made it
2956         public; this is now accessed directly by the debugger.
2957         (mono_generic_trampoline_code): Removed.
2958
2959         * debug-mini.c
2960         (mono_debug_init_method): Also add interncalls and wrappers.
2961
2962 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
2963
2964         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
2965
2966 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
2967
2968         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
2969
2970 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
2971
2972         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
2973
2974 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
2975
2976         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
2977         getting TLS offsets on AMD64 too.
2978
2979 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
2980
2981         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
2982
2983 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
2984
2985         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
2986         inssel-arm.brg, mini-arm.h: ARM port work in progress.
2987
2988 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
2989
2990         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
2991
2992         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
2993         to mini.c.
2994
2995         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
2996         mono_sparc_is_virtual_call ().
2997         
2998         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
2999
3000         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
3001         trampoline parameters.
3002
3003         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
3004         
3005         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
3006         to mono_arch_get_vcall_slot_addr.
3007
3008         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
3009         trampoline code.
3010
3011         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
3012
3013 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
3014
3015         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
3016
3017 2005-07-19  Martin Baulig  <martin@ximian.com>
3018
3019         * exceptions-amd64.c (throw_exception): Call
3020         mono_debugger_throw_exception() here like we're doing it on i386.
3021
3022 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
3023
3024         * mini-ia64.c: Add optimized TLS access support.
3025
3026 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
3027
3028         * mini-exceptions.c: Ongoing IA64 work.
3029
3030         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
3031
3032         * mini.c: Use the default optimization set when embedding. Fixes
3033         #75194.
3034
3035 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
3036
3037         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
3038         of trampolines to a separate file.
3039
3040         * mini-trampolines.c: New file.
3041
3042         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
3043         separate file.
3044         
3045         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
3046         amd64/ia64 code.
3047
3048         * mini-codegen.c: Fix cygwin build.
3049
3050 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
3051
3052         * mini.c: Add some minor changes needed by the IA64 port.
3053
3054         * *-ia64.*: Ongoing IA64 work.
3055
3056 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
3057
3058         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
3059         trampolines into arch-independent and arch-dependent parts.
3060
3061         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
3062
3063 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
3064
3065         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
3066
3067         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
3068         the xp-regalloc-branch for amd64.
3069
3070         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
3071         xp-regalloc-branch for x86.
3072
3073 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
3074
3075         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
3076
3077 2005-07-06  Martin Baulig  <martin@ximian.com>
3078
3079         * mini.c
3080         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
3081         (mono_jit_runtime_invoke): Likewise.
3082
3083 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
3084
3085         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
3086         on x86 too.
3087         
3088         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
3089         without loading their metadata. Reorganize the file format so exception handling+
3090         debug info is kept separate from normal method info. Create MonoJitInfo 
3091         structures for methods lazily.
3092
3093         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
3094         loading metadata.
3095         (x86_class_init_trampoline): Patch AOT class init trampolines too.
3096
3097         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
3098
3099         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
3100         in AOT code.
3101
3102         * mini.h: Bump AOT file version.
3103
3104 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
3105
3106         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
3107
3108 2005-07-01  Raja R Harinath  <rharinath@novell.com>
3109
3110         * Makefile.am (check-local): Call semdel-wrapper.
3111
3112 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
3113
3114         * mini-x86.c: Revert the last change as it seems to break the build..
3115
3116 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
3117
3118         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
3119         
3120         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
3121
3122 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
3123
3124         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
3125         outside of the macro, so strange stuff doesn't happen with gcc4
3126         (NEW_AOTCONST_TOKEN): Likewise.
3127
3128 2005-06-28  Martin Baulig  <martin@ximian.com>
3129
3130         * mini.c (mini_class_is_system_array): New static method; use this
3131         instead of `klass->parent == mono_defaults.array_class' everywhere
3132         since this also works for the new generic array class.
3133
3134 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
3135
3136         * inssel.brg: Remove warnings.
3137
3138 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
3139
3140         * mini-ia64.c: Ongoing IA64 work.
3141
3142         * basic-float.cs: Add float->i1 conversion test.
3143
3144         * iltests.il: Add conv.u4 test.
3145
3146 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
3147
3148         * inssel-long.brg: Fix bug caused by last change.
3149
3150 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
3151
3152         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
3153         BSDs.  Allows the x86 JIT to work on OSX86
3154
3155 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
3156
3157         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
3158         u4->i8 conversion.
3159
3160         * mini-ia64.c: Ongoing IA64 work.
3161
3162 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
3163
3164         * mini-ia64.c: Ongoing IA64 work.
3165
3166         * driver.c: Clean up jit_code_hash as well when using --regression.
3167
3168         * inssel-long.brg: Fix long->i4/u4 conversion rules.
3169
3170         * basic-long.cs: Add tests for long->u4 conversion.
3171
3172 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
3173
3174         * mini.c: Take mono_get_domainvar out of macros. This makes sure
3175         that we do not depend on undefined C behavior: the order stuff
3176         gets evaluated within an expression. Fixes mono when compiled on
3177         GCC 4.
3178
3179 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
3180
3181         * *-ia64.*: Ongoing IA64 work.
3182
3183         * aot.c: Lower memory usage while loading AOT methods.
3184
3185         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
3186
3187         * mini.h: Bump AOT file format version.
3188
3189 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
3190
3191         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
3192
3193 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
3194
3195         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
3196         not on callee assembly). Fixed some comments.
3197
3198 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
3199
3200         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
3201         it gets proper disassembly.
3202         (emit_method_info): Remove some dead code.
3203
3204         * mini.c (mini_method_compile): Allways allocate the GOT var in
3205         mono_method_to_ir for emulating opcodes.
3206
3207 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
3208
3209         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
3210         before freeing the code memory. Fixes #74990.
3211
3212         * objects.cs: Add regression test for #74992.
3213
3214         * liveness.c: Extend live ranges of arguments to the beginning of the
3215         method. Fixes #74992.
3216
3217         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
3218         so it points into the faulting instruction.
3219
3220 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
3221
3222         * jit-icalls.c (mono_imul_ovf): Add exception handling.
3223
3224         * *-ia64.*: Ongoing IA64 work.
3225
3226         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
3227
3228 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
3229
3230         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
3231
3232         * *-ia64.*: Ongoing IA64 work.
3233
3234 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
3235
3236         * basic-long.cs: Add tests for add/sub.ovf.
3237
3238         * basic.cs: Add tests for sub.ovf.
3239
3240         * *-ia64.*: Ongoing IA64 work.
3241
3242 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
3243
3244         * *-ia64.*: Ongoing IA64 work.
3245
3246         * basic.cs: Add conv.ovf.i4.un test.
3247
3248 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
3249
3250         * mini.c: (remove_block_if_useless) Fixed bug 75061.
3251         
3252 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
3253
3254         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
3255
3256 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
3257
3258         * *-ia64.*: Ongoing IA64 work.
3259
3260 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
3261
3262         * trace.[ch]:
3263         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
3264
3265 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
3266
3267         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
3268
3269 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
3270
3271         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
3272
3273         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
3274         of a call is callable by a near call.
3275
3276 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
3277
3278         * mini-ia64.c: Ongoing IA64 work.
3279
3280 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
3281
3282         * genmdesc.c: Make the generated array non-static.
3283
3284         * inssel-long.brg: Fix LSHR_IMM rule.
3285
3286         * *-ia64.*: Ongoing IA64 work.
3287
3288         * *-ia64.*: Ongoing IA64 work.
3289
3290 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
3291
3292         * *-ia64.*: Ongoing IA64 work.
3293
3294         * *-ia64.*: Ongoing IA64 work.
3295         
3296         * mini-ia64.c: Ongoing IA64 work.
3297
3298         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
3299
3300 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
3301
3302         * objects.cs basic-calls.cs: Move some tests to objects.cs.
3303         
3304         * objects.cs basic-long.cs: Move some tests to objects.cs.
3305
3306 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
3307
3308         * *-ia64.*: Ongoing IA64 work.
3309
3310         * iltests.il: Add a new test.
3311
3312         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
3313         newobj. Fixes #75042.
3314
3315 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
3316
3317         * *-ia64.*: Ongoing IA64 work.
3318         
3319         * *-ia64.*: Ongoing IA64 work.
3320         
3321         * *-ia64.*: Ongoing IA64 work.
3322
3323         * basic.cs objects.cs: Move tests accessing static variables as well.
3324
3325         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
3326
3327 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
3328
3329         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
3330
3331         * driver.c: Always print failed tests.
3332
3333         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
3334         frame pointer.
3335
3336         * *ia64*: Ongoing IA64 work.
3337
3338 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
3339
3340         * basic.cs: Add tests for add.ovf. Fix warnings.
3341
3342 2005-05-18  Miguel de Icaza  <miguel@novell.com>
3343
3344         * driver.c (mono_main): Avoid crash if no argument is passed to
3345         --break;  Do not use g_error, but f_printf.   And fix all other
3346         ocurrences of the same crash.
3347
3348 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
3349
3350         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
3351         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
3352         Fixes #74742.
3353
3354 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
3355
3356         * *-ia64.*: Add beginnings of IA64 backend.
3357
3358         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
3359
3360 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
3361
3362         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
3363         Fixes #74925.
3364
3365         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
3366
3367         * mini-amd64.c: Fix a warning.
3368
3369 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
3370
3371         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
3372         in float_neg. Fixes #74897.
3373
3374         * mini-amd64.c (emit_call): Fix another near call bug.
3375
3376 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
3377
3378         * declsec.c: Keep the appdomain information in the structure. Added a 
3379         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
3380         value gets overwritten).
3381         * declsec.h: Set the default MonoArray for the the stack to 6. Added
3382         an MonoAppDomain member to MonoSecurityFrame.
3383         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
3384         used in the stack walk. Now use a MonoArray which grow (double) when
3385         it gets full.
3386
3387 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
3388
3389         * mini.c: Re-enabled runtime cleanup, since running threads should
3390         now properly stop when exiting.
3391
3392 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
3393
3394         * mini-codegen.c: New file contaning the arch-independent local
3395         register allocator. Not used by any architectures yet.
3396
3397         * mini.h linear-scan.c: Merge some changes from the 
3398         mini-xp-local-regalloc branch.
3399
3400 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
3401
3402         * mini-amd64.c (emit_call): Fix calls to native functions when the
3403         runtime is compiled as a shared library. Fixes #74756.
3404
3405         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
3406         on a literal field. Fixes #74751.
3407
3408 2005-04-25  Raja R Harinath  <rharinath@novell.com>
3409
3410         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
3411
3412 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
3413
3414         * objects.cs: Add missing null casting test.
3415
3416 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
3417
3418         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
3419         in wrapper methods. Also rename 'address' variable to 'offset'.
3420
3421 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
3422
3423         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
3424         warnings.
3425         
3426         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
3427
3428         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
3429         work on windows.
3430
3431 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
3432
3433         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
3434
3435 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
3436
3437         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
3438         just the last bytes.
3439
3440 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
3441
3442         * aot.c (mono_compile_assembly): Fix warning.
3443
3444         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
3445         by the _MSC_VER stuff.
3446
3447 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
3448
3449         * inssel-long.brg: Fix #74588.
3450
3451         * cpu-amd64.md: Fix #74591.
3452
3453         * iltests.il: Add new regression tests.
3454
3455 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
3456
3457         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
3458         valuetype.
3459
3460 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
3461
3462         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
3463
3464         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
3465         from Bill Middleton <flashdict@gmail.com>.
3466
3467 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
3468
3469         * arrays.cs: Add new regression test. Fix warnings.
3470
3471 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
3472
3473         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
3474         and leakage in CKFINITE.
3475
3476         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
3477         this to a null op since it is called on amd64 too.
3478
3479         * exceptions-amd64.c (get_throw_trampoline): Align stack.
3480
3481         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
3482         body since this is not used on amd64.
3483         
3484         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
3485
3486         * mini-amd64.c: Remove obsolete fixmes.
3487
3488         * mini.c (print_method_from_ip): Fix debugging support.
3489
3490 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
3491
3492         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
3493         so that expressions that don't give much gain are not reduced.
3494         * ssapre.h: Likewise.
3495
3496 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
3497
3498         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
3499
3500         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
3501
3502         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
3503
3504 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
3505
3506         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
3507
3508         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
3509
3510 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
3511
3512         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
3513         stack touching.
3514
3515         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
3516
3517         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
3518
3519         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
3520
3521         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
3522         MONO_ARCH_USE_SIGACTION. Fixes #74252.
3523
3524         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
3525
3526         * mini-x86.c: Fix up stack overflow handling.   
3527
3528         * exceptions.cs: Add new regression test.
3529
3530 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
3531
3532         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
3533         mono_jit_thread_attach.
3534
3535         * mini.c (mono_method_to_ir): Verify called method is not abstract.
3536
3537 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
3538
3539         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
3540         avoid calling constructors using callvirt.
3541
3542         * inssel.brg: Fix #74073.
3543
3544 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
3545
3546         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
3547         compilation with non-GCC compilers.
3548         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
3549         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
3550
3551 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
3552
3553         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
3554         klass->interface_offsets (will likely fix bug#74073).
3555
3556 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
3557
3558         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
3559
3560 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
3561
3562         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
3563         to amd64_div_reg_size ().
3564         
3565         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
3566
3567 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
3568
3569         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
3570
3571 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
3572
3573         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
3574
3575 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
3576
3577         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
3578         
3579         * mini.c (mono_precompile_assembly): Load and precompile referenced
3580         assemblies as well. Fixes #74015.
3581
3582 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
3583
3584         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
3585
3586 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
3587
3588         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
3589         a lot of checks and (anyway) permissions cannot work until corlib is 
3590         loaded.
3591
3592 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
3593
3594         * mini-ppc.c: fixed ABI issue on sysv/ppc.
3595
3596 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
3597
3598         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
3599         calls (fixes bug#72824).
3600
3601 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
3602
3603         * mini.c: fix tail recursion elimination (see test in bug#73936).
3604
3605 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
3606
3607         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
3608         some fp functions in sse2 mode.
3609
3610 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
3611
3612         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
3613
3614 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
3615
3616         * mini.h mini.c: Add mono_get_jit_tls_key ().
3617
3618         * mini-x86.c: Enable fast TLS support on windows.
3619
3620 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3621
3622         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
3623         * mini.c: Check for p/invoke method when generating code. If a
3624         p/invoke method, or it's class, isn't decorated with [Suppress
3625         UnmanagedCodeSecurity] then generate code to call System.Security.
3626         UnmanagedDemand (only if the security manager is active).
3627
3628 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
3629
3630         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
3631         last change as it seems to cause strange crashes.
3632         
3633 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
3634
3635         * *.c: handle unsafe function pointers where needed.
3636
3637 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
3638
3639         * mini.c (mono_jit_free_method): Remove the fixme too.
3640
3641 2005-03-15  Miguel de Icaza  <miguel@novell.com>
3642
3643         * mini.c: As discussed, make the code actually free the delegate
3644         thunk now, to enable the debugging of delegate problems, use
3645         MONO_DEBUG=1 when running Mono. 
3646
3647         This takes also care of parts of the leaks as seen by Joe.
3648
3649 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
3650
3651         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
3652         thread_tls_offset calculation.
3653
3654 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
3655
3656         * declsec.c: Reworked linkdemand checks for icall. The previous code
3657         was using the declaration code (untrusted) and didn't work as expected
3658         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
3659         specific case.
3660
3661 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
3662
3663         * iltests.il: Add new localloc test.
3664
3665         * mini-amd64.c: Handle large stack allocations the same way as on
3666         windows if stack overflow handling is working.
3667         
3668         * mini-amd64.c: Allocate the signal stack using mmap.
3669
3670         * mini.c (sigsegv_signal_handler): Fix reading of context.
3671
3672         * mini-exceptions.c: Fix up stack overflow handling.
3673
3674         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
3675
3676         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
3677
3678         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
3679
3680         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
3681
3682         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
3683         tramp_init functions as they are no longer needed.
3684
3685 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
3686
3687         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
3688         
3689         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
3690
3691         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
3692         
3693         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
3694         support that now.
3695
3696         * mini-ops.h: Add OP_LMUL_IMM.
3697
3698         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
3699         long mul/div opcodes as intrinsic.
3700
3701         * mini-amd64.c (emit_call): Handle the case when the callee might be
3702         an AOT method.
3703
3704 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
3705
3706         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
3707         extra safe.
3708         
3709         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
3710
3711         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
3712
3713 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
3714
3715         * mini.c (mono_codegen): Don't leak here, to help people running
3716         monogrind.
3717
3718 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
3719
3720         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
3721         conversions in sse2 mode.
3722
3723         * basic-float.cs: Add regression test.
3724         
3725         * mini-amd64.c: Reenable sse2.
3726
3727 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
3728
3729         * mini-amd64.c: Disable sse2 until some regressions are fixed.
3730
3731 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
3732
3733         * driver.c: Copyright text should include 2005.
3734         
3735 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
3736
3737         * cpu-amd64.md (load_membase): Fix more max lengths.
3738
3739 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
3740
3741         * cpu-amd64.md (load_membase): Fix max length.
3742
3743         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
3744
3745         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
3746
3747         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
3748         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
3749
3750         * basic-float.cs: Add rounding regression test.
3751
3752         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
3753
3754 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
3755
3756         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
3757         structures in registers for pinvoke wrappers.
3758
3759 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
3760
3761         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
3762
3763 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
3764
3765         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
3766         wrapper to mono_jit_thread_attach.
3767
3768         * mini.c (mini_jit_thread_attach): New jit icall.
3769
3770         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
3771         native->managed wrappers.
3772
3773         * exceptions.cs: Add new regression test.
3774
3775         * mini.c (optimize_branches): Check regions in the cbranch to throw
3776         block case as well. Fixes #73242.
3777
3778 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
3779
3780         * mini.c: thread safety fixes.
3781
3782 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
3783
3784         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
3785         patching stuff, since delegates use jump trampolines so there is
3786         no caller.
3787
3788         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
3789         jump trampolines.
3790         
3791         * tramp-amd64.c: Fix build.
3792
3793         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
3794         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
3795
3796         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
3797         Rename this to mono_arch....
3798         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
3799
3800         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
3801
3802         * mini-amd64.c (emit_call): If both the caller and the callee is
3803         guaranteed to have 32 bit addresses, emit a normal call.
3804
3805         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
3806
3807         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
3808         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
3809         method_ptr inside delegates.
3810
3811 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
3812
3813         * mini.c (mono_jit_free_method): Free the method info even if the native code is
3814         invalidated. Fixes #73001.
3815
3816         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
3817
3818         * mini-x86.c: Only use stdcall for pinvokes on windows.
3819
3820 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
3821
3822         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
3823         * mini-x86.c: remove unreliable __thread var offset detection,
3824         use the correct accessors and enable by default.
3825
3826 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
3827
3828         * mini.c (mono_jit_free_method): Fix memory leak.
3829
3830 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
3831
3832         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
3833
3834 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
3835
3836         * cpu-amd64.md: Fix lengths of atomic opcodes.
3837
3838 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
3839
3840         * driver.c: try to not imply using ICU is any good.
3841
3842 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
3843
3844         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
3845         functions as inline ops.
3846
3847         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
3848         some Interlocked functions as inline ops.
3849
3850         * mini.c (move_basic_block_to_end): Fix bug in last patch.
3851
3852         * mini.h (MonoBasicBlock): Reorganize fields a bit.
3853
3854         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
3855
3856         * mini.c: Add support for OP_NOT_TAKEN.
3857
3858         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
3859         structures in registers for pinvoke wrappers.
3860
3861         * mini-amd64.c: Fix warnings.
3862
3863 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
3864
3865         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
3866
3867         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
3868
3869         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
3870         address instead of loading the address from it.
3871
3872         * mini-x86.c: Add support for returning small structs in registers
3873         on Win32. Fixes part of #70864.
3874         
3875 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
3876
3877         * trace.c (get_token): Improve error checking.
3878
3879 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
3880
3881         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
3882
3883 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
3884  
3885         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
3886         it can be reused for MonoClass.
3887         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
3888         _LINKDEMAND.
3889
3890 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
3891
3892         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
3893         instead of a MonoReflectionMethod. The method information wasn't used
3894         when displaying SecurityException details (but will be now).
3895
3896 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
3897
3898         * Makefile.am : windows build fix.
3899
3900 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
3901
3902         * iltests.il: Add new regression test.
3903
3904         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
3905         #72522.
3906
3907 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
3908  
3909         * mini.c: Moved linkdemand check into helper function check_linkdemand
3910         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
3911         LDFTN, LDVIRTFTN).
3912
3913 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
3914
3915         * declsec.c: Added statistics counter for different kinds of 
3916         LinkDemands.
3917         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
3918         (and commented) declaration.
3919         * mini.c: Added statistics counter for security Demand code 
3920         generation. Added display of security statistics.
3921
3922 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
3923
3924         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
3925         Fix compilation errors under gcc-2.95.
3926
3927 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
3928
3929         * mini.c, driver.c: Use the new jit trampoline hashtable
3930
3931 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
3932
3933         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
3934
3935 2005-02-11  Martin Baulig  <martin@ximian.com>
3936
3937         * debug-mini.c (mono_debug_close_method): Free the line number array.
3938
3939 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
3940
3941         * aot.c: Break up large methods into smaller ones. Share GOT slots for
3942         icalls.
3943
3944         * mini.h: Bump AOT file format version. 
3945
3946 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
3947
3948         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
3949         APTC and P/Invoke.
3950         * declsec.h: Added macros to get/set lazyly initialized security 
3951         informations about assemblies. Added new enum for different type of
3952         possible LinkDemand violation. Added function to check LinkDemands.
3953         * mini.h: Added a field to MonoCompile to hold any security violation
3954         detected when JITting a method (so it can be thrown later).
3955         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
3956         and CEE_CALLVIRT. Added code to throw exception at the end of
3957         mini_method_compile (note: the exception is unhandled right now).
3958
3959 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
3960
3961         * mini.c, jit-icalls.c: use the managed implementation of
3962         memset for initobj and memset, to avoid managed <-> unmanaged
3963         transitions.
3964
3965 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
3966
3967         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
3968         optimization if it would need a GOT var.
3969
3970         * basic.cs: Add tests for constant propagation and switch statements.
3971
3972         * ssa.c: Fix out-of-range constant propagation and switch statements.
3973
3974 2005-02-09    <vargaz@freemail.hu>
3975
3976         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
3977
3978 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
3979
3980         * cpu-amd64.md (load_membase): Fix max length of load_membase.
3981
3982 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
3983
3984         * mini.c: update to new signature of mono_class_get_allocation_ftn().
3985
3986 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
3987
3988         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
3989         arithmetic operations.
3990
3991 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
3992
3993         * mini-ppc.c: add a workaround for broken user code that
3994         DllImports vararg functions with non-vararg signatures.
3995
3996 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
3997
3998         * mini.c (mono_jit_compile_method_inner): Add detection and a 
3999         meaningfull error message for assemblies written in Managed C++.
4000
4001         * tramp-amd64.c mini-amd64.h: Add support for 
4002         create_trampoline_from_token ().
4003
4004         * aot.c mini-x86.c abcremoval.c: Applied patch from
4005         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
4006
4007 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
4008
4009         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
4010         which takes a MonoImage/token as parameter instead of a MonoMethod.
4011
4012         * aot.c: Use the new trampoline for initializing vtables.
4013
4014         * aot.c: Add support for ldfld/stfld_remote wrappers.
4015
4016         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
4017         rules for compare <MEM>, IMM.
4018
4019         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
4020
4021         * aot.c: Handle inherited finalizers correctly.
4022
4023 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
4024
4025         * inssel.brg (stmt): Add a missing _setup_... ().
4026
4027         * aot.c: Save some parts of the class state to the AOT file and use it
4028         to recompute that state when a class is initialized.
4029
4030         * mini.c: Install AOT hooks into the runtime.
4031
4032         * mini.h: Bump AOT file format version.
4033         
4034         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
4035         Fixes #72148.
4036
4037         * iltests.il: Add new test.
4038
4039 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
4040
4041         * mini.c: fix typo.
4042
4043 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
4044
4045         * mini.c: setup the statistical profiler in the thread attach
4046         callback to cope with the new single thread code.
4047
4048 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
4049
4050         * mini-ppc.c: ensure we have enough room for the profiler
4051         calls (fixed bug#72084).
4052
4053 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
4054
4055         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
4056         it.
4057
4058 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
4059
4060         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
4061
4062 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
4063
4064         * ssapre.c: Fixed an issue with down safety (this allows IronPython
4065         to succesfully execute parrotbench).
4066         * ssapre.h: Likewise.
4067
4068 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
4069
4070         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
4071         variable for stores to method arguments (fixes a SSAPRE issue).
4072
4073 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
4074
4075         * mini.c: handle value types in dup, fixes gen-112.cs.
4076
4077 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
4078
4079         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
4080         sequence for calls in dynamic methods to avoid thunks.
4081
4082 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
4083
4084         * mini.c: correctly remove dynamic methods from the hashtable.
4085
4086 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
4087
4088         * driver.c: Disabled SSAPRE until fix the bug that appears
4089         in IronPython's parrotbench.
4090
4091 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
4092
4093         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
4094
4095         * mini.c (mono_method_to_ir): Revert the previous change.
4096         
4097         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
4098         when AOT compiling.
4099
4100         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
4101         mono_jit_info_table_find () etc. when running under valgrind.
4102
4103         * inssel.brg: Fix warnings.
4104
4105         * mini-exceptions.c: Fix warnings.
4106
4107 2005-01-31  Martin Baulig  <martin@ximian.com>
4108
4109         * driver.c (compile_all_methods_thread_main): Don't try to compile
4110         generic methods or anything which has type parameters.
4111
4112 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
4113
4114         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
4115
4116         * TestDriver.cs: Add --verbose flags.
4117
4118         * graph.c ssa.c: Fix 64 bit warnings.
4119         
4120         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
4121         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
4122         Fix 64 bit warnings.
4123
4124         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
4125         variable not spotted by gcc.
4126         
4127         * mini-amd64.c inssel-amd64.brg: Applied patch from  
4128         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
4129         X86_COMPARE_MEMBASE opcodes.
4130
4131         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
4132
4133 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
4134
4135         * *: MonoMethod->signature might be NULL now. You *MUST* use
4136         mono_method_signature.
4137
4138 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
4139
4140         * driver.c (compile_all_methods_thread_main): Compile the methods
4141         without invoking cctors.
4142
4143 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
4144
4145         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
4146         * basic-calls.cs: test for the above.
4147
4148 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
4149
4150         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
4151         MonoJitInfo changes.
4152
4153 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
4154
4155         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
4156         eagerly if it contains dynamic methods.
4157         
4158         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
4159
4160         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
4161         trace, it is now computed by an icall from trace_ips.
4162         
4163         * mini-exceptions.c: Fix a warning.
4164
4165 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
4166
4167         * mini-exceptions.c: don't bother getting stack trace info if
4168         it's not going to be used.
4169
4170 2005-01-27  Raja R Harinath  <rharinath@novell.com>
4171
4172         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
4173         ssapre-mini-ops.h.
4174
4175 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
4176
4177         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
4178
4179         * aot.c: Avoid calling mono_method_get_header () if not needed.
4180
4181         * mini.h: Bump AOT file format version.
4182         
4183         * mini.c (mono_emit_native_call): Allocate a GOT var here.
4184
4185         * mini.c (mono_print_tree): Print more info for calls.
4186
4187 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
4188
4189         * declsec.h: Remove warning by adding missing include for marshal.h
4190
4191 2005-01-26  Martin Baulig  <martin@ximian.com>
4192
4193         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
4194         `ip' twice.
4195
4196 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
4197
4198         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
4199         flags.
4200
4201         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
4202
4203         * aot.c (mono_compile_assembly): Fix a warning.
4204
4205 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
4206
4207         * declsec.c: Look for security attributes on the original MonoMethod 
4208         (and not the wrapped one). This fix permissions on icalls.
4209
4210 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
4211
4212         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
4213
4214         * mini.c (mono_allocate_stack_slots): Add a fixme.
4215
4216         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
4217
4218 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
4219
4220         * inssel.brg: optimize casts of sealed types (more
4221         optimizations waiting for fixes in remoting).
4222
4223 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
4224
4225         * inssel.brg (stmt): Add another dummy rule.
4226
4227         * driver.c: Fix warnings.
4228
4229         * driver.c (mono_main): If running under valgrind, instruct glib to use
4230         the system allocation functions so valgrind can track the memory
4231         allocated by the g_... functions.
4232
4233         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
4234
4235         * mini-ops.h: Add OP_DUMMY_STORE opcode.
4236
4237         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
4238
4239         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
4240         variables in try regions.
4241
4242         * mini.c (mini_method_compile): Don't disable optimizations on large
4243         methods when AOT compiling.
4244
4245         * mini.c (mono_allocate_stack_slots): New arch independent method to 
4246         allocate stack slots. Not yet used.
4247
4248 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
4249
4250         * debug-mini.c (mono_debug_close_method): Plug some leaks.
4251
4252 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
4253
4254         * mini-ppc.c: make the branch info relative as the code
4255         buffer can be reallocated.
4256
4257 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
4258
4259         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
4260         * driver.c: Removed the AOT/security restriction. Now initialize the
4261         security manager (in metadata) if --security is used.
4262         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
4263         rather than the pointer to declarative security, when AOT is used.
4264
4265 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
4266
4267         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
4268         basic blocks, reduced intrinsic exception throwing code size.
4269
4270 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
4271
4272         * driver.c (mini_usage): Reorder the usage screen.
4273
4274 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
4275
4276         * mini.c (mono_resolve_patch_target): Fix warning.
4277
4278 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
4279
4280         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
4281         previous patch.
4282
4283         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
4284
4285         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
4286         breaks the amd64 build.
4287
4288         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
4289         register allocation. Fixes #71454.
4290
4291         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
4292
4293         * arrays.cs: Add new regression test.   
4294
4295 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
4296
4297         * ssapre.c: Turned usage of snprintf to GString.
4298         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
4299         (I left it on by mistake in my previous commit).
4300
4301 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
4302
4303         * mini.c, cfold.c, basic-calls.cs: preserve side effects
4304         on cond branch optimization (fixes bug# 71515).
4305
4306 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
4307
4308         * abcremoval.c: Fixed bug 71062.
4309         * abcremoval.h: Likewise.
4310
4311 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
4312
4313         * mini.c: Added a new functionality to optimize_branches, the removal
4314         of useless basic blocks, and fixed some problem in the removal of
4315         critical edges; some utility functions added for both purposes.
4316         * ssapre.c: Added complex expression support, and fixed bug 70637.
4317         * ssapre.h: Likewise.
4318         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
4319         enabled in SSAPRE.
4320         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
4321         * driver.c: Re-enabled SSAPRE.
4322
4323 2005-01-19  Martin Baulig  <martin@ximian.com>
4324
4325         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
4326         the result of mono_get_method_constrained().
4327
4328 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
4329
4330         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
4331         manager.
4332
4333 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
4334
4335         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
4336         be detected.  Fixes #59296.
4337
4338 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
4339
4340         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
4341         which can happen. Fixes #71361.
4342
4343 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
4344
4345         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
4346         manager.
4347
4348 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
4349
4350         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
4351         appdomain-unload.exe to fail.
4352         
4353         * mini.c: Fix some memory leaks.
4354
4355 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
4356
4357         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
4358         Fixed bug and sped up some codepaths.
4359
4360 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
4361
4362         * mini.c: Fix some memory leaks.
4363
4364         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
4365         conversion.
4366
4367         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
4368
4369         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
4370         #71320.
4371
4372         * iltests.il: Add regression test for #71320.
4373
4374 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
4375
4376         * mini.c (mono_codegen): Fix installation of profiler hooks.
4377
4378         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
4379
4380 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
4381
4382         * mini.h, mini.c, cfold.c: optimize access to enum
4383         readonly fields, too. Eval conditional branches if possible
4384         to perform unreachable code removal in more cases.
4385
4386 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
4387
4388         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
4389
4390         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
4391         code manager.
4392
4393         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
4394         WinXP DEP. Fixes #71244.
4395
4396 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
4397
4398         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
4399
4400 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
4401
4402         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
4403
4404 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
4405
4406         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
4407         changes.
4408
4409         * mini.h: Bump AOT version.
4410
4411         * mini.h (MonoCompile): Change exvar to a hash table.
4412
4413         * mini.c: Allocate a separate exvar for each handler block.
4414
4415         * mini.c: Get rid of the computation of filter_lengths, its not needed.
4416
4417         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
4418         ex var with the pending exception and only throw if the two are equal.
4419         Fixes #68552.
4420         
4421         * exceptions.cs: Add tests for rethrow and nested catch clauses.
4422
4423         * mini-x86.c: Fix warnings.
4424
4425         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
4426         used by all the ports now.
4427
4428         * aot.c: Add write-symbols and save-temps options.
4429
4430 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
4431
4432         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
4433
4434 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
4435
4436         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
4437         operations.
4438
4439         * tramp-s390.c: Check vtable slot belongs to the domain.
4440
4441         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
4442         as per other platforms.
4443
4444         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
4445
4446 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
4447
4448         * driver.c: we don't run the Main() code in a subthread anymore.
4449
4450 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
4451
4452         * mini.c: added experimental rtc support in the statistical
4453         profiler: if the user has the permission, more accurate statistics
4454         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
4455         The MONO_RTC value must be restricted to what the linux rtc allows:
4456         power of two from 64 to 8192 Hz.
4457
4458 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
4459
4460         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
4461
4462 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
4463
4464         * mini-ppc.c: better icache flush for smp.
4465
4466 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
4467
4468         * mini-amd64.c (emit_move_return_value): Fix memory leak.
4469
4470         * mini-x86.c (get_call_info): Add the get_call_info () code from the
4471         amd64 port, not yet used.
4472
4473 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
4474
4475         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
4476         a struct type.
4477
4478 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
4479
4480         * driver.c: Added --security option to activate the security manager.
4481         Right now this will allow code generation for declarative demands and
4482         is disabled when AOT is specified.
4483         * mini.c: Add code generation for declarative security demands.
4484         * mini.h: Add mono_use_security_manager as an extern gboolean.
4485
4486 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
4487
4488         * aot.c (mono_compile_assembly): Speed up compilation a bit by
4489         emitting more dense assembly code.
4490
4491         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
4492         exception throwing stuff.
4493
4494 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
4495
4496         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
4497         dead code.
4498
4499         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
4500         left in by mistake.
4501
4502         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
4503         fixed.
4504
4505         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
4506
4507         * tramp-*.c: Only patch vtable slots if the object is in the current
4508         domain. Fixes appdomain-unload.exe.
4509
4510         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
4511         
4512         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
4513         x86 branch.
4514
4515 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
4516
4517         * mini.c (reverse_branch_op): New helper function.
4518
4519         * mini.c (optimize_branches): Run the new optimization only on 
4520         platforms which support it. Also reverse all kinds of branches.
4521
4522         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
4523
4524         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
4525         a throw statement.
4526
4527         * mini.c (optimize_branches): Reverse not-equals branches if the false
4528         bblock is a throw. This happens a lot of time with argument checking in
4529         corlib.
4530
4531         * mini.c (mono_codegen): Add support for placing basic blocks after
4532         the function epilogue.
4533
4534         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
4535         function epilogue.
4536         
4537 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
4538
4539         * mini.c (setup_stat_profiler): Only set this up if the platform
4540         supports ITIMER_PROF.
4541
4542 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
4543
4544         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
4545         previous patch.
4546
4547         * inssel.brg: Fix a warning.
4548
4549 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
4550
4551         * mini.c: added support for statistical profiler 
4552         (run with: --profile=default:stat).
4553
4554 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
4555
4556         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
4557
4558         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
4559
4560         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
4561         related to global registers from the amd64 port.
4562
4563 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
4564
4565         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
4566
4567         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
4568         with global registers.
4569         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
4570
4571         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
4572
4573 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
4574
4575         * debug-mini.c (encode_value): Fix off-by-one.
4576
4577         * aot.c (encode_value): Likewise.
4578
4579         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
4580
4581 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
4582
4583         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
4584         AOT.
4585
4586         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
4587         
4588         * aot.c (emit_method_info): Increase size of temp buffer.
4589
4590         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
4591         the AOT case.
4592
4593 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
4594
4595         * aot.c (emit_method_info): Fix build.
4596         
4597         * aot.c: Further rework of the AOT file format to reduce the size of
4598         the method info data.
4599
4600         * mini.h: Bump AOT file format version.
4601
4602 2004-12-27  Martin Baulig  <martin@ximian.com>
4603
4604         * mini.c (mini_get_method): New static method; call
4605         mono_get_method_full() and mono_get_inflated_method().
4606         (mono_method_to_ir): Use mini_get_method() instead of
4607         mono_get_method_full(). 
4608
4609 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
4610
4611         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
4612
4613 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
4614
4615         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
4616
4617         * inssel-amd64.brg: Add some optimization rules.
4618
4619 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
4620
4621         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
4622         standard not GC'd stuff is fine.
4623
4624 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
4625
4626         * aot.c: Rework the AOT file format to get rid of most of the global
4627         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
4628
4629         * mini.h: Bump AOT file format version.
4630         
4631 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
4632
4633         * mini.h: Bump AOT file format version.
4634
4635         * aot.c (mono_aot_is_got_entry): New function to determine if an 
4636         address is inside a GOT.
4637
4638         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
4639
4640         * cpu-pentium.md: Increase the maximum size of some instructions which
4641         might involve a got access.
4642         
4643         * mini.c (get_method_from_ip): Another debug helper function.
4644
4645         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
4646         when got var accesses are created during the decompose phase.
4647
4648         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
4649
4650         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
4651         argument mini_compile_method and to MonoCompile, and use this to
4652         determine whenever a given method is compiled for AOT. This allows the
4653         other methods compiled during AOT compilation to be free of AOT stuff,
4654         so the backends does not need to add special support for them by
4655         creating a fake GOT etc.
4656
4657         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
4658         longer needed.
4659
4660 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
4661
4662         * mini.c (mono_method_to_ir): It turns out that some of the
4663         x-appdomain wrappers are lax with types, so just ignore this for
4664         all wrappers.
4665
4666         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
4667         at the vtable->klass. If it is non-shared code we can just use the
4668         vtable.
4669
4670 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
4671
4672         * mini-ppc.c: access MonoDomain from tls, too.
4673
4674 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
4675
4676         * declsec.c: Removed unused variable (and related warning ;-)
4677
4678 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
4679
4680         * iltests.il: New test for LDELEMA on an array of ref types.
4681
4682         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
4683         all ldelema's on reftypes.
4684         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
4685         it was the wrong place to put it.
4686
4687         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
4688         register to pop to make this cleaner, at the request of Paolo.
4689
4690 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
4691
4692         * mini-ops.h (OP_GETHASHCODE): New op.
4693
4694         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
4695
4696         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
4697         operation.
4698
4699         For a microbenchmark, this reduces the cost of Hashtable.get_Item
4700         by 25%.
4701         
4702         * mini-x86.c (mono_arch_output_basic_block): Rather than
4703
4704         add ebp, 4
4705
4706         Emit
4707
4708         pop edx
4709
4710         The first is 3 bytes while the second is 1. This saves 36 kb on
4711         mscorlib, quite a big saving. When bootstraping mcs, I was able to
4712         see a small boost because of icache locality.
4713
4714         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
4715
4716 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
4717
4718         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
4719         started code sharing with the generic code.
4720
4721 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
4722
4723         * mini-ppc.c, cpu-g4.md: added code for direct access to
4724         tls data slots.
4725
4726 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
4727
4728         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
4729          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
4730         to OP_TLS_GET.
4731
4732 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
4733
4734         * declsec.c|h: Added functions to cache the declarative stack modifiers
4735         in MonoJitInfo and to create a security frame from a MonoJitInfo 
4736         structure.
4737         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
4738         created. Register internal calls for System.Security.SecurityFrame::
4739         _GetSecurityFrame and _GetSecurityStack.
4740         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
4741         the definitions for the new stack walk/callback mechanism.
4742         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
4743         first security frame for LinkDemands and InheritanceDemands) and
4744         GetSecurityStack for Demands. Both use the new mono_walk_stack code
4745         from lupus.
4746         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
4747         walk initialization (lupus).
4748
4749 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
4750
4751         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
4752         idiom.
4753         (handle_loaded_temps): Do not create a temporary variable for
4754         things that we know are temps. They will never be modified.
4755         (mono_spill_call): Set MONO_INST_IS_TEMP
4756         (mono_emulate_opcode): ditto
4757         (emit_tree): ditto
4758         (mono_method_to_ir.CEE_DUP): ditto
4759
4760 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
4761
4762         * mini.c (type_to_eval_stack_type): Make this handle the void type
4763         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
4764         (emit_tree): use ip_in_bb to special case some common idioms
4765         Update all callers to pass in the IP.
4766         (mono_method_to_ir): Make CEE_CALL* do the above as well.
4767
4768         This gives us a nice 2% speedup in mcs bootstrap.
4769
4770         * mini-x86.c (peephole_pass): Peephole pass to make
4771         mov  [foo], eax
4772         push [foo]
4773
4774         into
4775
4776         mov [foo], eax
4777         push eax
4778
4779         * mini.c (ip_in_bb): new method.
4780         (mono_method_to_ir): use this method rather than doing the hash
4781         lookup ourselves.
4782
4783         * linear-scan.c (mono_linear_scan): When expiring actives, you
4784         don't need to keep around variables that expire on this
4785         instruction. This makes it so that:
4786              a = b + 1
4787         will turn into:
4788              store (ebx add (ebx, 1))
4789         which will become
4790              add ebx, 1
4791
4792 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
4793
4794         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
4795         combination to avoid doing two copies. Fix up problems with previous
4796         patch.
4797
4798         * mini.c: Fix 64 bit warnings.
4799
4800         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
4801
4802 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
4803
4804         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
4805         changes from the x86 code.
4806
4807         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
4808
4809 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
4810
4811         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
4812         throwing code to reduce its size, unify the AOT and non-aot code and 
4813         get rid of relocations in the AOT case.
4814
4815         * mini-x86.h mini.c exceptions-x86.c 
4816         (mono_arch_get_throw_corlib_exception): New arch specific function to 
4817         raise corlib exceptions which doesn't require relocations in the 
4818         caller.
4819
4820         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
4821
4822 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
4823
4824         * mini.c (mono_emit_method_call): Only allocate the got var when it is
4825         needed.
4826
4827         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
4828         in the AOT case.
4829
4830 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
4831
4832         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
4833         with add function when used from Inc/dec atomic 
4834         functions. Re-enabled optimization on x86.
4835         * mini-ops.h: renamed atomic_add functions to
4836         allow _add to match the Interlocked::Add and
4837         _add_next to match Interlocked::Inc/Dec.
4838
4839 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
4840
4841         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
4842         linking of BBs to the end BB, and enabled SSAPRE also with
4843         consprop and copyprop (which was prevented by that bug).
4844
4845 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
4846
4847         * mini-x86.c: disabling the Interlocked optimizing code. 
4848
4849 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
4850
4851         * aot.c (load_aot_module): Move reading of got_addr after the AOT
4852         file version check.
4853         
4854 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
4855
4856         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
4857         interlocked optimization due lack of support on x86, rewrote 
4858         exchange to take into account that base may be in eax.
4859         
4860         xsp works again; activated Interlocked optimizing code.
4861         
4862 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
4863
4864         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
4865
4866 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
4867
4868         * mini-ops.h: Add new opcodes.
4869
4870         * mini.h: Add new patch types. Add got_var to MonoCompile.
4871
4872         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
4873         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
4874         make it work with all kinds of patchable code.
4875
4876         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
4877         address of the GOT, and referencing entries in the GOT.
4878
4879         * mini.c: Add code to load the GOT address if needed by an opcode.
4880
4881         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
4882         independent AOT code on the x86 using an elf-style Global Offset Table.
4883
4884 2004-12-14  Raja R Harinath  <rharinath@novell.com>
4885
4886         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
4887
4888 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4889
4890         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
4891         when running xsp.
4892
4893 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
4894
4895         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
4896         of Interlocked:Increment/Decrement/Add as inline ops.
4897         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
4898
4899 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
4900
4901         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
4902         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
4903
4904 2004-12-12  Duncan Mak  <duncan@ximian.com>
4905
4906         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
4907         again. `patch_info->table_size' is no longer valid after Zoltan's
4908         commit #37636.
4909
4910 2004-12-12  Martin Baulig  <martin@ximian.com>
4911
4912         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
4913         if we are the "real" method, ie. not an inlined method inside it.
4914
4915 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
4916
4917         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
4918         before we look in the special fields table. This fixes
4919         ../tests/thread-static-init.cs.
4920
4921 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4922
4923         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
4924         for Array get_Rank and get_Length. Fixes bug #70465.
4925
4926 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
4927
4928         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
4929         separate structure to reduce the size of MonoJumpInfo.
4930
4931 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
4932
4933         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
4934
4935 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
4936
4937         * mini.c (mini_get_inst_for_method): Changed to allow ports
4938         to return a MonoInst instead of opcode 
4939         (renamed mini_get_opcode_for_method to better reflect the new functionality)
4940         
4941         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
4942         Allow ports to return a created MonoInst instead of op-code, will enable
4943         new optimizations.
4944         (renamed mini_get_opcode_for_method to better reflected the functionality)
4945
4946 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
4947
4948         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
4949
4950 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
4951
4952         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
4953         Fixes #69985.
4954
4955 2004-12-08  Martin Baulig  <martin@ximian.com>
4956
4957         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
4958         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
4959
4960 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
4961
4962         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
4963         correctly.
4964
4965         * exceptions.cs: Disable some tests which depend on properties of x86 fp
4966         arithmetic.
4967
4968 2004-12-08  Raja R Harinath  <rharinath@novell.com>
4969
4970         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
4971
4972 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
4973
4974         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
4975         bug introduced by the previous patch.
4976
4977 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
4978
4979         * mini-ppc.c, objectc.cs: handle large structs passed by value
4980         (fixes bug #69972).
4981
4982 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
4983
4984         * mini-ppc.c: OP_ARGLIST implementation from
4985         Geoff Norton  <gnorton@customerdna.com>.
4986
4987 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
4988
4989         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
4990         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
4991
4992 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
4993
4994         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
4995
4996 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
4997
4998         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
4999         support.
5000
5001 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
5002
5003         * mini-sparc.c: Zero out localled-ed memory.
5004
5005         * iltests.il: Add tests for zeroing out localloc-ed memory.
5006
5007 2004-12-04  Martin Baulig  <martin@ximian.com>
5008
5009         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
5010         mono_method_get_signature_full().       
5011
5012 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
5013
5014         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
5015         and some utility functions (always for SSAPRE), integrated SSAPRE.
5016         * mini.h: Likewise.
5017         * driver.c: Added ssapre option.
5018         * ssa.c: Small fix on OP_ARG handling.
5019         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
5020         * Makefile.am: Likewise.
5021
5022 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
5023
5024         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
5025         now in the xp code.
5026
5027         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
5028         icall.
5029
5030 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
5031
5032         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
5033         
5034         * cpu-s390.md : Increase instruction length of oparglist.
5035
5036         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
5037
5038 2004-11-30  Martin Baulig  <martin@ximian.com>
5039
5040         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
5041         virtual generic methods.  We call a special helper_compile_generic_method()
5042         icall to retrieve the method from the vtable, inflate and compile
5043         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
5044
5045         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
5046
5047 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
5048
5049         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
5050
5051 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
5052
5053         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
5054         Fixes #69929.
5055
5056 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
5057
5058         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
5059         platforms with PIC aot.
5060
5061 2004-11-28  Martin Baulig  <martin@ximian.com>
5062
5063         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
5064         Fixes gen-112.cs.
5065
5066 2004-11-28  Martin Baulig  <martin@ximian.com>
5067
5068         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
5069         the result of mono_type_get_underlying_type() to check whether
5070         we're byref.
5071
5072 2004-11-26  Martin Baulig  <martin@ximian.com>
5073
5074         * mini.c
5075         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
5076         in the g_assert().
5077
5078 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
5079
5080         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
5081         the same way as the other arguments so they won't get clobbered.
5082
5083         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
5084         calls through R11 since it is clobbered by the trampoline code.
5085
5086 2004-11-26  Raja R Harinath  <rharinath@novell.com>
5087
5088         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
5089         pick up in-tree mscorlib.dll.
5090
5091 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
5092
5093         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
5094
5095         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
5096         runtime data/code are now stored in a table similar to the GOT in ELF. 
5097         This allows the code itself to be position independent.
5098
5099         * aot.c: Fix loading of referenced assemblies after the lazy assembly
5100         loading changes.
5101
5102         * aot.c: Attach ELF type (object/function) directives to all global
5103         symbols.
5104
5105         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
5106
5107         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
5108
5109         * mini-amd64.h: Turn on PIC AOT code.
5110
5111         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
5112         returning the offset within an OP_AOTCONST instruction where the GOT
5113         offset needs to be added.
5114
5115         * mini.h: Bump AOT file format version.
5116
5117 2004-11-25  Martin Baulig  <martin@ximian.com>
5118
5119         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
5120         uninflated generic methods.
5121
5122 2004-11-25  Martin Baulig  <martin@ximian.com>
5123
5124         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
5125
5126 2004-11-24  Martin Baulig  <martin@ximian.com>
5127
5128         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
5129         original klass (this only applies for generic instances).
5130
5131 2004-11-24  Martin Baulig  <martin@ximian.com>
5132
5133         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
5134         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
5135         that array).
5136
5137 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
5138
5139         * mini.c (mono_method_to_ir): Disable inlining for methods containing
5140         localloc. Fixes #69678.
5141
5142         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
5143         
5144 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
5145
5146         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
5147         used SSE registers on pinvoke calls. Fixes #69774.
5148
5149 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
5150
5151         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
5152         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
5153
5154 2004-11-23  Raja R Harinath  <rharinath@novell.com>
5155
5156         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
5157         Refer directly to the mcs/ tree.
5158
5159 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
5160
5161         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
5162         Check if a trampoline for a synchronized method is required. 
5163
5164 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
5165
5166         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
5167         with localloc if needed. Throe arithmetric exception in
5168         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
5169         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
5170
5171 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
5172
5173         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
5174         types before switching on type.  Fixes #69622.
5175
5176 2004-11-19  Raja R Harinath  <rharinath@novell.com>
5177
5178         * Makefile.am (check-local): New.  Integrate into 'make check'.
5179         (MCS,RUNTIME): Define using in-tree mono and mcs.
5180         (ILASM): New.
5181         (%.exe): Use $(ILASM).
5182
5183 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
5184
5185         * mini-ppc.c: adjust initial prolog size (bug #69691).
5186
5187 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
5188
5189         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
5190         #69664.
5191
5192 2004-11-17  Raja R Harinath  <rharinath@novell.com>
5193
5194         * Makefile.am (clean-local): Rename from 'clean'.
5195
5196 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
5197
5198         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
5199         to mono_arch_is_int_overflow. 
5200         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
5201         SIGFPE events.
5202
5203 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
5204
5205         * declsec.c|h: New files to support declarative security attributes.
5206         Added function to check if a method has (applicable) security.
5207         * mini.c|h: Add check for declarative security attributes in
5208         mono_method_check_inlining.
5209         * Makefile.am: Added declsec.c and declsec.h to the build.
5210
5211 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
5212
5213         * mini.c, mini.h: update to keep dynamic code info per-domain.
5214
5215 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
5216
5217         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
5218         (mini_init): Get rid of it from here too.
5219
5220 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
5221
5222         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
5223         implemented OP_RETHROW (patch by Geoff Norton
5224         <gnorton@customerdna.com>).
5225
5226 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
5227
5228         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
5229         between appdomains.  Fixes appdomain-unload on PPC.
5230
5231 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
5232
5233         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
5234         mini-exceptions.c: handle the new wrapper types.
5235         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
5236         token value as a MonoClass* when compiling a wrapper.
5237         mono_jit_create_remoting_trampoline now takes an additional
5238         MonoRemotingTarget parameter.
5239         
5240 2004-11-10  Martin Baulig  <martin@localhost>
5241
5242         * mini.c (mono_method_to_ir): Use `generic_container->context'
5243         rather than creating a new one.
5244
5245 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
5246
5247         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
5248
5249         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
5250
5251 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
5252
5253         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
5254         the experimental aot cache stuff.
5255
5256 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
5257
5258         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
5259         mini-exceptions.c: update to exception clause structure changes.
5260
5261 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
5262
5263         * exceptions-x86.c (throw_exception): Fix warnings.
5264
5265         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
5266         for OP_RETHROW.
5267
5268 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
5269
5270         * exceptions-sparc.c (get_throw_exception): Really fix this.
5271
5272 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
5273
5274         * tramp-*.c: we no longer support icalls without wrappers, so
5275         a bit of code can be removed here
5276
5277 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
5278
5279         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
5280         patch.
5281
5282         * cpu-sparc.md: Add op_rethrow.
5283
5284         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
5285
5286         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
5287
5288         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
5289         * mini-ops.h: Add OP_RETHROW.
5290
5291         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
5292
5293         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
5294
5295 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
5296         
5297         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
5298         Makes the output much easier to read
5299
5300 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
5301
5302         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
5303         prevents another huge leak when compiling with ssa. Secondly, the
5304         performance of doing this rather than freeing the lists is much
5305         better. GList does a lock every time you allocate a list link,
5306         so that it can use a memory pool. So, it is better to just use
5307         a memory pool of our own.
5308         
5309         * ssa.c, linear-scan.c: replace g_list_remove_link with
5310         g_list_delete.  The remove one does not free the GList, so we were
5311         leaking memory. On -O=all --compile-all with corlib, this cut down
5312         3 MB of allocations.
5313
5314 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
5315
5316         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
5317
5318         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
5319
5320         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
5321         into a new function mono_create_jit_trampoline ().
5322
5323 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
5324
5325         * trace.c (get_spec): Allow tracing of classes without a namespace.
5326
5327 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
5328
5329         * mini.c: Fix pointer overwrite in mini_method_compile.
5330
5331 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
5332
5333         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
5334         The darwin ABI needs some special handling for 1 and 2 byte structs
5335         Lets use lbz/lhz instead of lwz everywhere.
5336         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
5337         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
5338         Use stb/sth for the former, and put the latter always on stack instead of in
5339         argument registers.
5340
5341 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
5342
5343         * trace.c (is_filenamechar): Add '_'.
5344
5345 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
5346
5347         * mini-s390.c: Fix prolog length to allow for large trace requirements.
5348
5349         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
5350
5351 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
5352
5353         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
5354         depends on libmonogc. Fixes #68805.
5355
5356 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
5357
5358         * mini.c (mono_jit_free_method): Provide extra information for
5359         this error.  Currently this leaks, but will be turned into a
5360         developer option in the future.
5361
5362 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
5363
5364         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
5365
5366 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
5367
5368         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
5369         boundary. Fixes reading of PATCH_INFO_R4 and R8.
5370         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
5371
5372 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
5373
5374         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
5375         trampolines for AOT code.
5376
5377 2004-10-22    <vargaz@freemail.hu>
5378
5379         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
5380         constructed types. Fixes #68136.
5381
5382 2004-10-21  Martin Baulig  <martin@ximian.com>
5383
5384         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
5385         if it returns true, unwind the stack to the call instruction.
5386
5387 2004-10-21    <vargaz@freemail.hu>
5388
5389         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
5390
5391         * mini.h: Bump AOT version number.
5392
5393         * objects.cs: Add another test for unbox trampolines.
5394
5395         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
5396         valuetype methods.
5397
5398 2004-10-20    <vargaz@freemail.hu>
5399
5400         * driver.c: Add SHARED to the set of optimizations tested.
5401
5402         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
5403
5404         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
5405         used by CEE_NEWARR.
5406
5407         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
5408
5409 2004-10-20  Martin Baulig  <martin@ximian.com>
5410
5411         * mini-exceptions.c (mono_handle_exception): Call
5412         mono_debugger_handle_exception() to tell the debugger about
5413         catch/finally clauses.
5414
5415 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
5416
5417         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
5418
5419         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
5420         #68447.
5421
5422 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
5423
5424         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
5425         methods as their native size, fixed bug #57543, #57545.
5426         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
5427         This saves a temporary register and mullw call down into 1 (minor perf
5428         increase for cases like sum = sum * 5;  This use to translate into:
5429             li r11,5
5430             mullw r28,r28,r11
5431         It now translates to
5432             mulli r28,r28,5
5433
5434 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
5435
5436         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
5437         #68388.
5438
5439 2004-10-11  Martin Baulig  <martin@ximian.com>
5440
5441         * mini.c (mono_method_to_ir): If we're a generic method, get the
5442         MonoGenericContainer from our MonoMethodNormal and create a
5443         MonoGenericContext from it.
5444
5445 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
5446
5447         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
5448
5449         * basic-long.cs: Add test for checked i8->i2 cast.
5450
5451 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
5452
5453         * inssel-ppc.brg: added a couple of speedup rules.
5454
5455 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
5456
5457         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
5458         to speed up rebuilds.
5459
5460 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
5461
5462         * mini-s390.c: Minor fix to OP_OR_IMM.
5463
5464 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
5465
5466         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
5467         better. Fixes appdomain-unload.exe on sparc.
5468
5469 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
5470
5471         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
5472         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
5473         see bug 67324.
5474
5475 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
5476
5477         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
5478
5479 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
5480
5481         * mini.c: Always generate a field read/write wrapper for members
5482         of the class MarshalByRefObject since the actual instance could
5483         be a CBO.
5484
5485 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
5486
5487         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
5488
5489 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
5490
5491         * driver.c mini.h trace.c: Move the setting of the main assembly into
5492         a separate function called mono_trace_set_assembly () and call it after
5493         actually loading the main assembly. Fixes #66872.
5494
5495 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
5496
5497         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
5498         using the code manager.
5499
5500 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
5501
5502         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
5503
5504 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
5505
5506         * cpu-amd64.md: Fix bug in previous patch.
5507         
5508         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
5509         #66650.
5510
5511 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
5512
5513         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
5514         mini-exceptions.c: updates for changed stack walk interface.
5515
5516 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
5517
5518         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
5519
5520 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
5521
5522         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
5523
5524 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
5525
5526         * driver.c (mini_regression_list): Do not call mono_assembly_close 
5527         since assemblies can't be unloaded.
5528         
5529 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
5530
5531         * cpu-amd64.md: Fix more instruction lengths.
5532
5533         * cpu-amd64.md: Fix lengths of some instructions.
5534
5535 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
5536
5537         * inssel.brg: Make the array ldelema check aot friendly.
5538
5539 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
5540
5541         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
5542
5543         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
5544
5545 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
5546
5547         * mini-x86.c: Fix build.
5548
5549         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
5550         mono_type_get_underlying_type () helper function to simplify code.
5551         
5552 2004-09-09  Martin Baulig  <martin@ximian.com>
5553
5554         * mini-amd64.c: Don't access `type->data.klass' directly, call
5555         mono_class_from_mono_type() instead since the type may be a
5556         generic instance.
5557
5558 2004-09-09  Martin Baulig  <martin@ximian.com>
5559
5560         * mini-amd64.c (get_call_info): Fix support for generic instances.
5561         (add_valuetype): Use mono_class_from_mono_type() to get the class
5562         since we can be a generic instance.
5563
5564 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
5565
5566         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
5567
5568 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
5569
5570         * liveness.c: reset spill costs on each scan: bug 62107
5571
5572 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
5573
5574         * exceptions-sparc.c (mono_arch_find_jit_info): remove
5575         unnecessary line that doesn't compile
5576
5577 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
5578
5579         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
5580         trampolines, make them call an error function so people can fix their
5581         code.
5582
5583 2004-09-06  Martin Baulig  <martin@ximian.com>
5584
5585         * mini.c (mono_method_to_ir): When initializing locals, handle a
5586         generic instances like a valuetype if it's a valuetype and like a
5587         class if it's a class.
5588
5589 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
5590
5591         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
5592         stack. Fixes #64674.
5593
5594         * exceptions.cs: Add test for unwinding of call arguments.
5595
5596 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
5597
5598         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
5599         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
5600         set the carry/borrow flag). The sparc and s390 implementations
5601         can now use optimized versions (and simplify the code). ppc bugfixes.
5602
5603 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
5604
5605         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
5606
5607 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
5608
5609         * inssel-amd64.brg: Remove leftover 32 bit rule.
5610
5611         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
5612
5613 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
5614
5615         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
5616         mono_arch_find_jit_info functions into a new function. Fix a memory
5617         leak.
5618
5619         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
5620         refactored code.
5621         
5622 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
5623
5624         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
5625         as well.
5626         
5627         * exceptions.cs: Add array size tests.
5628
5629         * mini.c: Allocate a separate icall wrapper for each arity of 
5630         mono_array_new_va. Fixes #59509.
5631
5632         * exceptions.cs: Add testcase for 64578.
5633
5634         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
5635
5636         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
5637         
5638 2004-09-02  Martin Baulig  <martin@ximian.com>
5639
5640         * mini.c (mono_method_to_ir): When initializing the locals, call
5641         handle_initobj() on the generic instance itself, not its
5642         underlying type.
5643
5644 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
5645
5646         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
5647         MonoJitInfo for dynamic methods.
5648
5649         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
5650
5651         * mini.c: Add support for freeing JIT data for dynamic methods.
5652         
5653 2004-09-01  Martin Baulig  <martin@ximian.com>
5654
5655         * mini-x86.c (is_regsize_var): Added support for generic
5656         instances.
5657         (mono_arch_emit_prolog): Make this compile again, use
5658         `x86_push_imm_template (code)'.
5659
5660 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
5661
5662         * mini-x86.c: make all push_imm instructions that get
5663         patched always emit the long form
5664
5665 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
5666
5667         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
5668         in a per-domain hash.
5669
5670         * mini-amd64.c (merge_argument_class_from_type): Handle generic
5671         types.
5672
5673 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
5674
5675         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
5676         work.
5677         
5678         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
5679         work.
5680
5681         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
5682         Beginnings of SSE2 support.
5683
5684         * exceptions.cs: Add more tests for checked int<->uint casts.
5685
5686 2004-08-28  Martin Baulig  <martin@ximian.com>
5687
5688         * mini-x86.c (mono_arch_instrument_epilog): Added support for
5689         generic instances.
5690
5691         * mini.c
5692         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
5693         Handle generic instances recursively.
5694
5695 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
5696
5697         * iltests.il: test for conv.u8 on a constant
5698
5699 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
5700
5701         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
5702         LCONV_x4 (shrun_32 (membase)).
5703
5704 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
5705
5706         * inssel-x86.brg: c&p rules for push/setret of long
5707
5708 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
5709
5710         * inssel-x86.brg: c&p rules for compare (base, regvar) and
5711         compare (regvar, base)
5712
5713         * inssel-x86.brg: more burg love
5714
5715         * inssel.brg: more cleanup
5716
5717         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
5718
5719 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
5720
5721         * basic-long.cs, basic-calls.cs: new tests for optimization.
5722
5723 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
5724
5725         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
5726         patch.
5727
5728 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
5729
5730         * mini-amd64.c (read_tls_offset_from_method): Add another case.
5731         
5732 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
5733
5734         * inssel.brg (mini_emit_memcpy): use 
5735         NO_UNALIGNED_ACCESS to disable memcpy optimization
5736
5737 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
5738
5739         * mini-amd64.c: Handle generic types in various places.
5740
5741         * mini.c (mono_method_to_ir): Handle generic types in init locals.
5742
5743 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
5744
5745         * mini.c (handle_box): Fix warning.
5746
5747         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
5748
5749         * mini-amd64.h: Enable the emit_state optimization.
5750
5751         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
5752
5753         * mini-amd64.c: Add some new 64 bit peephole opts.
5754
5755         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
5756
5757         * cpu-amd64.md: sreg1 of div instructions must be %rax.
5758
5759         * mini-amd64.c: Register allocator fixes.
5760
5761         * mini.c: Add an optimization to emit_state to avoid allocation of new
5762         registers on some platforms.
5763
5764 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
5765
5766         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
5767
5768         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
5769         allocation. Fixes #63085.
5770
5771         * basic-long.cs: Add new regression test.
5772
5773         * mini-amd64.c: Register allocator improvements.
5774
5775 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
5776
5777         * mini-amd64.c (read_tls_offset_from_method): Add another code
5778         sequence.
5779
5780         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
5781         instruction sequence for nullifying class init trampolines.
5782
5783         * objects.cs: Add new regalloc test.
5784
5785         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
5786
5787 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
5788
5789         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
5790         
5791         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
5792         arguments.
5793
5794         * driver.c: Fix profiling after TLS changes.
5795         
5796         * driver.c (mono_main): Set mono_stats.enabled if needed.
5797
5798         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
5799         CEE_BOX.
5800
5801 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
5802
5803         * mini-x86.c: use a 1 op rather than a 2 op tls access
5804         instruction -> faster.
5805
5806 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
5807
5808         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
5809         x86 backend.
5810
5811 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
5812
5813         * exceptions-sparc.c (throw_exception): fix typo
5814
5815 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
5816
5817         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
5818         set tree->dreg correctly with tls. Allow any
5819         register to be used.
5820
5821         * mini-x86.c (read_tls_offset_from_method): add new code
5822         generation pattern seen with GCC.
5823
5824
5825 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
5826
5827         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
5828         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
5829         exceptions-sparc.c: fix some performance issues in exception
5830         handling and setting of the stack trace for exceptions that were
5831         already thrown.
5832
5833 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
5834
5835         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
5836         x86 backend.
5837         
5838         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
5839         registers.
5840
5841 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
5842
5843         This patch inlines tls access, when possible.
5844         
5845         * mini.h: new arch functions for TLS intrinsics.
5846         All platforms updated with a stub.
5847
5848         * mini.c: use the new intrinsics
5849
5850         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
5851         arch specific intrinsic for tls variables
5852
5853 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
5854
5855         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
5856         under windows.
5857
5858 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
5859
5860         * mini.c: thread local allocation
5861
5862 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
5863
5864         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
5865
5866         * Makefile.am: Link against the static version of libmonogc.
5867         
5868         * Makefile.am: Link the static versions of the convenience libraries
5869         into the mono executable.
5870
5871         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
5872
5873 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
5874
5875         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
5876         on integer overflow.
5877
5878         * mini-amd64.c: Reorganize function call code.
5879
5880         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
5881
5882 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
5883
5884         * inssel-x86.brg: use xor eax,eax.
5885         
5886         * basic.cs: new tests
5887
5888 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
5889
5890         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
5891         in exception throwing code.
5892         
5893 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
5894
5895         * inssel-x86.brg: use xor esi,esi.
5896
5897 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
5898
5899         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
5900         can trace methods compiled during mini_init () too.
5901
5902         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
5903         CEE_CONV_U4.
5904
5905 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
5906
5907         * Makefile.am: static link on x86 (r=zoltan)
5908
5909 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
5910
5911         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
5912         code since it causes some programs to fail.
5913
5914 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
5915
5916         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
5917
5918 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
5919
5920         * mini.c: ovfops_op_map - add STACK_OBJ case for
5921         CONV_I 
5922         * basic.cs: add test_0_pin_string as test
5923         case for above.
5924
5925 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
5926
5927         * Makefile.am: build C# if srcdir != builddir
5928
5929 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
5930
5931         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
5932         fall-through blocks.
5933
5934 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
5935
5936         * driver.c: enable loop by default again and include abcrem in -O=all.
5937
5938 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
5939
5940         * iltests.il: Add some localloc tests.
5941
5942         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
5943
5944         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
5945         Fixes #62574.
5946
5947         * inssel-amd64.brg: Add some optimizations.
5948
5949         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
5950         for gcc-3.4.
5951
5952         * Makefile.am: Statically link mono against libmono on AMD64.
5953         
5954         * mini-amd64.c inssel-amd64.brg: Optimizations.
5955
5956 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
5957
5958         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
5959
5960         * tramp-amd64.c: Patch calling code in trampolines.
5961
5962 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
5963
5964         * mini-amd64.c: pinvoke struct passing fixes.
5965
5966 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
5967
5968         * mini-sparc.c: redo change, make mono_arch_cpu_init call
5969         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
5970
5971 2004-08-05  Duncan Mak  <duncan@ximian.com>
5972
5973         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
5974         CEE_LDELEM_ANY.
5975
5976 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
5977
5978         * mini-amd64.c (emit_move_return_value): Move return value for normal
5979         calls too.
5980
5981 2004-08-05  Martin Baulig  <martin@ximian.com>
5982
5983         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
5984         `type->type'; just modify `type' itself when dealing with enums
5985         and generic instances.
5986         (check_call_signature): Make `simple_type' a `MonoType *'.
5987
5988 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
5989
5990         * mini.c: Use OP_PADD to add offsets to addresses.
5991
5992         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
5993
5994 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
5995
5996         * mini-sparc.c (mono_arch_emit_epilog): fix check
5997         for folding last op into restore instruction
5998
5999 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
6000
6001         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
6002         helper methods using the code manager.
6003         
6004         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
6005
6006         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
6007
6008 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6009         
6010         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
6011           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
6012
6013         * mini-s390.c: fix tail processing
6014
6015 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
6016
6017         * mini-ppc.c: mul.ovf.un exception name fix.
6018
6019 2004-08-03  Martin Baulig  <martin@ximian.com>
6020
6021         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
6022         instances; before jumping to `handle_enum', also modify `ptype'.
6023
6024 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
6025
6026         * cpu-sparc.md: fcall maximal length too small.
6027
6028 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
6029
6030         * mini-amd64.c mini.h: Add initial support for passing/returning 
6031         structures to/from pinvoked methods.
6032
6033 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
6034
6035         * mini-ppc.c: reg allocator fix.
6036
6037 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
6038
6039         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
6040
6041         * inssel.brg: Optimize memset on 64 bit machines.
6042
6043         * mini-amd64.c: Fix some vararg cases.
6044
6045 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6046
6047         * mini-s390.c: Corrected macro in emit_float_to_int
6048
6049         * s390-abi.cs: Tests to exercise the s390 ABI
6050
6051 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
6052
6053         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
6054         caller saved regs.
6055
6056         * basic.cs: Add a test for add.ovf.un.
6057
6058 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
6059
6060         * mini-sparc.c: add case for OP_IDIV_UN
6061
6062 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
6063
6064         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
6065         
6066         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
6067
6068 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
6069
6070         * basic.cs: regression tests.
6071
6072         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
6073         regressions.
6074
6075 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
6076
6077         * basic.cs: Add a new test.
6078
6079         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
6080         and AOT. Various fixes and optimizations.
6081
6082         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
6083
6084 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
6085
6086         * mini-ppc.c: make sure temp regs are not used for global reg
6087         allocation.
6088
6089 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
6090
6091         * cpu-sparc.md: conv_i8 fix for 64bits
6092
6093         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
6094
6095 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
6096         
6097         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
6098         add opcode for cmp BYTE PTR [eax], imm.
6099
6100         * inssel.brg: Make memcpy and memset takes bases.
6101
6102 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
6103
6104         * *-amd64.*: More AMD64 work.
6105         
6106 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
6107
6108         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
6109         add a compare-not-equal opcode.
6110         
6111 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
6112
6113         * mini.c: Use mono_init_from_assembly instead of mono_init.
6114         
6115 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
6116
6117         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
6118
6119         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
6120
6121         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
6122
6123         * inssel.brg: 64 bit fixes.
6124
6125         * mini.h (MonoCallInst): Add some AMD64 specific data.
6126
6127         * mini.h: Add some OP_P opcodes.
6128
6129 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
6130
6131         * basic.cs: tests for 61797 and 61740
6132
6133 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
6134
6135         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
6136         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
6137
6138 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
6139
6140         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
6141
6142         * *-amd64*.*: Ongoing AMD64 work.
6143
6144 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
6145
6146         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
6147
6148         * *-amd64*: Ongoing AMD64 work.
6149
6150         * mini-arch.h: Add AMD64 support.
6151
6152         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
6153
6154         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
6155
6156         * mini-ops.h: Add new opcodes.
6157
6158         * Makefile.am: Add AMD64 support.
6159
6160         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
6161         rules into the inssel-long*.brg files.
6162
6163         * *-amd64.*: Add beginnings of AMD64 backend.
6164
6165 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
6166
6167         * mini.c (print_dfn): commenting out the code that prints
6168         the cil. With -O=deadce, this makes -v -v crash.
6169         
6170         * cpu-pentium.md: make checkthis have a length of 2
6171
6172 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
6173
6174         * mini-sparc.h: fix implementations of __builtin
6175         functions for Sun compiler for V9.
6176
6177 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
6178
6179         * mini.c: use the new stelem.ref wrapper
6180         * exceptions.cs, arrays.cs: new stelem.ref tests
6181
6182 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
6183
6184         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
6185         new XSP should work with these changes).
6186
6187 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
6188         
6189         * inssel-{long32,x86,}.brg: trivial optimizations.
6190         
6191 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
6192
6193         * mini.c: load value when emitting box operation in
6194         constrained calls.
6195
6196 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
6197
6198         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
6199         is one byte shorter than cmp DWORD PTR [eax], 0.
6200
6201 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
6202
6203         * inssel-ppc.brg: arguments on the stack are always
6204         relative to the stack pointer (spotted by Neale Ferguson).
6205
6206 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6207
6208         * exceptions-x86.c: delay appending the method name to the trace until
6209         after mono_jit_info_table_find is called, as this gets the real
6210         MonoMethod.
6211
6212 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
6213
6214         * aot.c: register roots
6215
6216 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
6217
6218         * aot.c : I could just use PLATFORM_WIN32 flag.
6219
6220 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
6221
6222         * aot.c : Reverting the previous fix. This time it broke linux build.
6223
6224 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
6225
6226         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
6227
6228 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
6229
6230         * mini.c (handle_stack_args): Remove some more debugging code.
6231         
6232         * mini.c (handle_stack_args): Remove debug output left in by mistake.
6233
6234         * driver.c mini.h aot.c: Allow additional options to be specified with
6235         --aot and pass them to mono_compile_assembly.
6236
6237         * aot.c: Add experimental code to AOT compile all loaded assemblies
6238         on demand and save the code into a cache in the filesystem.
6239
6240         * aot.c: Add support for more wrapper methods.
6241         
6242         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
6243         58863.
6244
6245         * cpu-*.md: Remove removed opcodes.
6246
6247         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
6248         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
6249         related icalls to marshal.c.
6250
6251 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
6252
6253         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
6254
6255         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
6256
6257         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
6258
6259 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
6260         * liveness.c: If liveness is recomputated we need to reset the information
6261         for each variable. This way, if the liveness range has been narrowed
6262         by optimizations that happened after the last computation, we can return
6263         a smaller range.
6264         
6265         For example, if you have
6266         
6267         {
6268                 int i = 0;
6269                 
6270                 // Tons of code that does not affect i
6271                 
6272                 i = foo ();
6273                 ...
6274         }
6275         
6276         i = 0 is dead code and will be removed by SSA. However, when
6277         linear scan gets to the code, i will still appear to be live
6278         throughout the entire block. This prevents good register allocation.
6279
6280 2004-07-06  Martin Baulig  <martin@ximian.com>
6281
6282         * debug-mini.c (mono_debug_init_method): Allow
6283         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
6284         (mono_debug_add_icall_wrapper): New method.
6285
6286         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
6287
6288 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
6289
6290         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
6291         optimization.
6292
6293 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
6294
6295         * aot.c (mono_aot_load_method): Fix loading of debug info.
6296
6297 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
6298
6299         * aot.c: Add logging support.
6300
6301 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
6302
6303         * mini.h: Add prototype for mono_print_method_from_ip.
6304
6305         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
6306
6307         * inssel.brg: 64 bit fixes.
6308
6309         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
6310         inssel-long32.brg.
6311
6312         * Makefile.am: Add SPARC64 support.
6313
6314 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
6315
6316         * aot.c: Fix alignment problems on 32 bit platforms.
6317
6318 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
6319
6320         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
6321         SPARC64.
6322
6323         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
6324         problems.
6325
6326         * mini.h: Bump AOT file version. Some 64 bit fixes.
6327
6328 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
6329
6330         * inssel-sparc.brg: Add new rule to avoid register moves.
6331
6332         * inssel.brg: Add ldind_to_load_membase helper function.
6333
6334 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
6335
6336         * mini.c: OffsetToStringData intrinsic.
6337         
6338 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
6339
6340         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
6341
6342         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
6343         regression tests.
6344
6345         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
6346 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
6347
6348         * mini.c: reinstated mono_compile_get_interface_var()
6349         on x86, too, since the change breaks the Gtk# build there as well.
6350
6351 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
6352
6353         * driver.c: remove loop from the default optimizations: it seems to
6354         interact badly with some of the other options (see bug #60613).
6355
6356 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
6357
6358         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
6359         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
6360
6361 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
6362
6363         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
6364         vararg-using methods.
6365
6366 2004-06-21  Martin Baulig  <martin@ximian.com>
6367
6368         * mini/mini-exceptions.c
6369         (mono_handle_exception): Added `gpointer original_ip' argument.
6370         After calling mono_unhandled_exception(), call
6371         mono_debugger_unhandled_exception() and if that returns true,
6372         restore the context and return.
6373
6374 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
6375
6376         * mini-ppc.c: prefer the use of relative branches so
6377         they won't need to be patched in aot code (patch from Patrick Beard).
6378
6379 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
6380
6381         * aot.c: patch from Patrick Beard to make the output assembly
6382         more correct for the MacOSX assembler. Small tweak to
6383         generate sane images on Linux/PPC, too.
6384
6385 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
6386
6387         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
6388         case until bug #59509 is fixed (shows up in #60332).
6389
6390 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
6391
6392         * mini.c: make sure the needed wrappers are compiled, too, with
6393         precomp.
6394
6395 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
6396
6397         * driver.c: remove NPTL reference in --version output.
6398
6399 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
6400
6401         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
6402         generate valid assembly for the Mach-O assembler.
6403
6404 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
6405
6406         * driver.c: don't include abcrem in the all optimization specifier
6407         since it slows down jit compilation too much for now.
6408
6409 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
6410
6411         * mini.c: use BIGMUL only if both operands have the same signage.
6412         * iltests.il: Test for bug 60056. (errors related to signage in
6413         BIGMUL).
6414
6415         r=lupus.
6416
6417 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
6418
6419         * mini.c, aot.c: memory leak fixes.
6420
6421 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
6422
6423         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
6424
6425 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
6426
6427         * Makefile.am: remove the -static hack completely, it links in
6428         statically glib as well.
6429
6430 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
6431
6432         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
6433         * exceptions.cs: make it compile with new mcs/csc.
6434
6435 2004-06-03 Massimiliano Mantione <massi@ximian.com>
6436         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
6437         and added relevant test case.
6438
6439 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
6440
6441         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
6442         regressions in gtk-sharp.
6443
6444 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
6445
6446         * exceptions.cs: New regression tests.
6447
6448         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
6449
6450 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
6451
6452         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
6453
6454 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
6455
6456         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
6457
6458         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
6459
6460 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
6461
6462         * mini.c (mono_jit_runtime_invoke): Init class in this
6463         method instead of trusting mono_jit_compile_method to
6464         do the work (because wrappers can be in object class)
6465
6466 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
6467
6468         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
6469
6470         * basic-long.cs: New regression test.
6471
6472 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
6473
6474         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
6475         and div/rem checks.
6476
6477 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
6478
6479         * Makefile.am: fix miguel's change to build mono statically against
6480         libmono (track build dependencies).
6481
6482 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
6483
6484         * cfold.c: Some glib versions do not have G_MININT32.
6485
6486 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
6487
6488         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
6489         with precision of tan, atan, sin and cos, and implemented related
6490         regressions tests (fixes bug 54467, but one new problem appeared and
6491         is not fixed yet).
6492
6493 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
6494
6495         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
6496
6497         * exceptions.cs: Add test for constant folding && division by zero.
6498
6499         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
6500         since driver.c is in libmono too, so the optimization was useless.
6501
6502         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
6503         variable to driver.c so the compiler can emit more efficient code to
6504         access them.
6505
6506 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
6507
6508         * Makefile.am: don't distribute generated inssel.[ch] files.
6509
6510 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
6511
6512         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
6513         into the default appdomain. Fixes #58707.
6514
6515         * jit-icalls.c: Remove the broken approximation for truncl, doing
6516         no conversion is better.
6517
6518         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
6519         Fixes #58863.
6520
6521 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
6522
6523         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
6524         of the mcrxr instruction which is not available on some processors
6525         even if it's documented to be. Implement add and sub overflow correctly
6526         (still not complete for long unsigned). Speed up icalls a bit.
6527
6528 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
6529
6530         * mini.c (mono_jit_compile_method_with_opt): Make sure that
6531         we run .cctor in the current domain instead of target_domain.
6532         
6533         Fixes bug #58558, .cctor not being called in -O=shared.
6534
6535 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
6536
6537         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
6538
6539 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
6540
6541         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
6542         which can be done with an imm8, do it that way.
6543         (mono_arch_output_basic_block): ditto for a jmp
6544         (mono_arch_emit_prolog): Computate maximum offset of a label.
6545
6546 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
6547
6548         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
6549         now tries to allocate prefered physical reg's for virtual
6550         regs. This reduces the number of emited spills/loads with
6551         20-30% on our core assemblies.
6552
6553 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
6554
6555         * jit-icalls.c: truncl() is not needed and trunc() is
6556         the correct thing to do anyway (bug #58287).
6557
6558 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
6559
6560         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
6561         if available.
6562
6563 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
6564
6565         * driver.c: enable loop optimizations by default.
6566
6567 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
6568
6569         * mini-x86.c: fix calc of max loop size when aligning loops start.
6570
6571 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
6572
6573         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
6574         the stack.
6575
6576 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
6577
6578         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
6579         should set carry.
6580
6581         * basic-long.cs: Add tests for add/subtract of immediates with carry.
6582
6583         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
6584         
6585         * mini.c (inline_method): Allways inline some wrappers even if the cost
6586         is too large. Fixes #58785.
6587
6588         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
6589         
6590 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
6591
6592         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
6593         (crichton@gimp.org). Beginning of support for sparc/linux.
6594
6595         * mini-sparc.c: Optimize retrieval of LMF address.
6596
6597 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
6598
6599         * exceptions-ppc.c:  handle alloca in methods with clauses.
6600
6601 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
6602
6603         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
6604
6605 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
6606
6607         * mini.c: Delegate most of the abort signal work to 
6608           mono_thread_request_interruption, which also handles Stop and Suspend
6609           states.
6610
6611 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
6612
6613         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
6614         supports the save/restore lmf opcodes.
6615
6616 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
6617
6618         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
6619         by gcc-3.4 as well.
6620
6621         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
6622
6623 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
6624
6625         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
6626         methods which contain array accesses.
6627
6628         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
6629         boundaries. Fixes #58537.
6630
6631         * iltests.il: Add regression test for #58537.
6632
6633 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
6634
6635         * mini-x86.c (mono_arch_local_regalloc): Last part of
6636         fix for bug #58633 (releasing register to early).
6637
6638 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
6639
6640         * basic-long.cs: Add new regression test.
6641
6642 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
6643
6644         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
6645         register too early on the chain.
6646
6647 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
6648
6649         * mini.c (create_helper_signature): Use a helper function to reduce
6650         the code which needs to be written. Also set the calling convention of
6651         icalls on windows. Fixes #57840.
6652
6653 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
6654
6655         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
6656         exceptions-ppc.c: added helper function to get the instruction address
6657         from a signal handler context.
6658
6659 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
6660
6661         * helpers.c: use g_get_tmp_dir. Invokes happyness 
6662         from gonzalo.
6663
6664 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
6665
6666         * helpers.c: Add new env variable to pass args to objdump.
6667         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
6668
6669 2004-05-17  Radek Doulik  <rodo@ximian.com>
6670
6671         * Makefile.am (common_sources): added abcremoval.h so it get
6672         disted and daily mono packages on go-mono.com will build again
6673
6674 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
6675
6676         * abcremoval.c: Fixed coding style, added copyright header.
6677
6678         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
6679
6680         * mini.h: Added prototype for abc removal main function.
6681
6682         * build_relations_propagation_table.pl: Added copyright header.
6683
6684 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
6685
6686         * basic-long.cs: reg test for complex ceq_long bug.
6687
6688 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
6689
6690         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
6691         reg in long and clob case (bug #58343). Fixed/added comments.
6692
6693 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
6694
6695         * mini.c (mono_jit_runtime_invoke): Follow new convention
6696         of calling the invoke method with an function pointer.
6697
6698 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
6699
6700         * ChangeLog: Fix author of memory leak patch.
6701
6702 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
6703
6704         * Makefile.am: fix make dist as well...
6705
6706
6707 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
6708
6709         * cfold.c: Made so that conversions from pointer to int4 are no-ops
6710         on archs where pointers are 4 bytes long.
6711
6712         * Makefile.am: Added abcremoval.c source file.
6713
6714         * abcremoval.c: Added abcremoval.c.
6715
6716         * abcremoval.h: Added abcremoval.h.
6717
6718         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
6719
6720         * inssel.brg: Enabled bounds check removal.
6721
6722         * mini.c: Added support for abcrem optimization.
6723
6724         * mini.h: Added abcrem optimization label.
6725
6726         * driver.c: Added support for abcrem optimization.
6727
6728         * propagated_relations_table.def: Added propagated_relations_table.def.
6729
6730 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
6731
6732         * mini.c, cfold.c: fix style.
6733
6734 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
6735
6736         * mini.c: handle issue with the low-level implementation of
6737         some long opcodes (bug #54209).
6738
6739 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
6740
6741         * basic.cs: test for my new cmov stuff.
6742
6743 2004-05-13      Patrik Torstensson
6744
6745         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
6746         opt and added peephole documentation.
6747
6748 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
6749
6750         * tramp-ppc.c: rewrote the generic trampoline code.
6751
6752 2004-05-11      Patrik Torstensson
6753
6754         * mini-x86.c: optimize long shl/shr asm code (one less branch)
6755
6756 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
6757
6758         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
6759
6760         * mini.h mini.c dominators.c: Applied patch from Derek Woo
6761         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
6762
6763         * mini.c: Add new icalls for AsAny marshalling.
6764
6765 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
6766
6767         * tramp-ppc.c, mini-ppc.c: more cleanups.
6768
6769 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
6770
6771         * mini.c: no warnings.
6772
6773 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
6774
6775         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
6776
6777 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
6778
6779         * mini.c: In the thread abort signal handler, if the thread is in the
6780         process of being stoped, don't throw the Abort exception, just stop the
6781         thread.
6782
6783 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
6784
6785         * tramp-ppc.c: removed old code.
6786
6787 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
6788
6789         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
6790         do some simple speed optimizations on ppc.
6791
6792 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
6793
6794         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
6795         and large offsets in load/store.
6796
6797 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
6798
6799         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
6800         it causes regressions.
6801
6802 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
6803
6804         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
6805         support.
6806
6807 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
6808
6809         * jit-icalls.c: remove warnings.
6810         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
6811         speedups for unsafe code.
6812
6813 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
6814
6815         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
6816
6817 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
6818
6819         * basic-calls.cs: Add new regression test.
6820
6821         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
6822         more portable.
6823
6824         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
6825
6826         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
6827         is no longer used.
6828
6829 2004-05-06      Patrik Torstensson
6830
6831         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
6832         long reg allocation in any reg (not only eax:edx) and implemented 
6833         long shl/shr ops in asm instead of helpers.
6834
6835 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
6836
6837         * mini-sparc.h: Fix warnings.
6838
6839         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
6840         stack.
6841
6842         * mini-exceptions.c (mono_handle_exception): Call the filter in a
6843         separate statement for clarity.
6844
6845         * mini-sparc.c: Update status.
6846
6847 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
6848
6849         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
6850         here.
6851
6852 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
6853
6854         * inssel-ppc.brg: another small pre-release workaround:
6855         we don't do overflow detection for long_sub_un.
6856
6857 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
6858
6859         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
6860         (also works around a weird ppc bug: 57957).
6861
6862 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
6863
6864         * tramp-ppc.c: trampoline fixes.
6865
6866 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
6867
6868         * mini-ppc.c: fixed typos.
6869
6870 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
6871
6872         * mini-ppc.c, exceptions-ppc.c: more code saves registers
6873         at the top of the stack. Fixed typos. Use a frame registers
6874         for all the methods with exception clauses.
6875
6876 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
6877
6878         * exceptions-ppc.c: restore fp registers.
6879
6880 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
6881
6882         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
6883         order from the stack top (moved the stack room to save the
6884         return value for trace after the param area). Fixed corruption
6885         in restoring registers on unwind.
6886
6887 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
6888
6889         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
6890
6891 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
6892
6893         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
6894         and prolog/epilog for methods that use it. Allow
6895         enough param area room for varargs methods. Fix miguel's
6896         breakage in exception handling.
6897
6898 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
6899
6900         * Makefile.am: run genmdesc only on current arch.
6901
6902 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
6903
6904         * exceptions-x86.c:
6905         * mini-x86.h: fix the build on windows.
6906
6907 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
6908
6909         * 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.
6910
6911         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
6912
6913         * mini-exceptions.c: New file.
6914         
6915         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
6916         Move some parts of the x86 exception handling code to an 
6917         arch-independent file so it can be shared with other ports.
6918
6919 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
6920
6921         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
6922
6923 2004-04-26  David Waite  <mass@akuma.org>
6924
6925         * driver.c: remove comma from end of enumeration declaration
6926
6927 2004-04-26  Jackson Harper  <jackson@ximian.com>
6928
6929         * driver.c: parse config file before loading first assembly. This
6930         allows the user gac to be enabled/disabled. 
6931         
6932 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
6933
6934         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
6935         simpler mechanism: we do not care what is encoded initially
6936         (branch absolute or relative), we care about the code and its
6937         target.  I kept the old code for reference for now.
6938
6939         The new code tries first to determine if the jump is anywhere in
6940         the -/+32 absolute meg range, if it succeeds, it encodes using the
6941         absolute branch;  If not, it tried to find something in the
6942         relative range, if not, it uses the handle_thunk code. 
6943
6944 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
6945
6946         * exceptions-ppc.c: use the correct ip register on macosx.
6947
6948 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
6949
6950         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
6951
6952 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
6953
6954         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
6955         Raise exception on integer divide by zero by hand since the hw
6956         doesn't support it. Handle NaNs in FP compares.
6957
6958 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
6959
6960         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
6961         code reducing duplication between the platforms and enabled
6962         signal exception handling (on linux for now).
6963
6964 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
6965
6966         * exceptions-ppc.c: more macosx support.
6967
6968 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
6969
6970         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
6971
6972 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
6973
6974         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
6975
6976 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
6977
6978         * iltests.il: more tests.
6979
6980 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
6981
6982         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
6983         vars as well.
6984
6985 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
6986
6987         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
6988
6989 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
6990
6991         * liveness.c: Mark variables as volatile in all basic blocks reachable
6992         from exception clauses.
6993
6994 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
6995
6996         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
6997         inlining.
6998
6999 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
7000
7001         * iltests.il, basic.cs: more tests for regalloc.
7002
7003 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
7004
7005         * iltests.il: Some tests for register allocation modifications
7006         I have locally.
7007
7008 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
7009
7010         * exceptions.cs: Add regression test for bug #56782.
7011
7012         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
7013         original stack trace if an exception is rethrown. Fixes #56782. Oh,
7014         the beauty of fixing the same thing in 5 different files...
7015
7016 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
7017
7018         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
7019         methods.
7020
7021 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
7022
7023         * mini.c: Add support for STRWLPARRAY marshalling convention.
7024
7025 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
7026
7027         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
7028         to init the context to setup the regs pointer).
7029
7030 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
7031
7032         * exceptions-ppc.c: more exceptions work.
7033
7034 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
7035
7036         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
7037         not allowed.
7038
7039 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
7040
7041         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
7042         can use the memory directly.
7043
7044         * cpu-pentium.md: Update documentation from a post from Zoltan. 
7045
7046         add x86_add_membase, x86_sub_membase, x86_mul_membase
7047
7048 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
7049
7050         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
7051         GENERAL_REGS they were also hardcoded for all PPC ports.
7052
7053         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
7054
7055         Remove hard-coded limit for floating point registers, use
7056         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
7057
7058         Notice that in MacOS X calling conventions you can fit a lot more
7059         floating point values in registers, so I should update the PInvoke
7060         test to excercise the passing of floating point values on the
7061         stack (currently broken).
7062         
7063 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
7064
7065         * tramp-ppc.c (create_trampoline_code): Added
7066         JUMP_TRAMPOLINE_SIZE. 
7067         (ppc_magic_trampoline): Follow the pattern from
7068         x86_magic_trampoline: if code is set to zero, return. 
7069         (create_trampoline_code): Always pass MonoMethod to the jump
7070         trampoline, before it was passing a null.
7071         (mono_arch_create_jump_trampoline): Implement the jump stub, could
7072         share the code with mono_arch_create_jit_trampoline. 
7073
7074         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
7075         implemented.
7076         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
7077         implemented.  
7078
7079         * cpu-g4.md: Added length for jmp instruction, the worst case
7080         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
7081         for save_lmf).
7082
7083 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
7084
7085         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
7086
7087 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
7088
7089         * mini.c: Only set bblock->real_offset when adding a new bblock, and
7090         before each IL instruction.
7091
7092         * mini.c (CEE_BOX): Fix warnings.
7093
7094 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7095
7096         * mini.c: removed a few unused vars and extra whitespace.
7097
7098 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
7099
7100         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
7101         checks.
7102         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
7103         index.
7104         (OP_GETCHR): use the above
7105         (CEE_LDELEMA): use the above.
7106
7107         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
7108         version of the generic impl.
7109         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
7110         (CEE_LDELEMA): use the above.
7111
7112 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
7113
7114         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
7115         Fixes #56317.
7116
7117         * iltests.il: Added new regression test for #56317.
7118
7119 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
7120
7121         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
7122         under NetBSD. Fixes #56450.
7123
7124         * liveness.c (update_gen_kill_set): Fix previous patch.
7125
7126 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7127
7128         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
7129
7130 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
7131
7132         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
7133         ldsfld and ldsflda.
7134
7135         * inssel-sparc.brg: Add more optimizations.
7136
7137         * mini-sparc.c: Replace multiply/divide with shifts if possible.
7138
7139 2004-04-01  Martin Baulig  <martin@ximian.com>
7140
7141         * mini.c (handle_box): New static function; moved the
7142         implementation of CEE_BOX here.
7143         (mono_method_to_ir): Added `constrained_call' variable.
7144         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
7145         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
7146         mono_method_get_constrained() to get the method.
7147
7148 2004-04-01  Martin Baulig  <martin@ximian.com>
7149
7150         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
7151         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
7152         (mono_method_to_ir): We don't need these macros anymore since
7153         mono_class_get_full() already takes care of it. 
7154
7155 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7156
7157         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
7158         use @function (as doesn't accept #function here) and check the return
7159         value of system and stop if fails.
7160
7161 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7162
7163         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
7164
7165 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
7166
7167         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
7168
7169         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
7170
7171         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
7172         #56223.
7173
7174         * basic-long.cs: Add test for negation of Int64.MinValue.
7175
7176 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
7177
7178         * mini-sparc.c: Update status.
7179
7180         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
7181
7182         * exceptions-sparc.c: Fix return value in filters.
7183
7184         * inssel-sparc.brg: Fix register allocation in some rules.
7185
7186 2004-03-28  Martin Baulig  <martin@ximian.com>
7187
7188         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
7189         if neccessary.  
7190
7191 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
7192
7193         * mini-x86.c (mono_arch_patch_code): Fix warnings.
7194         
7195         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
7196         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
7197         remove unused conv_u4 opcode.
7198
7199         * mini-x86.c: Remove valgrind workaround since it slows down things
7200         even when mono is not run under valgrind.
7201
7202 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
7203
7204         * mini-sparc.c: Update status.
7205
7206         * inssel-sparc.brg: Add some optimizations.
7207
7208         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
7209         future delay slot filling. Add support for varargs, tail calls and JMP.
7210
7211         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
7212         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
7213
7214         * inssel.brg: Fix register allocation in OP_ARGLIST.
7215
7216         * inssel.brg: Fix warnings.
7217
7218 2004-03-25  Martin Baulig  <martin@ximian.com>
7219
7220         * mini.c (inflate_generic_field): Removed.
7221         (mini_get_method): Removed, use mono_get_method_full(),
7222         (mini_get_class): Removed, use mono_class_get_full().
7223         (mono_method_to_ir): Pass our generic context to
7224         mono_field_from_token().        
7225
7226 2004-03-25  Martin Baulig  <martin@ximian.com>
7227
7228         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
7229         of a `MonoMethod *'.
7230         (mini_get_method): Take a `MonoGenericContext *' instead
7231         of a `MonoMethod *'.
7232         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
7233         a new local variable called `generic_context' which holds the
7234         current `MonoGenericContext *'; use it to lookup things.
7235
7236 2004-03-24  Martin Baulig  <martin@ximian.com>
7237
7238         * mini.c (mini_get_class): New static method; if we're inside a
7239         generic instance, inflate the class if neccessary.
7240         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
7241
7242 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
7243
7244         * iltests.il: New regression test for #55976.
7245
7246         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
7247         #55976.
7248
7249 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
7250
7251         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
7252         output.
7253
7254 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
7255
7256         * liveness.c: Consider SSA stores as well as loads when making vars
7257         volatile.
7258
7259         * exceptions.cs: New regression tests for register allocation.
7260         
7261 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
7262
7263         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
7264         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
7265           domain lock only to protect puntual access to data structures.
7266           Added access lock for sighash, jit_icall_hash_name, 
7267           jit_icall_hash_addr and domain->code_mp.
7268
7269 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
7270
7271         * driver.c: Print SIGSEGV handling method.
7272
7273         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
7274
7275         * mini.c (setup_jit_tls_data): Handle case when this is called
7276         multiple times for a thread.
7277
7278         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
7279         is different from fbxx_un. Fixes #54303. Also use constants instead of
7280         magic numbers in a lot of places.
7281
7282 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
7283
7284         * exceptions.cs: Fix cctor test when --regression is used.
7285
7286 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
7287
7288         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
7289         for Linux/ppc.
7290
7291 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
7292
7293         * inssel-ppc.brg: fixed register assignments for some rules.
7294
7295 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
7296
7297         * exceptions.cs: Add test for exceptions in static constructors.
7298
7299         * mini.c (mono_jit_compile_method_with_out): Move the calling of
7300         static constructors outside the domain lock. Fixes #55720.
7301
7302 2004-03-17  Martin Baulig  <martin@ximian.com>
7303
7304         * mini.c (get_generic_field_inst): Removed, this'll never happen.
7305         (inflate_generic_field): Take the `MonoMethod *' instead of the
7306         `MonoClass *' and added support for generic method.
7307         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
7308         have a `field->parent->gen_params', only inflate the field if it's
7309         an open constructed type.
7310
7311 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
7312
7313         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
7314         exception object instead of the preconstructed ones.
7315
7316 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7317
7318         * mini.c: reverted changed to sigsegv_signal_handler commited
7319         accidentally in the previous patch.
7320
7321 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7322
7323         * mini.c:
7324         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
7325         running --aot with an old assembly.
7326
7327 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
7328
7329         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
7330         point values.
7331
7332         * mini-sparc.c: Add support for v9 branches with prediction.
7333
7334 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
7335
7336         * mini.c (mini_init): #warning is GNUC only
7337
7338         * mini-sparc.h: implement __builtin_frame_address
7339         and __builtin_return_address for Sun C compiler
7340
7341 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
7342
7343         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
7344
7345 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
7346
7347         * basic-calls.cs: Add test for unaligned byref long argument passing.
7348
7349         * mini-ops.h: Add sparcv9 compare and branch instructions.
7350
7351         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
7352         v9 instructions if we have a v9 cpu.
7353
7354         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
7355         registers for global allocation.
7356
7357         * exceptions-sparc.c: Fixes.
7358         
7359 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
7360
7361         * liveness.c (mono_analyze_liveness): Optimized version.
7362
7363         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
7364
7365         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
7366         sparc work.
7367
7368         * basic-float.cs basic-calls.cs: New regression tests.
7369
7370 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
7371
7372         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
7373         sigaltstack implementation.
7374
7375         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
7376         
7377         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
7378         stuff if SIGSEGV_ON_ALTSTACK is not defined.
7379
7380 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
7381
7382         * mini.c: Fix warnings.
7383         
7384         * mini.c (mono_resolve_patch_target): New function which contains the
7385         arch independent part of the patching process.
7386
7387         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
7388         patching code to a separate function.
7389
7390 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
7391
7392         * mini.c (add_signal_handler): ifdef out on Windows
7393
7394 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
7395
7396         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
7397         cpu-sparc.md: Add exception handling support + other fixes.
7398
7399         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
7400         typed GC detection in --version.
7401
7402         * basic.cs exceptions.cs: New regression tests.
7403
7404         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
7405         the arch specific code can store data during a compilation.
7406
7407         * mini-ops.h: Add OP_SETFRET.
7408
7409         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
7410         function, register a separate icall for each arity, so the icalls can
7411         get a wrapper.
7412         
7413         * mini.c (mono_print_tree): Print negative offsets in a more readable
7414         form.
7415         
7416         * mini.c: Make signal handling work on sparc.
7417         
7418         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
7419
7420         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
7421
7422         * jit-icalls.c: Emulate truncl by aintl on solaris.
7423
7424         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
7425
7426 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
7427
7428         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
7429
7430 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
7431
7432         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
7433         a MarshalByRef type, inline a method that performs the check, taking into
7434         account that the object can be a proxy. Also implemented tow new opcodes:
7435         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
7436         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
7437         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
7438
7439 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
7440
7441         * mini-ppc.c: if a relative branch displacement is too big
7442         but it points to and area reachable with an absolute branch, 
7443         avoid the thunks.
7444
7445 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
7446
7447         * mini.c: optimize small copies in cpblk.
7448
7449 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
7450
7451         * basic-calls.cs basic-float.cs: New regression tests.
7452
7453         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
7454         negative offsets from %fp. Implement localloc. Fix local register 
7455         allocation. Fix the case when the this argument needs to be saved to
7456         the stack. Implement some missing opcodes.
7457
7458 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
7459
7460         * mini.c (mini_method_compile): Reenable global regalloc in methods
7461         with exception handlers.
7462
7463         * linear-scan.c (mono_varlist_sort): Fix warning.
7464
7465         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
7466
7467         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
7468         regalloc costs.
7469
7470         * liveness.c: Make all variables uses in exception clauses volatile, to
7471         prevent them from being allocated to registers. Fixes #42136.
7472
7473 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
7474
7475         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
7476         causes regressions.
7477
7478         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
7479         argument to mono_arch_regalloc_cost.
7480
7481         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
7482         precisely.
7483
7484 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
7485
7486         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
7487         Make the cost of allocating a variable to a register arch dependent.
7488
7489         * basic-calls.cs: Fix compilation of tests.
7490         
7491         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
7492         helper function to cut back on the number of #ifdefs needed.
7493
7494         * mini-ppc.c: Fix compilation.
7495
7496         * basic-calls.cs: New regression tests.
7497
7498         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
7499
7500         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
7501         of l0 since that is callee saved.
7502
7503         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
7504         to virtual calls.
7505
7506         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
7507         of delay instruction.
7508
7509         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
7510
7511         * mini.h (MonoCallInst): Add 'virtual' flag.
7512
7513         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
7514
7515 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
7516
7517         * *.cs: New regression tests.
7518
7519         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
7520         work.
7521
7522         * mini.c (mono_runtime_install_handlers): Fix build.
7523
7524         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
7525         'signal_stack_size' members.
7526
7527         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
7528         alternate signal stack.
7529
7530         * exceptions-x86.c: Add stack overflow handling.
7531
7532         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
7533         functions to arch independent code.
7534
7535         * mini.c (mono_print_tree): Print more detailed info for load_membase
7536         opcodes.
7537         
7538 2004-02-23  Martin Baulig  <martin@ximian.com>
7539
7540         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
7541
7542 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
7543
7544         * mini-x86.c: fixed reg allocation for div/rem.
7545
7546 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
7547
7548         * driver.c (mono_main): Report some configuratio options on --version.
7549
7550 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
7551
7552         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
7553         low in the address space. Correctly flush memory in thunks where we
7554         output native code.
7555
7556 2004-02-20  Martin Baulig  <martin@ximian.com>
7557
7558         * mini.c (mini_get_method): New static method; inflate all generic
7559         methods and methods in open generic instances.
7560         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
7561         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
7562
7563 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
7564
7565         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
7566
7567         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
7568
7569 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
7570
7571         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
7572
7573         * mini-sparc.c (flushi mono_arch_output_basic_block): make
7574         it compile using Sun's compiler.
7575
7576 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
7577
7578         * 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.
7579
7580         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
7581
7582 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
7583
7584         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
7585         code.
7586         * mini-ppc.c: handle calls outside of the allowed range with thunks
7587         allocated using the code manager.
7588         * tramp-ppc.c: use the code manager to hold generated native code.
7589         Fixed the magic trampoline to just patch vtable entries.
7590
7591 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
7592
7593         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
7594         independent file.
7595
7596 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
7597
7598         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
7599         PPC.
7600
7601         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
7602         if we have a working __thread implementation.
7603
7604         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
7605         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
7606
7607 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
7608
7609         * mini-x86.c: Fix compilation under gcc 2.
7610         
7611 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
7612
7613         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
7614         contains a call to the wrapped function.
7615
7616         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
7617         OP_<CALL>_IMM opcodes, and use them under X86.
7618         
7619         * mini.c (mono_jit_find_compiled_method): Fix warning.
7620
7621         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
7622
7623         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
7624
7625         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
7626         functionality to mini.c.
7627
7628         * mini.c (mono_create_jump_trampoline): New function to create a jump
7629         trampoline. Return a compiled method instead of a trampoline if it
7630         exists. Add a cache for jump trampolines.
7631
7632         * mini.c (mono_jit_find_compiled_method): New function to return a
7633         compiled method if it exists.
7634
7635         * mini-x86.c: Call mono_create_jump_trampoline instead of 
7636         mono_arch_create_jit_trampoline.
7637
7638         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
7639         a jump trampoline. Fixes #52092.
7640         
7641 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
7642
7643         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
7644         which is not up-to-date. Add check_corlib_version () instead.
7645
7646         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
7647         have to call it.
7648         
7649         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
7650         since newer valgrind versions do not need it.
7651
7652         * mini.c (mono_jit_compile_method_with_opt): New helper function to
7653         compile a method with a given set of optimizations.
7654
7655         * mini.c: Compile icall wrappers on-demand instead of at startup.
7656
7657         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
7658         wrapper for an icall.
7659
7660 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
7661
7662         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
7663         #54063.
7664
7665         * iltests.il: Add test for non-empty stack before switch instruction.
7666
7667 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
7668
7669         * mini.c: Add support for new stringbuilder marshalling conventions.
7670
7671         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
7672
7673 2004-02-01  Martin Baulig  <martin@ximian.com>
7674
7675         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
7676         in `ginst->mtype_argv'.
7677
7678 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
7679
7680         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
7681         facilitate grepping.
7682
7683 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
7684
7685         * mini.c: fixed buglet in initobj generic implementation for references.
7686
7687 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
7688
7689         * Makefile.am: make the version script conditional.
7690         * jit-icalls.c: handle missing truncl().
7691
7692 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
7693
7694         * exceptions.cs: Add more tests for double->int conversion.
7695
7696         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
7697         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
7698
7699 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
7700
7701         * driver.c: make --verbose --version emit an error
7702         if the loaded corlib doesn't match the runtime version.
7703
7704 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
7705
7706         * mini-ppc.h: export ppc_patch().
7707         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
7708         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
7709         on par or better than on MacOSX.
7710
7711 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
7712
7713         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
7714         mono_lookup_pinvoke_call.
7715
7716         * mini-x86.c: Under windows, the default pinvoke calling convention is
7717         stdcall. Fixes #52834.
7718
7719         * mini.c (optimize_branches): Add an upper bound to the number of
7720         iterations to prevent infinite loops on strange loops. Fixes #53003.
7721
7722 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
7723
7724         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
7725         and ISINST. Fixes #52093.
7726
7727         * objects.cs (test_0_vector_array_cast): New tests.
7728         
7729 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
7730
7731         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
7732         checking in Array.Set ().
7733
7734         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
7735         #52590.
7736
7737         * object.cs (test_0_multi_array_cast): New regression test.
7738
7739 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
7740
7741         * exceptions-ppc.c: fix build on Linux/PPC.
7742
7743 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
7744
7745         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
7746         running under valgrind.
7747         (x86_magic_trampoline): Fix build bustage.
7748
7749         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
7750         negative values as well. This is needed for the encoding of the line number
7751         info, since sometimes the line numbers are not in increasing order.
7752
7753 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
7754
7755         * cpu-pentium.md (localloc): Increase the size of the localloc 
7756         instruction since it is a loop under Win32.
7757
7758         * debug-mini.c (record_line_number): Get rid of unneccesary memory
7759         allocation.
7760
7761 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
7762
7763         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
7764         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
7765         Max Horn (max@quendi.de). Fix file names in comments.
7766
7767 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
7768
7769         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
7770         avoid stack overflow.
7771         (replace_usage): Avoid uninitialized variable warnings.
7772
7773         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
7774         and taking the address of valuetype variables.
7775
7776 2004-01-03  Patrik Torstensson
7777
7778         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
7779         for other purposes than FP later on.
7780
7781 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
7782
7783         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
7784         of tail calls.
7785
7786 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
7787
7788         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
7789
7790 2003-12-30  Patrik Torstensson <p@rxc.se>
7791
7792         * mini-x86.h: Decreased number of availiable fp regs.
7793         Solves corner cases with FP spilling.
7794
7795 2003-12-23  Patrik Torstensson <p@rxc.se>
7796
7797         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
7798         for floating point stack tracking / spilling on x86. 
7799         Fixes bug #49012.
7800         
7801         * basic-float.cs: added float mul overflow test.
7802
7803 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
7804
7805         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
7806
7807 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
7808
7809         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
7810         supports for cond branches that overflow the immediate
7811         overflow offset. mcs can compile simple programs.
7812
7813 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
7814
7815         * exceptions-ppc.c: exception handling support wip:
7816         finally handlers get run on exception.
7817
7818 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
7819
7820         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
7821         profiling.
7822
7823 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
7824
7825         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
7826         initial support for stack walking and unwinding.
7827
7828 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
7829
7830         * driver.c (mono_main): Make corlib-out-of-sync message more 
7831         descriptive. Also remove verify_corlib call.
7832
7833 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
7834
7835         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
7836         not overlap with other call's arguments, too.
7837
7838 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
7839
7840         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
7841         move to arch-specific code the choice of arch-specific
7842         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
7843         * mini.c: ensure emulation calls will not interleave
7844         with other calls.
7845
7846 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
7847
7848         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
7849         the magic trampoline stack frame is dropped before executing
7850         the new method.
7851
7852 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
7853
7854         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
7855         and integer to fp conversions. Added support for overflowing
7856         arguments on the stack. Reserve a couple more registers as temps.
7857         Added support for aot compilation (as output still needs to be
7858         tweaked, though).
7859
7860 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
7861
7862         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
7863         Don't overwrite return register in some corner cases.
7864
7865 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
7866
7867         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
7868         static constructors when AOT compiling.
7869
7870         * driver.c (mono_main): Call mono_check_corlib_version.
7871
7872 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
7873
7874         * cpu-g4.md, basic.cs: fixed div target register.
7875
7876 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
7877
7878         * mini-ppc.c, basic.cs: shl_imm fix with test.
7879
7880 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
7881
7882         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
7883         structures by value. Misc fixes.
7884         * objects.cs: more tests.
7885
7886 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
7887
7888         * mini-ppc.c: lconv.ovf.i implemented.
7889
7890 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7891
7892         * mini.c:
7893         (mini_init): don't error out if someone already called g_thread_init.
7894
7895 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
7896
7897         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
7898         to be any type per the spec. Fix abnormal memory usage when
7899         the same object is repeatedly thrown.
7900
7901 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
7902
7903         * mini.c: check for overruns in IL code.
7904
7905 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
7906
7907         * TODO: Add/remove some todo entries.
7908
7909 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
7910
7911         * driver.c (mono_main): Call mono_verify_corlib.
7912
7913 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
7914
7915         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
7916         This has been moved to mini.c
7917         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
7918         type being casted is marshalbyref it could be a proxy, so instead of
7919         emitting the type check code, emit a call to a runtime method that will
7920         perform the check by calling CanCastTo if needed.
7921
7922 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
7923
7924         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
7925         methods with large stack frames under Win32.
7926
7927 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
7928
7929         * Makefile.am: Distribute regression tests.
7930
7931         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
7932         at the end instead of inserting each variable into the sorted list.
7933
7934         * linear-scan.c (mono_varlist_sort): New helper function.
7935         
7936 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
7937
7938         * mini.c: ensure arguments and locals are within bounds.
7939
7940 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
7941
7942         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
7943         related fixes.
7944
7945 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
7946
7947         * mini.c (mono_cprop_copy_values): Fix crash.
7948
7949         * aot.c: Set verbosity back to 0.
7950         
7951 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
7952
7953         * regalloc.c: complete memory leak fix by Laurent Morichetti
7954         (l_m@pacbell.net).
7955
7956 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
7957
7958         * driver.c (main_thread_handler): Revert the previous patch.
7959
7960         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
7961         under valgrind.
7962
7963         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
7964         memory from the memory pool.
7965
7966         * driver.c (main_thread_handler): Turn on all optimizations when
7967         --aot is used.
7968
7969         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
7970         an array for better performance.
7971
7972         * regalloc.c (mono_regstate_assign): Fix memory leak.
7973
7974         * debug-mini.c (mono_debug_serialize_debug_info): New function to
7975         serialize the debug info.
7976
7977         * debug-mini.c (mono_debug_add_aot_method): New function to load the
7978         debug info from the serialized representation.
7979
7980         * aot.c: Save debug info into the generated file and load it when 
7981         loading a method.
7982
7983         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
7984
7985 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
7986
7987         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
7988         More FP-related fixes.
7989
7990 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
7991
7992         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
7993         and register allocation buglet. Hello world now runs.
7994
7995 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
7996
7997         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
7998         * tramp-ppc.c: fixed class init trampoline.
7999         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
8000
8001 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
8002
8003         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
8004         mini.c: more ppc changes/fixes.
8005
8006 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
8007
8008         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
8009         Also optimize the case when the arguments are the same in the caller 
8010         and in the callee.
8011
8012         * iltests.il: Add tests for tail calls with valuetype arguments.
8013
8014 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
8015
8016         * mini-ppc.c: fixes for struct return type.
8017
8018 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
8019
8020         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
8021         mono_spillvar_offset() to arch-specific code.
8022
8023 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
8024
8025         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
8026
8027 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
8028
8029         * exceptions-x86.c: Fix stack space leaks.
8030         
8031         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
8032         registers from the lmf if the method has save_lmf set.
8033
8034 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
8035
8036         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
8037         of icall wrappers into InvokeInDomain, since these are now per-domain.
8038
8039 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
8040
8041         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
8042         make some opcode emulation and intrinsic ops enabled/disabled 
8043         according to the architecture. More fixes.
8044
8045 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
8046
8047         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
8048
8049 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
8050
8051         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
8052         arch-specific handling for 'this' and struct return type to
8053         arch-specific code.
8054
8055 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8056
8057         * aot.c: prevent divide by zero error when reporting (it happened with
8058         Accessibility.dll).
8059
8060 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
8061
8062         * mini.h (inst_switch): Remove unused macro.
8063
8064 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8065
8066         * aot.c:
8067         (load_aot_module): free 'info->methods' and 'info' properly. No more
8068         "free(): invalid pointer blah" messages when you have an old aot
8069         compiled assembly.
8070
8071 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
8072
8073         * jit-icalls.c, mini.c: Added support for context static fields.
8074
8075 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
8076
8077         * mini.c (mono_method_blittable): Methods which set LastError are not 
8078         blittable either. Fixes #51108.
8079         
8080 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
8081
8082         * mini.c: flush icache.
8083         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
8084
8085 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
8086
8087         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
8088
8089 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
8090
8091         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
8092         safe on IA32.
8093
8094         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
8095         vararg calls.
8096
8097         * inssel.brg (CEE_MKREFANY): Fix AOT case.
8098
8099 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
8100
8101         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
8102         instruction when the result is discarded.
8103
8104         * iltests.il (test_0_div_regalloc): New regression test.
8105
8106         * arrays.cs: Fix compilation error.
8107
8108 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
8109
8110         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
8111         float rules to inssel-x86.brg: sane architectures with FP registers
8112         don't need to implement these rules.
8113
8114 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
8115
8116         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
8117
8118 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
8119
8120         * mini.h, inssel-long32.brg: fixed endianess issues in int64
8121         implementation of 32 bit systems.
8122
8123 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
8124
8125         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
8126         (Jeroen Zwartepoorte).
8127
8128 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
8129
8130         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
8131         the caller and the callee matches.
8132         
8133         * mini.c (mono_method_to_ir): Add comment.
8134
8135         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
8136         signbit is missing on some platforms.
8137
8138 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
8139
8140         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
8141
8142         * mini.c (setup_jit_tls_data): Call the new function.
8143         
8144         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
8145
8146         * mini-x86.c: Add experimental support for fast access to the lmf
8147         structure under NPTL/Linux 2.6.x.
8148
8149 2003-11-06  Martin Baulig  <martin@ximian.com>
8150
8151         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
8152         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
8153         the debugger.
8154
8155 2003-11-02  Martin Baulig  <martin@ximian.com>
8156
8157         * mini.c (inflate_generic_field): New static method.
8158         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
8159         generic instance and the field is declared in a generic type, call
8160         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
8161
8162 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
8163
8164         * mini.h mini.c (mono_method_same_domain): New function to return
8165         whenever the caller and the callee are in the same domain.
8166
8167         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
8168
8169 2003-10-30  Martin Baulig  <martin@ximian.com>
8170
8171         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
8172         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
8173         method parameters.
8174         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
8175         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
8176
8177 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
8178
8179         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
8180         propagation.
8181
8182         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
8183         object here, so it is in the correct appdomain etc.
8184
8185 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
8186
8187         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
8188         already done.
8189         (mono_method_to_ir): Avoid freeing the type created returned from
8190         mono_type_create_from_typespec, since it is put into an internal cache
8191         by the function. Fixes pointer.exe.
8192
8193         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
8194         trampolines for icalls and pinvokes as well. Fixes #33569.
8195
8196 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
8197
8198         * mini.c: Update after appdomain changes.
8199
8200         * mini.c (mono_jit_compile_method_inner): Allways compile native
8201         method wrappers in the root domain, since there can only be one
8202         instance of them, whose address is stored in method->info.
8203
8204 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
8205
8206         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
8207         environment variable. Instead detect automatically whenever running
8208         under valgrind using the magic macro RUNNING_ON_VALGRIND from
8209         valgrind.h.
8210
8211 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
8212
8213         * trace.c, trace.h: New files that implement the new trace option
8214         parsing. 
8215
8216         * driver.c: Document new --trace options.
8217
8218         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
8219         mini-x86.c: Apply:
8220
8221         -       if (mono_jit_trace_calls)
8222         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
8223
8224         * mini.h: prototypes.
8225         
8226 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
8227
8228         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
8229
8230         * mini.c inssel.brg: Implement typedefbyref opcodes.
8231
8232         * mini.c (mono_jit_compile_method): Remove unused local variable.
8233
8234         * mini.c (mono_jit_compile_method_inner): Ditto.
8235         
8236 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
8237
8238         * tramp-x86.c (x86_class_init_trampoline): Fix build.
8239         
8240         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
8241
8242 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
8243
8244         * mini.c (mono_no_aot): Remove unused global variable.
8245
8246         * mini.c: Thread safety fixes.
8247
8248 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
8249
8250         * mini.c (mono_create_class_init_trampoline): Add a lock around
8251         class_init_hash_addr.
8252
8253         * arrays.cs (test_0_newarr_emulation): Add new regression test for
8254         #30073.
8255
8256         * mini.c: Decompose the NEWARR instruction before decomposing its
8257         arguments. Fixes #30073.
8258
8259 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
8260
8261         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
8262         convention.
8263
8264 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
8265
8266         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
8267
8268         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
8269
8270         * driver.c: Add support for compiling icall wrappers to --compile.
8271
8272 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
8273
8274         * inssel.brg: The empty value in class->interface_offsets is -1, not
8275         0. Fixes #49287.
8276
8277 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
8278
8279         * objects.cs: New test for 'is' operator on an array of interfaces.
8280
8281 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
8282
8283         * tramp-ppc.c: update trampoline code to support jumps
8284         and class initialization.
8285
8286 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
8287
8288         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
8289
8290         * inssel.brg (OP_UNBOXCAST): Fix #46027.
8291
8292         * inssel.brg (OP_UNBOX): Remove unused rule.
8293
8294         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
8295         region instead of one for each method. Fixes #47813.
8296
8297 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
8298
8299         * exceptions.cs (test_0_nested_finally): New regression test for
8300         nested exception handlers.
8301
8302         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
8303
8304         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
8305
8306         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
8307         inlining.
8308
8309         * mini.c (mono_method_check_inlining): Make the inlining limit 
8310         configurable by an environment variable.
8311         
8312         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
8313
8314         * mini.h: Bump AOT file version.
8315
8316         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
8317         token, store the image along with the token, since the token might not 
8318         refer to the same image as the method containing the relocation, 
8319         because of inlining.
8320
8321 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
8322
8323         * mini.c (mono_precompile_assemblies): New function to compile
8324         all methods in all loaded assemblies.
8325
8326         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
8327
8328         * regalloc.h regalloc.c (MonoRegState): Change the type of 
8329         iassign and fassign to int*, since they can contain large negative
8330         values if the register is spilled. Also added some comments. Fixes
8331         #45817.
8332
8333         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
8334         under Win32. Fixes #42964.
8335
8336 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
8337
8338         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
8339
8340         * aot.c: Added support for AOT compiling methods which contain calls
8341         to wrappers. Currently, only remoting-invoke-with-check wrappers are
8342         handled.
8343         
8344         * driver.c (compile_all_methods): Run the compilation in a thread
8345         managed by mono. Fixes #44023.
8346
8347         * mini.c (mono_codegen): Print full method name in verbose output.
8348
8349         * mini-x86.c (mono_arch_patch_code): Fix warning.
8350         
8351         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
8352         jumps, since the method we are jumping to might be domain-specific.
8353
8354         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
8355
8356 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
8357
8358         * inssel.brg: string chars are unsigned.
8359
8360 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
8361
8362         * TODO: New todo item.
8363
8364         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
8365         which calls mono_runtime_class_init and patches the call site to
8366         avoid further calls.
8367         (mono_arch_create_class_init_trampoline): New arch specific function 
8368         to create a class init trampoline.
8369         (create_trampoline_code): Generalized so it can create
8370         class init trampolines as well.
8371
8372         * mini.c (helper_sig_class_init_trampoline): New helper variable.
8373         (mono_create_class_init_trampoline): New function to create and cache
8374         class init trampolines.
8375         (mono_find_class_init_trampoline_by_addr): New function to lookup the
8376         vtable given the address of a class init trampoline. Used by the
8377         patching process.
8378         (mono_codegen): Generate a call to a trampoline instead of
8379         mono_runtime_class_init in LDSFLD[A].
8380         (mono_codegen): Add relocations for the new trampoline.
8381         
8382         * mini.h mini-x86.c aot.c: Added a new relocation type: 
8383         MONO_PATCH_INFO_CLASS_INIT.
8384
8385         * mini.h: Bump AOT version number.
8386
8387         * aot.c: Create a copy of the loaded code instead of using the original
8388         so methods which call each other will be close in memory, improving
8389         cache behaviour.
8390         
8391         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
8392         patch since it breaks the regression tests.
8393         
8394         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
8395         for the register saving instruction sequence since the 
8396         frame_state_for function in glibc 2.3.2 don't seem to detect it.
8397
8398 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
8399
8400         * TODO: Fix todo item && remove another.
8401
8402 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
8403
8404         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
8405         previous checkin.
8406
8407         * aot.c: Moved the check for MONO_LASTAOT into the initialization
8408         function of the module.
8409
8410         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
8411         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
8412         --no-aot command line option.
8413
8414 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
8415
8416         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
8417         by Bernie Solomon (bernard@ugsolutions.com).
8418
8419         * inssel.brg: Refactor the interface offset table related code into
8420         its separate functions and add support for the AOT case.
8421
8422 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
8423
8424         * aot.c (mono_aot_get_method_inner): Fix memory leak.
8425         
8426         * aot.c: Added mono_aot_verbose variable and made all debugging
8427         output depend on the value of this variable.
8428
8429         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
8430         method_label and info_label.
8431
8432         * mini.h mini-x86.c aot.c: Added a new relocation type 
8433         MONO_PATCH_INFO_IID for klass->interface_id.
8434
8435         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
8436         the MonoJitInfo structure.
8437
8438         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
8439         a non-root appdomain in shared mode.
8440
8441 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
8442
8443         * aot.c: make aot loader less verbose. Remove free of unused variable.
8444
8445 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
8446
8447         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
8448
8449         * .cvsignore: Added *.dll.
8450
8451         * mini.c (mono_print_tree_nl): New function callable while debugging.
8452
8453         * mini.c (mono_print_code): Export this.
8454
8455         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
8456         patched code.
8457
8458 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
8459
8460         * mini.h (MonoCompile): Added 'jit_info' field.
8461
8462         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
8463         the cfg structure, since it is needed by the AOT compiler.
8464
8465         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
8466
8467         * aot.c: A major rewrite. Changes include:
8468         - save exception tables for methods which have them.
8469         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
8470         to g_module_symbol.
8471         - reworked the file format so it is now much smaller and needs
8472         fewer relocation entries.
8473         
8474 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
8475
8476         * aot.c (load_aot_module): Fix build bustage on platforms without
8477         Boehm GC.
8478
8479 2003-09-04  Martin Baulig  <martin@ximian.com>
8480
8481         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
8482
8483 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
8484
8485         * TODO: Some new optimization ideas.
8486
8487         * aot.c: Move AOT module loading logic here from mono_assembly_open.
8488
8489         * aot.c: Save the optimization flags used to compile the code into
8490         the AOT module.
8491
8492         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
8493         support emitting domain specific code.
8494         
8495         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
8496         no longer domain neutral. It can be made domain neutral by compiling 
8497         with --optimize=shared.
8498
8499         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
8500         between appdomains.
8501
8502         * driver.c mini.h mini.c: New --no-aot debugging option which disables
8503         loading of AOT code.
8504
8505         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
8506         
8507         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
8508         if there is no domain neutrality information.
8509
8510 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
8511
8512         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
8513         format version into the generated library.
8514
8515         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
8516         callee method into the caller since one of them could be shared.
8517
8518         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
8519         system exceptions from AOT code now works.
8520
8521         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
8522         method if it is domain neutral and the callee is not.
8523
8524         * graph.c (cfg_emit_one_loop_level): Fix warning.
8525
8526 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
8527
8528         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
8529         last checkin.
8530
8531 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
8532
8533         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
8534         is needed  by code which is executed before mono_runtime_init ().
8535         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
8536         
8537         * mini.c (mono_thread_abort): Fix warning.
8538         (mono_jit_compile_method): Call static constructor in the AOT case too.
8539
8540         * aot.c (mono_compile_assembly): Fix warning.
8541
8542 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8543
8544         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
8545
8546 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
8547
8548         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
8549
8550         * cpu-pentium.md: Fix the length of call opcodes so they include the
8551         ESP restoring instruction. Fixes #47968.
8552
8553 2003-08-28  Martin Baulig  <martin@ximian.com>
8554
8555         * mini-x86.c (mono_arch_call_opcode): Added support for
8556         MONO_TYPE_GENERICINST.
8557
8558         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
8559
8560 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
8561
8562         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
8563         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
8564
8565         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
8566         metadata_section.
8567
8568 2003-08-26  Martin Baulig  <martin@ximian.com>
8569
8570         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
8571         when reporting an error, set this to the actual error location.
8572         (mono_method_to_ir): Report the correct error location if
8573         get_basic_blocks() returned an error.
8574
8575 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
8576
8577         * mini.c (mono_type_blittable): OBJECT is not blittable.
8578         (mono_method_blittable): Methods which have marshalling descriptors
8579         are not blittable either. Fixes #47842.
8580
8581 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
8582
8583         * driver.c mini.c: Use an environment variable instead of a global 
8584         variable. Also fix the build.
8585
8586         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
8587         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
8588         reporting this. 
8589
8590         * driver.c mini.c: Added --with-valgrind option to turn off some
8591         code which prevents mono from running under valgrind.
8592
8593         * mini.c (mono_emit_call_args): Fixed warning.
8594
8595         * mini.c (mono_emulate_opcode): Fixed warning.
8596
8597 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
8598
8599         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
8600         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
8601         regalloc.c, regalloc.h: specify available registers in arch-specific
8602         code and support floats in the regallocator (patch by Laurent Morichetti 
8603         <l_m@pacbell.net>)
8604
8605 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
8606
8607         * mini.c: mono_thread_current() can be called only after
8608         mono_runtime_init(): rearrange code to not call it early on.
8609
8610 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
8611
8612         * mini.c: allocate jump tables in the code mempools.
8613
8614 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
8615
8616         * mini.c, mini.h: make sure per-thread data allocated by the jit is
8617         freed.
8618
8619 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
8620
8621         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
8622         12 to 16.  This fixes bug #47453.
8623
8624
8625 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
8626
8627         * mini-ppc.c: fixed indexed load and unsigned compares.
8628
8629 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
8630
8631         * mini.c: reenabled installation of handler for
8632           thread abort signal.
8633
8634 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
8635
8636         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
8637         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
8638         until it's fixed and actually useful.
8639
8640 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
8641
8642         * inssel-long32.brg: couple more opcodes implemented.
8643
8644 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
8645         
8646         * mini-sparc.c: Even more opcodes implemeted.
8647
8648 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
8649
8650         * mini-sparc.c: More opcodes implemented.
8651
8652 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
8653
8654         * mini-sparc.c: More opcodes implemented.
8655
8656 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
8657
8658         * inssel-sparc.brg: Add some needed rules.  Direct
8659         copy from PPC.
8660         * Makefile.am: Use inssel-sparc.brg
8661         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
8662         an assert happy for now.
8663
8664 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
8665
8666         * mini-sparc.c: Fixed compile errors.
8667         * exceptions-sparc.c: Same.  We now produce a mono binary 
8668         on sparc-linux.  Yea.
8669
8670 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
8671
8672         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
8673         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
8674         They compile, but do not work.
8675
8676 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
8677
8678         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
8679         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
8680         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
8681         (ct@gentoo.org).
8682
8683 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
8684
8685         * mini.c: more opcodes implemented and better support for generics.
8686
8687 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
8688
8689         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
8690         * mini.c, mini.h: first cut at generics support: some new instructions 
8691         added and changed the behaviour of some of the existing ones.
8692
8693 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
8694
8695         * mini.c: Removed definition of metadata_shared mutex here.
8696
8697 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
8698
8699         * mini-x86.c: make vararg calls work for instance methods.
8700
8701 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
8702
8703         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
8704         returns the arguments in a separte list, now.
8705
8706 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
8707
8708         * aot.c, mini.c: updates for array type representation changes.
8709
8710 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
8711
8712         * mini.c: register function to perform jit shutdown.
8713
8714 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
8715
8716         * mini.c: use a faster allocator if possible.
8717
8718 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
8719
8720         * aot.c: some cleanups and portability changes.
8721
8722 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
8723
8724         * mini.c: use faster allocation for CEE_BOX if possible.
8725
8726 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
8727
8728         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
8729         Moved inlined mempcy code to its own function so that is can be
8730         reused. Added an inline memset function as well (optimized initobj).
8731         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
8732
8733 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
8734
8735         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
8736
8737 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
8738
8739         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
8740         arch code can setup the cpu for CLR execution, if needed.
8741         We use it on x86 to set the precision of FP operations.
8742
8743 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
8744
8745         * mini.c: disable some optimizations if we can guess they'll cost too
8746         much for a given method.
8747
8748 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
8749
8750         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
8751         
8752 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
8753         * mini.h mini.c mini-x86.c: Added instruction level coverage 
8754         info collection support.
8755
8756 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
8757
8758         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
8759         is now implemented in the profiling API. Get rid of a couple of
8760         unnecessary global variables.
8761
8762 2003-06-15  Nick Drochak <ndrochak@gol.com>
8763
8764         * basic-long.cs: tests for negative values for bigmul, and unsigned.
8765         * cpu-g4.md: add op_bigmul and op_bigmul_un
8766         * cpu_pentium.md: add op_bigmul_un
8767         * inssel-long32.brg: add rule for unsigned bigmul
8768         * mini-ops.h: define OP_BIGMUL_UN
8769         * mini-x86.c: THE BUG: handle (un)signed properly
8770         * mini.c: choose unsigned opcode if needed.
8771         This set of patches fixes bug #44291
8772
8773 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
8774
8775         * mini.c (optimize_branches): improved to handle all kinds of
8776         conditional branches.
8777
8778 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
8779
8780         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
8781         don't raise exceptions.
8782
8783 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
8784
8785         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
8786         to arch-specific files.
8787
8788 2003-06-09  Martin Baulig  <martin@ximian.com>
8789
8790         * Makefile.am (libs): Added $(LIBGC_LIBS).
8791
8792 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
8793
8794         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
8795         and OP_ATAN (fixes bug#44293).
8796
8797 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
8798
8799         * Makefile.am, mini-x86.c: rename cpu description array to
8800         pentium_desc, since some compilers define the 'pentium' preprocessor
8801         symbol.
8802
8803 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
8804
8805         * mini.c (mini_select_instructions): add explicit branch if the
8806         following block is not the false target of a conditional branch -
8807         we need this with any optimization that reorder or remove bblocks
8808
8809         * mini.c (optimize_branches): bug fixes
8810
8811 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
8812
8813         * mini.c (mono_method_to_ir): inline static readonly fields
8814
8815         * ssa.c (fold_tree): start cfold support for long (very simple
8816         cases only)
8817
8818         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
8819
8820 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
8821
8822         * inssel.brg: fixed memcpy (bug #44219).
8823
8824 2003-06-05  Dick Porter  <dick@ximian.com>
8825
8826         * driver.c: Set the glib log levels to not abort if g_message
8827         recurses.
8828
8829         g_set_prgname() has to happen before mini_init() so that the
8830         process handle gets the info.
8831         
8832 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
8833
8834         * driver.c: add intrins to the default optimizations to get wider
8835         exposure.
8836
8837 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
8838
8839         * mini.h: some large basic blocks will overflow a 16-bit
8840         integers for symbolic registers.
8841
8842 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
8843
8844         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
8845         (mono_arch_output_basic_block): fix bug 43499 
8846
8847 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
8848
8849         * mini.c: kill duplicated definition of mono_debug_format.
8850
8851 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
8852
8853         * mini-x86.c, arrays.cs: fixed register allocation bug.
8854
8855 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
8856
8857         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
8858
8859         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
8860
8861 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8862
8863         * mini.c:
8864         (print_method_from_ip): also print source location information if
8865         available.
8866
8867 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
8868
8869         * mini.c (mono_find_block_region): bug fix in region code
8870         (mini_method_compile): enable removing unreachable code again, but
8871         only in methods without exception clauses.
8872
8873 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
8874
8875         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
8876         Implemented arglist opcode and handling of TypedReference type.
8877         Fixed x86 call convention when a structure is returned.
8878         Minimal support for calling static vararg methods.
8879
8880 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
8881
8882         * mini.c (mini_method_compile):  always remove unreachable code,
8883         because the code in them may be inconsistent  (access to dead
8884         variables for example).
8885
8886 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
8887
8888         * driver.c, debug-mini.c: warning fixes.
8889
8890 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
8891
8892         * Makefile.am, jit.h, mini.h: install header for embedding mono.
8893
8894 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
8895
8896         * mini.c: thread-static fields are registered in mono_class_vtable(),
8897         so ensure the function is called before checking for them.
8898
8899 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
8900
8901         * mini.c (optimize_branches): fix for bug 43586
8902
8903         * jit-icalls.c (mono_llmult_ovf): added an additional check for
8904         overflow (fixes Bug #43639)
8905
8906 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
8907
8908         * mini.c, objects.cs: allow the use of stobj for primitive types.
8909
8910 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
8911
8912         * mini.c: be less strict about argument checking until we support
8913         running the verifier.
8914
8915 2003-05-27  Nick Drochak <ndrochak@gol.com>
8916
8917         * basic-long.cs: tests for (ulong)int * (ulong)int also
8918         * mini.c: use the same trick for (ulong)int * (ulong)int
8919
8920 2003-05-27  Nick Drochak <ndrochak@gol.com>
8921
8922         * basic-long.cs: add regression test for (long)int * (long)int
8923         * cpu-pentium.md: add op_bigmul specification
8924         * inssel-long32.brg: add OP_BIGMUL rule
8925         * mini-ops.h: add OP_BIGMUL
8926         * mini-x86.c: register allocator: handle case where src1 needs to be
8927         in EAX.
8928         * mini.c: substitute special BIGMUL opcode in the tree for 
8929         (long)int * (long)int
8930
8931 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
8932
8933         * jit-icalls.c: call the type ctor on field access if needed.
8934
8935 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
8936
8937         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
8938         to a method (including results of ldelema, bug#43207).
8939
8940 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
8941
8942         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
8943         colors to show exception handler blocks.
8944
8945         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
8946         (fix for pinvoke7.cs).
8947
8948 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
8949
8950         * mini.h, mini.c: ensure correct initialization order for types that
8951         require it. Prepare for lazy compilation of jit icall wrappers.
8952         Provide a name for opcode emulation to reduce unneeded mallocing.
8953
8954 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
8955
8956         * mini-x86.c: better register restoring code and profiling
8957         support for tail calls.
8958
8959 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
8960
8961         * mini.h, driver.c: prepare for leaf methods optimization.
8962
8963 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
8964
8965         * mini.c: get targets of branches before converting a method.
8966
8967 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
8968
8969         * mini.c (optimize_branches): added some experimental code (disbaled) 
8970
8971 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
8972
8973         * mini.c (optimize_branches): fix branch to branch optimization 
8974
8975         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
8976
8977         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
8978
8979         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
8980
8981         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
8982         if needed.
8983
8984 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
8985
8986         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
8987         enable use of interface variables again.
8988
8989         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
8990         I1 to registers because there is no simply way to sign extend 8bit
8991         quantities in caller saved registers on x86.
8992
8993         * inssel-float.brg: set costs of some rules to 2 so
8994         that monobure always select the arch. specific ones if supplied,
8995         regardless of the order we pass the files to monoburg.
8996
8997 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
8998
8999         * mini.c, mini-x86.c: since the magic trampoline for jumps
9000         can't patch the code directly, we do it as soon as the
9001         method gets compiled.
9002
9003 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
9004
9005         * mini-x86.c, mini.h: introduce a new patching method
9006         to support CEE_JMP and tail calls.
9007         * mini.c: obey tail.call. Don't precompile methods target
9008         of CEE_JMP.
9009         * tramp-x86.c: new trampoline code to handle methods
9010         reached through a jump.
9011
9012 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
9013
9014         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
9015         bit values to registers
9016
9017 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
9018
9019         * mini.c (mono_compile_get_interface_var): share interface
9020         variables if possible.
9021
9022 2003-05-16  Martin Baulig  <martin@ximian.com>
9023
9024         * debug-mini.c (mono_init_debugger): New function to initialize
9025         the debugger.  This is not in the debugger since it needs to
9026         access some of mini's internals.
9027
9028 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
9029
9030         * mini.c (mono_method_to_ir): inlining fixes/cleanups
9031
9032 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
9033
9034         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
9035         for value type handling.
9036
9037 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
9038
9039         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
9040         (mono_method_check_inlining): enable inlining of all kinds of wrappers
9041
9042 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
9043
9044         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
9045           the constructor through a proxy.
9046
9047 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
9048
9049         * jit-icalls.c, inssel.brg: fixes to array element address
9050         calculations.
9051
9052 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
9053
9054         * mini-x86.c (is_regsize_var): allocate pointer to registers
9055
9056 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
9057
9058         * driver.c: fixed typo, added intrins to the set of optimizations
9059         tested with regressions.
9060
9061 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
9062
9063         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
9064         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
9065         test case.
9066
9067 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
9068
9069         * inssel.brg: remove some common pop instructions without side effects
9070
9071 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
9072
9073         * inssel-x86.brg: fixed thinko in int to double conversions.
9074
9075 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
9076
9077         * mini.c, jit-icalls.c: added runtime thread-static variable support.
9078
9079 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
9080
9081         * inssel-long32.brg: two more missing instructions.
9082
9083 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
9084
9085         * mini.c (mono_emit_call_args): set the cil_code for all arguments
9086         if not already set.
9087
9088 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
9089
9090         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
9091         correctly.
9092
9093         * basic-float.cs: Added tests for negative zero.
9094
9095 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
9096
9097         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
9098         a couple of missing operations for long casts, with test cases.
9099
9100 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9101
9102         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
9103
9104 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
9105
9106         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
9107         code size estimation.
9108
9109 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
9110
9111         * mini.c (mono_jit_create_remoting_trampoline): make it work with
9112         abstract methods (fix bug 42542)
9113
9114         * aot.c: add ability to handle array types
9115         
9116 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
9117
9118         * mini.c: Call the _specific versions of the object allocation
9119         functions if possible.
9120
9121 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
9122
9123         * driver.c: call setlocale ().
9124
9125 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
9126
9127         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
9128         windows build.
9129
9130 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
9131
9132         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
9133
9134         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
9135         wrappers (fix bug 42122)
9136
9137 2003-05-04  Martin Baulig  <martin@ximian.com>
9138
9139         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
9140
9141         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
9142         s/mini_set_defaults/mono_set_defaults/g.
9143
9144 2003-05-04  Martin Baulig  <martin@ximian.com>
9145
9146         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
9147
9148 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
9149
9150         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
9151         (reported by Don Roberts).
9152
9153 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
9154
9155         * mini.c: temporarily work around two bugs for this release.
9156
9157 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
9158
9159         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
9160         that contains -export-dynamic and it makes using the ld script
9161         useless.
9162         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
9163
9164 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
9165
9166         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
9167         specific cpu.
9168
9169 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
9170
9171         * mini.c: make sure leave calls all the needed finally blocks,
9172         even when the target jumps out of multiple exception clauses.
9173
9174 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
9175
9176         * ldscript, Makefile.am: add linker script to reduce the number of
9177         exported symbols (should also fix the issues with libwine defining
9178         some of the same symbols in io-layer).
9179
9180 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
9181
9182         * driver.c (mini_main): Avoid assertion when no file name is given on 
9183         the command line.
9184
9185 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
9186
9187         * driver.c: added --version/-V command line option.
9188         Added the inline optimization in the regression tests.
9189
9190 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
9191
9192         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
9193         to the type in the method signature (fixes bug#42134).
9194
9195 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
9196
9197         * mini.c: when inlining, check this is not null only when needed (bug #42135).
9198
9199 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
9200
9201         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
9202
9203 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9204
9205         * driver.c: fixed bug #42100.
9206
9207 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
9208
9209         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
9210
9211 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
9212
9213         * mini.c: moved most of the code required to do inlining to its own
9214         function so it can be reused. Inline also ctors if appropriate.
9215
9216 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
9217
9218         * Makefile.am: Link with -export-dynamic so shared libs loaded by
9219         the runtime can call mono API functions.
9220
9221 2003-04-27  Martin Baulig  <martin@ximian.com>
9222
9223         * debug-mini.c (mono_debug_init_method): Added
9224         `guint32 breakpoint_id' argument; if the method has a breakpoint,
9225         send a notification to the debugger.
9226
9227         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
9228         running in the Mono Debugger, just pass the breakpoint number to
9229         mono_debug_init_method().
9230
9231         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
9232
9233 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
9234
9235         * mini.c: allow some more unsafe compares.
9236
9237 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
9238
9239         * mini-x86.c, Makefile.am: make distcheck works (partially from
9240         a patch by Richard Lee <r.h.lee@attbi.com>).
9241         * regset.c, regset.h: removed, they are unused.
9242
9243 2003-04-25  Dick Porter  <dick@ximian.com>
9244
9245         * driver.c: Usage reports the name as 'mono' not 'mini'
9246         * exceptions-x86.c: Build and run on freebsd
9247
9248 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
9249
9250         * Makefile.am: install the program with the 'mono' name and
9251         the library as libmono instead of mini and libmini.
9252
9253 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
9254
9255         * driver.c: provide the APIs for the embedding interface of the old jit.
9256
9257 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
9258
9259         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
9260
9261 2003-04-23  Martin Baulig  <martin@ximian.com>
9262
9263         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
9264
9265         * driver.c: Added `--debug' command line argument to enable
9266         debugging support.
9267
9268 2003-04-23  Martin Baulig  <martin@ximian.com>
9269
9270         * debug.[ch]: Removed.  The code is now in
9271         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
9272
9273         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
9274         last six months.
9275
9276 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
9277
9278         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
9279
9280 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9281
9282         * mini.c:
9283         (mini_cleanup): moved mono_runtime_cleanup call after the call to
9284         mono_domain_finalize.
9285         (mini_method_compile): use mono_method_profile* if the the option is
9286         enabled.
9287
9288 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
9289
9290         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
9291         methods with their wrapper.
9292
9293         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
9294         methods with their wrapper.
9295
9296         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
9297         their wrapper.
9298
9299         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
9300         wrapper.
9301
9302         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
9303         methods.
9304
9305 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
9306
9307         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
9308
9309 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
9310
9311         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
9312         of the mempool. This is slightly faster and uses less memory
9313
9314 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
9315
9316         * mini.c: avoid O(n) allocation for variables.
9317
9318 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
9319
9320         * mini.c: handle items on the stack after inlining methods.
9321
9322 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
9323
9324         * mini.c: make the method->opcode optimization dependent
9325         on MONO_OPT_INSTRINS and do it lazily.
9326
9327 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
9328
9329         * driver.c: print overall results at the end of regression run.
9330
9331 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
9332
9333         * inssel.brg: don't overwrite symbolic registers.
9334
9335 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
9336
9337         * inssel-x86.brg: fix conversion from long to float.
9338
9339 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
9340
9341         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
9342
9343 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
9344
9345         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
9346
9347         * driver.c: Added --print-vtable option as in the old JIT.
9348
9349 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
9350
9351         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
9352
9353 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
9354
9355         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
9356
9357 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
9358
9359         * mini.c regalloc.c regalloc.h: Fix memory leak.
9360
9361 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
9362
9363         * aot.c (mono_aot_get_method): register all used strings
9364
9365 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
9366
9367         * mini.c: always intern strings references with ldstr at compile time.
9368
9369 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
9370
9371         * Makefile.am: add BUILT_SOURCES.
9372
9373 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
9374
9375         * driver.c: give a better error message when the assembly to execute
9376         doesn't have an entry point.
9377
9378 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
9379
9380         * Makefile.am: added hack for automake
9381
9382         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
9383         correct sematics.
9384
9385         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
9386
9387 22003-04-07  Martin Baulig  <martin@ximian.com>
9388
9389         * Makefile.am: Added Makefile.am.
9390
9391         * debugger-main.c: Removed, this is now in the debugger where it
9392         belongs.
9393
9394         * mini.pc.in: Call this package `mini' for the moment.
9395
9396
9397
9398
9399