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