2002-08-19 Nick Drochak <ndrochak@gol.com>
[mono.git] / mono / jit / ChangeLog
1 2002-08-19  Nick Drochak <ndrochak@gol.com>
2
3         * x86.brg (mono_llmult_ovf): Simplified the code greatly by refactoring
4         the algebraic form we are using.  This also eliminated a silly overflow
5         of the intermediate result that was causing troubles.
6
7 2002-08-16  Nick Drochak <ndrochak@gol.com>
8
9         * x86.brg (mono_llmult_ovf): Flip ALL the bits, dummy. Now negative numbers
10         work.
11
12 2002-08-15  Nick Drochak <ndrochak@gol.com>
13
14         * x86.brg (mono_llmult_ovf): Fix so it throws an overflow when result
15         will not fit in 64 bits.  Fixes bug #27375.
16
17 Wed Aug 14 17:31:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
18
19         * exception.c: updates for API changes in metadata/.
20
21 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
22
23         * jit.c (mono_jit_init): use  ((gpointer)-1) as end_of_stack
24         address for the main thread.
25
26 2002-08-12  Dietmar Maurer  <dietmar@ximian.com>
27
28         * jit.c (mono_analyze_stack): added support for Thread::Abort ()
29
30 2002-08-08  Dietmar Maurer  <dietmar@ximian.com>
31
32         * exception.c (arch_handle_exception): simply return and let the
33         libpthread/kernel restore the context. This should work on recent
34         versions of linuxthreads.
35
36         * jit.c (mono_runtime_install_handlers): switch back to use
37         sigaction from libpthreads. As long as this does not make problems
38         we should use this instead of syscall.
39
40 2002-08-07  Dietmar Maurer  <dietmar@ximian.com>
41
42         * jit.c: removed the createdelegate icall
43         (mono_analyze_stack): special case Array::Address()
44
45 2002-08-06  Dietmar Maurer  <dietmar@ximian.com>
46
47         * emit-x86.c (arch_emit_prologue): make the call to
48         mono_get_lmf_addr relocatable.
49         (arch_jit_compile_cfg): do not waste memory
50         (arch_jit_compile_cfg): use a mempool to store native code. This
51         improves locality of code.
52
53 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
54
55         * jit.c (mono_analyze_stack): impl. CEE_MONO_RETOBJ
56
57 2002-07-30  Sergey Chaban <serge@wildwestsoftware.com>
58
59         * x86.brg (LOCALLOC): under Windows, if allocation size is bigger
60         than one page, it's necessary to allocate memory incrementally,
61         in page-size steps, performing stack-touch every time.
62         Also added LOCALLOC(CONST_I4) implementation.
63
64 2002-07-27  Dietmar Maurer  <dietmar@ximian.com>
65
66         * jit.c (mono_get_runtime_method): code cleanup
67
68         * x86.brg: we do not need to save EAX/ECX/EDX in stmt:
69
70 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
71
72         * jit.c (mono_analyze_stack): added CEE_TAIL (but it is ignored)
73
74 Wed Jul 24 13:02:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
75
76         * jit.c, jit.h, exception.c: implemented stack walking function.
77
78 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
79
80         * x86.brg (ARG_OBJ): removed zero sized object warning 
81
82 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
83
84         * jit.c (mono_allocate_excvar): mark excvar as volatile
85
86         * emit-x86.c (enter_method): use arch_get_argument_info to get
87         stack layout.
88
89         * jit.c (mono_analyze_stack): use arch_get_argument_info to get
90         stack layout.
91         (mono_analyze_stack): removed unused code
92
93         * emit-x86.c (arch_allocate_arg): impl.
94
95 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
96
97         * emit-x86.c (arch_allocate_var): fix alignment bug
98
99         * x86.brg (X86_CALL_BEGIN): add argument padding before emitting a call
100
101         * jit.c (mono_analyze_stack): s/k/k + 1/
102
103         * x86.brg (LOCALLOC): align to MONO_FRAME_ALIGNMENT
104
105         * emit-x86.c (arch_get_argument_info): impl.
106
107 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
108
109         * exception.c (arch_handle_exception): Memory leak fix.
110
111 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
112
113         * jit.c (mono_analyze_stack): avoid recursive inlining
114
115 Fri Jul 19 18:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
116
117         * emit-x86.c: temporary workaround for gcc bug.
118         * jit.h, jit.c, mono.c: move mono_jit_image to jit.c.
119         Don't include config.h in headers.
120
121 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
122
123         * x86.brg: correctly align valuetype arguments on the stack
124
125         * jit.c (mono_analyze_stack): do not compute frame size here.
126
127         * x86.brg: use macros to avoid code duplication for CALL opcodes,
128         compute frame size in x86.brg
129
130 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
131
132         * x86.brg (ARG_OBJ): allow zero sized ARG_OBJ
133
134         * exception.c (arch_handle_exception): removed duplicated code,
135         added support for exception filters
136
137         * jit.c (mono_jit_compile_method): support exception filters
138
139 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
140
141         * jit.c (mono_analyze_stack CEE_DIV): added fix from Zoltan Varga
142         (bug #27423)
143         * jit.c: s/ISSTRUCT/MONO_TYPE_ISSTRUCT/ 
144
145         * helpers.c (mono_map_ldind_type): added suggested changes from
146         Zoltan Varga (support MONO_TYPE_U), variou 64bit fixes
147
148         * jit.c (mono_analyze_stack): remove the vtype pointer from the
149         stack (fix bug #27420)
150
151 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
152
153         * x86.brg (CALL_VOID): fix bug #27751
154         (CONV_R_UN) use reg2 instead of reg1 for the negative check /fix bug 27849.
155
156         * jit.c (mono_analyze_stack): adjust valuetype size for pinvoke calls
157
158 i2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
159
160         * x86.brg (freg): new rule freg: CALL_R8 (this, reg)
161
162 2002-07-10  Dietmar Maurer  <dietmar@ximian.com>
163
164         * emit-x86.c (arch_emit_prologue): added code to save LMF
165
166 2002-07-04  Dietmar Maurer  <dietmar@ximian.com>
167
168         * x86.brg (LOCALLOC): added fix from Zoltan Varga (for bug #27396) 
169
170 2002-07-05  Martin Baulig  <martin@gnome.org>
171
172         * debug.c (mono_debug_add_method): Fix a bug in the `begin_scope' and
173         `end_scope' calculations when linear scan register allocation is disabled.
174
175 2002-07-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
176
177         * mono.c: removed the "RESULT: X" message.
178
179 2002-07-01  Dietmar Maurer <dietmar@ximian.com>
180
181         * exception.c (arch_get_call_finally): restore caller saved
182         register used by global reg. allocation when calling finally
183         handlers (fixes bug #24943).
184
185 2002-07-01  Dick Porter  <dick@ximian.com>
186
187         * jit.c (mono_jit_exec): Removed unneeded argument to
188         mono_runtime_run_main()
189
190 2002-06-28  Martin Baulig  <martin@gnome.org>
191
192         * debug.c (debug_generate_method_lines, mono_debug_add_method): Make methods
193         start on the nop instruction to make single-stepping into an already-JITed
194         method work.
195
196 2002-06-26  Martin Baulig  <martin@gnome.org>
197
198         * debug.c (mono_debug_source_location_from_address): Added
199         `guint32 *line_number' argument.  If it's not NULL, store the line number
200         there and return the file name without the line number.
201
202         * exception.c (ves_icall_get_trace): Fill in `sf->filename' and `sf->line'.
203         (ves_icall_get_frame_info): Likewise.
204
205 2002-06-25  Dick Porter  <dick@ximian.com>
206
207         * jit.c (mono_jit_exec): Pass the assembly to mono_runtime_run_main
208
209 2002-06-22  Martin Baulig  <martin@gnome.org>
210
211         * debug.c (mono_debug_source_location_from_address): Small fix, an
212         unsigned number can never be smaller than zero, make that check
213         actually work.
214
215 2002-06-19  Dietmar Maurer  <dietmar@ximian.com>
216
217         * exception.c (ves_icall_get_trace): new method to get the stack
218         trace from a Exception.
219
220 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
221
222         * jit.c (check_inlining): do not inline functions containing 
223         calls to stack query functions
224
225         * exception.c (ves_icall_get_frame_info): impl.
226
227 Tue Jun 18 10:21:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
228
229         * invoke.c: marshal simple arrays correctly.
230
231 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
232
233         * x86.brg: added inlined versions of Math.Sin, Math.Cos, Math.Sqrt
234
235         * jit.c (mono_analyze_stack): impl. STARG
236         (mono_analyze_stack): impl. LDARGA
237
238         * exception.c (arch_handle_exception): correctly restore register
239         values when unwinding the stack (fixes bug 25698)
240
241 2002-06-09  Martin Baulig  <martin@gnome.org>
242
243         * debug.c (mono_debug_open_image): For MONO_DEBUG_FORMAT_DWARF2_PLUS,
244         the `%s-debug.s' file is in the same directory than its assembly.
245
246 Sat Jun 1 13:24:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
247
248         * message.c, emit-x86.c: kill warnings.
249
250 2002-05-31  Dietmar Maurer  <dietmar@ximian.com>
251
252         * x86.brg: buf fix in REMOTE_STIND_OBJ
253         (mono_ldvirtftn): impl.
254         (mono_ldintftn): impl.
255         (mono_ldftn): impl.
256
257 Fri May 31 13:26:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
258
259         * mono.c: added --config command line option.
260
261 Fri May 31 12:34:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
262
263         * jit.c, jit.h: collect statistics about the number of basic blocks.
264
265 2002-05-31  Martin Baulig  <martin@gnome.org>
266
267         * debug.c (mono_debug_address_from_il_offset): New public function.
268         (mono_debug_add_method): Improved local variable info: correctly handle
269         variables in registers and their start/end scopes.
270
271 2002-05-30  Martin Baulig  <martin@gnome.org>
272
273         * debug-dwarf2.c (dwarf2_write_string): Use "0x%lx" as fprintf() format,
274         not "%p" which seems to be broken on Windows/mingw32.
275
276 2002-05-30  Dietmar Maurer  <dietmar@ximian.com>
277
278         * x86.brg (reg): bug fix in LOCALLOC
279
280         * mono.c (main): new switch --nointrinsic to disable memcpy opt.
281
282         * x86.brg: added block copy/init optimizations from 
283         Serge (serge@wildwestsoftware.com)
284  
285 Thu May 30 14:13:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
286
287         * invoke.cs: lookup P/Invoke method address only when needed.
288
289 2002-05-29  Dietmar Maurer  <dietmar@ximian.com>
290
291         * x86.brg: bug fix in REMOTE_STIND_OBJ
292
293         * invoke.c (arch_create_native_wrapper): handle pointers to value types
294
295         * helpers.h: use mono_ prefix for all functions
296
297         * jit.c (mono_analyze_stack): fixed SIZEOF
298
299         * x86.brg: impl. LOCALLOC, INITBLK
300
301 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
302
303         * x86.brg: impl. CKFINITE 
304
305         * jit.c (mono_analyze_stack): impl. CEE_CALLI
306
307         * x86.brg (JMP): impl. JMP opcode
308
309 2002-05-27  Dietmar Maurer  <dietmar@ximian.com>
310
311         * jit.c (mono_cfg_new): reserve additional space to store ESP when
312         calling finally handlers.
313
314         * exception.c (arch_get_call_finally): save ESP before calling
315         finally handler.
316
317         * helpers.c (map_arg_type): move some generic helper function into
318         this file.
319
320         * mono.c (usage): new option --breakonex 
321
322         * exception.c (arch_exc_is_caught): only return FALSE if really
323         unhandled.
324
325         * jit.c (mono_thread_abort): free jit_tls
326
327 2002-05-24  Dietmar Maurer  <dietmar@ximian.com>
328
329         * x86.brg (stmt): use memmove to cope with overlapping
330         blocks. This is not required by the specs, so we can remove it
331         later if it turns out to be too slow (and use memcpy).
332
333         * jit.c (mono_analyze_stack): moved const. folding from x86.brg
334
335         * x86.brg: CPBLK impl.
336
337         * emit-x86.c (tree_emit): modified to support 3 nonterminals per
338         rule (used for CPBLK).
339
340 Thu May 23 18:43:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
341
342         * mono.c: remove generated code from hash when benchmarking/testing
343         method compilation.
344         * invoke.cs: special case string ctors.
345
346 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
347
348         * *.c: code cleanups - tried to separate architecture dependent things. 
349
350 2002-05-23  Martin Baulig  <martin@gnome.org>
351
352         * debug.c (mono_debug_open): Don't call mono_debug_add_image().
353         (mono_debug_write_symbols): Only recreate the symbol file if
354         necessary.
355
356         * debug-private.h (MonoDebugHandle): Added `dirty' flag.
357
358         * mono.c (main): Call mono_debug_add_image() here.
359
360         * jit.c (mono_thread_abort): If we have debugging support, call
361         mono_debug_make_symbols() and G_BREAKPOINT().
362
363         * exception.c (arch_handle_exception): Don't G_BREAKPOINT() if we get
364         an unhandled exception.
365
366 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
367
368         * delegate.c: move the thread pool to metadata/threadpool.c, code
369         cleanup.
370
371 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
372
373         * exception.c (arch_exc_is_catched): impl. MS like exception
374         handling (added a check for unhandled exceptions)
375
376 2002-05-22  Martin Baulig  <martin@gnome.org>
377
378         * debug-dwarf2-plus.c (mono_debug_open_assembly_dwarf2_plus): Only run
379         the assembler if necessary, ie. the assembler file is newer than the
380         symbol file or the symbol file does not exist.
381
382         * debug.c: Added "update_on_exit" argument to recreate the symbol file
383         when the JIT exists.
384
385         * debug-dwarf2.c: Produce assembler code which is free of comments and
386         extra whitespaces so that it's suitable for `as -f'.
387
388 2002-05-22  Martin Baulig  <martin@gnome.org>
389
390         * debug-dwarf2.c (dwarf2_write_section_end): Removed.  This is not needed
391         and not supported by all assemblers.
392         (dwarf2_write_2byte): Use ".word" instead of ".2byte" since ".2byte" is a
393         GNU extension.
394
395         * mono.c (--debug): Small fix in the argument parsing.
396
397 2002-05-22  Martin Baulig  <martin@gnome.org>
398
399         * debug.c: Added "dont_assemble" and "dont_precompile" argument for dwarf-plus.
400
401         * mono.c: Applied patch from Miguel:
402         (--debug): This is now a `--debug=[FORMAT]' argument where FORMAT defaults
403         to dwarf-plus.
404
405 2002-05-21  Martin Baulig  <martin@gnome.org>
406
407         * debug.c (mono_debug_source_location_from_address): Added support for the
408         dwarf2-plus format.
409
410 2002-05-21  Martin Baulig  <martin@gnome.org>
411
412         * debug.c (mono_debug_source_location_from_address): New function.
413         (mono_debug_il_offset_from_address): New function.
414
415         * exception.c (arch_handle_exception): If we have debugging support, include
416         information about the source location and IL offset in the stack trace.
417
418 2002-05-21  Dietmar Maurer  <dietmar@ximian.com>
419
420         * jit.c (mono_analyze_stack): LDARG uses 16bit argument (fix bug
421         #25058)  
422
423         * x86.brg (stmt): removed unnecessary assertion
424
425         * jit.c (check_inlining):  we cant inline throw instructions
426         (because it breaks some basic block requirements)
427
428 2002-05-21  Martin Baulig  <martin@gnome.org>
429
430         * debug-private.h (MonoDebugFlags): New enum typedef.
431
432         * debug.c (mono_debug_open): Added a few useful arguments.  See the manpage
433         for details.
434
435 2002-05-21  Martin Baulig  <martin@gnome.org>
436
437         * debug.c (mono_debug_open_file): Renamed to mono_debug_open(), now takes
438         a `MonoAssembly *' argument instead of a `char *filename' one.  Also added
439         `const char **args' argument.
440
441         * mono.c (mono_jit_assembly): Renamed to mono_jit_compile_image(), added
442         `int verbose' argument and made it public.
443         (mono_jit_compile_class): New public function,  moved the code to compile
444         all methods in a class here from main().
445         (--compile): The argument can now also be an image (in `@imagename' format).
446         Updated documentation for this command line argument.
447         (--precompile): New command line argument to precompile an image/class/method
448         before executing the main app.  This argument can be given multiple times.
449         (--break): Renamed the "--debug" command line argument to "--break".
450         (--debug): New command line argument to specify the debugging format.
451         (--stabs, --dwarf, --dwarf-plus): Removed, obsoleted by "--debug".
452         (--debug-args): New command line argument.  This is a comma-separated list of
453         additional arguments for the symbol writer.
454         (usage): Beautified the help text a bit.
455
456         * debug-dwarf2-plus.c (mono_debug_open_assembly_dwarf2_plus): Use the new
457         public mono_jit_compile_image() function rather than duplication this
458         functionality here.
459
460 2002-05-21  Martin Baulig  <martin@gnome.org>
461
462         * debug-dwarf2-plus.c: This is now working again :-)
463
464         * debug.c (mono_debug_open_file): When using MONO_DEBUG_FORMAT_DWARF2_PLUS,
465         we create two MonoDebugHandles: one for MONO_DEBUG_FORMAT_DWARF2_PLUS and
466         one for the fallback MONO_DEBUG_FORMAT_DWARF2.
467
468 2002-05-21  Martin Baulig  <martin@gnome.org>
469
470         * jit.c (mono_debug_handle): Removed this global variable.
471
472         * debug.c (mono_debug_close): Removed.
473         (mono_debug_cleanup): New global function.
474         (mono_debug_add_image): New global function.
475         (mono_debug_handle_from_class): New global function.
476         (mono_debug_write_symbols): New global function.
477         (mono_debug_add_type): Removed `MonoDebugHandle *' argument.
478         (mono_debug_add_method): Likewise.
479
480 2002-05-21  Martin Baulig  <martin@gnome.org>
481
482         Work around a hard-to-fix bug in GDB and create a single dwarf/stabs
483         file for all assemblies.  Currently, the JIT doesn't put all methods
484         from a single assembly into a continuous region of memory.  We were
485         previously creating valid DWARF 2 files for this, but unfortunately
486         GDB's symbol tables get messed up when it reads more than one such file.
487
488         * debug-private.h (AssemblyDebugInfo): Moved `f', `producer_name',
489         `next_idx', `methods', `type_hash', `source_files' and `format'
490         into the MonoDebugHandle.
491
492         * debug.c (mono_debug_get_type): This now operates on the MonoDebugHandle,
493         not on the AssemblyDebugInfo.
494         (mono_debug_open_file): Moved some stuff here from mono_debug_open_assembly().
495
496         * debug-dwarf2.c (mono_debug_write_assembly_dwarf2): Renamed into
497         mono_debug_write_dwarf2().
498         (mono_debug_open_assembly_dwarf2): Removed.
499         (mono_debug_close_assembly_dwarf2): Removed.
500
501         * debug-stabs.c (mono_debug_write_assembly_stabs): Renamed into
502         mono_debug_write_stabs().
503         (mono_debug_open_assembly_stabs): Removed.
504         (mono_debug_close_assembly_stabs).
505
506         * debug-dwarf2-plus.c: This is currently broken. :-(
507
508 2002-05-20  Martin Baulig  <martin@gnome.org>
509
510         * debug.h (mono_debug_format): New global variable.
511         (MonoDebugFormat): Added MONO_DEBUG_FORMAT_NONE.
512
513         * debug-private.h (MonoDebugHandle): Added `objfiles' field which is
514         a whitespace separated list of symbol files.
515         (AssemblyDebugInfo): Added `objfile' filed which is the name of the
516         symbol file.
517
518         * mono.c (main): Pass the assembly file name to mono_debug_open_file().
519
520         * debug.c (mono_debug_make_symbols): Link all symbol files into a big
521         `<assemblyname>.o' symbol file.
522
523 2002-05-20  Martin Baulig  <martin@gnome.org>
524
525         * debug.c (debug_load_method_lines): Check whether the assembly file
526         is newer than the IL file and recreate the IL file if necessary.
527
528 2002-05-20  Miguel de Icaza  <miguel@ximian.com>
529
530         * mono.c Updated copyright years. 
531
532 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
533
534         * mono.c (usage): Relayout command line options.
535
536 2002-05-17  Dietmar Maurer  <dietmar@ximian.com>
537
538         * x86.brg (reg): fixed array bound check
539
540         * emit-x86.c (enter_method): print method signature
541
542         * exception.c (arch_handle_exception): set trace info before we
543         call handlers.
544
545 2002-05-16  Dietmar Maurer  <dietmar@ximian.com>
546
547         * jit.c (mono_find_final_block): make it work with mcs
548
549         * x86.brg: buf fix. if exception variable is allocated to a register. 
550
551         * jit.c (mono_find_final_block): bug fix.
552
553 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
554
555         * delegate.c (arch_end_invoke): fix bug #24653, simplified the
556         code using new runtime_invoke feature.
557
558         * jit.c (mono_analyze_flow): try blocks are followed by handler
559         blocks, so we need to add all handler blocks as succesors.
560         (mono_thread_start_cb): set end_of_stack
561
562         * exception.c (arch_handle_exception): correctly save/restore caller
563         saved regs.
564
565         * emit-x86.c (arch_emit_prologue): correctly save/restore caller
566         saved regs.
567
568         * jit.c (mono_cfg_new): allocate space for caller saved registers.
569
570 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
571
572         * jit.c: only use one TLS slot to store jit data
573
574         * exception.c (arch_handle_exception): print function signature,
575         use thread relative end_of_stack
576
577 2002-05-13  Dietmar Maurer  <dietmar@ximian.com>
578
579         * jit.c (OPT_BOOL): new. opt. for boolean variables - we simply
580         store them as 32 bit integers.
581         (mono_analyze_stack): we need to generate a temporary var for
582         SHL/SHR because the tree allocator can fail otherwise 
583
584         * exception.c (arch_handle_exception): EIP now points to the call
585         instruction, not to the instruction after the call. This fixes the
586         bug reported by Linus Upson (tests/exception8.cs)
587
588 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
589
590         * jit.c (mono_analyze_flow): always allocate the forest array
591         (mono_stack_duplicate_used_var): impl.
592         (mono_copy_used_var): impl.
593
594         * x86.brg: bug fix in SHR/SHL
595
596         * emit-x86.c (arch_emit_prologue): check if live_in_set != NULL
597
598 2002-05-11  Sergey Chaban <serge@wildwestsoftware.com>
599
600         * mono.c: new --fast-iconv command line option
601         to enable fast FP-to-integer conversion code.
602         * jit.c, jit.h: added global variable to store state
603         for the above option. This optimization is disabled
604         by default.
605         * x86.brg: added code to emit fast FP-to-integer
606         conversion sequences.
607
608 2002-05-10  Dan Lewis  <dihlewis@yahoo.co.uk>
609
610         * emit-x86.c: simple definite assignment analysis optimization for
611         uninitialized locals.
612
613 Fri May 10 15:43:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
614
615         * x86.brg, emit-x86.c: patch the branch targets with x86_patch().
616
617 2002-05-10  Dietmar Maurer  <dietmar@ximian.com>
618
619         * linear-scan.c (mono_update_gen_set): improvement/bug fix
620
621         * x86.brg: added additional rules to handle global allocated registers
622
623         * mono.c (usage): the option is called --nols, and it dissables
624         linear scan.
625
626         * x86.brg: better LDIND_R4, LDIND_R8, STIND_R4, STIND_R8
627
628 2002-05-09  Dietmar Maurer  <dietmar@ximian.com>
629
630         * linear-scan.c: linear scan reg. allocation and data flow analysis
631         use Paolo's great bitset implementation.
632
633         * jit.c (arch_allocate_var): add live range info
634         (mono_cfg_add_successor): create list of successors for basic
635         blocks.
636
637         * mono.c (main): new option --ls to enable linear scan
638
639         * exception.c (arch_handle_exception): print instruction pointer
640         relative to method start address.
641
642         * jit.c (mono_print_ctree): print register number if locals are
643         allocate in registers.
644
645         * emit-x86.c (arch_emit_prologue): initialize reg. allocated locals
646         (arch_emit_epilogue): take care when restoring save registers,
647         because the stack pointer may has changed.
648
649         * x86.brg: s/VAROFFSET/VARINFO/
650         modified to support global register allocation
651
652 Mon May 6 15:38:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
653
654         * jit.h, jit.c, emit-x86.c: x86 cpu detection code from Sergey.
655
656 2002-05-03  Sergey Chaban <serge@wildwestsoftware.com>
657
658         * x86.brg: more coni4 optimizations
659         MUL: generate optimized code for some consts other
660         than powers of 2 (hardcoded impl. for 3, 5, 10 etc.);
661         DIV_UN: multiply with reciprocal instead of dividing;
662
663 2002-05-03  Dietmar Maurer  <dietmar@ximian.com>
664
665         * x86.brg: use VAROFFSET macro
666
667         * emit-x86.c (tree_emit): allocate space for spilled regs in
668         activation frame instead of pushing them to the stack.
669
670         * x86.brg: replace BXX with CBRANCH/COMPARE
671         replaced CXX CSET/COMPARE
672
673         * emit-x86.c (arch_allocate_regs): improved register allocation
674
675 2002-05-02  Dietmar Maurer  <dietmar@ximian.com>
676
677         * delegate.c (mono_delegate_cleanup): signal semaphore in order to
678         exit threads.
679
680 2002-04-30  Dick Porter  <dick@ximian.com>
681
682         * mono.c (main): Tell glib to not abort when g_log() etc print
683         recursively
684
685 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
686
687         * x86.brg: opt. LDELEMA impl.
688         (MUL) use shift when possible.
689         (DIV) use shift when possible.
690         impl. various opt. with coni4
691
692         * exception.c (arch_handle_exception): use ctx->SC_EBP in
693         end_of_stack check as suggested by Linus Upson <linus@linus.com>
694
695 2002-04-29  Dietmar Maurer  <dietmar@ximian.com>
696
697         * x86.brg (LDLEN, UNBOX): removed unnecessary NULL check.  
698
699         * exception.c: included the Freebsd patch from Sandro Tolaini
700         <sandro@focuseek.com>
701
702 Mon Apr 29 15:18:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
703
704         * mono.c, jit.c: use mono_runtime_run_main ().
705
706 2002-04-29  Dietmar Maurer  <dietmar@ximian.com>
707
708         * jit.c (mono_analyze_stack): dont call methods on Object with
709         METHOD_ATTRIBUTE_FINAL directly because it breaks remoting.
710
711         * x86.brg: added more CONV_U rules
712
713         * jit.c (mono_analyze_stack): avoid recursive call of virtual
714         methods: fixes Bug #23778 
715         (mono_analyze_stack): emit right CONV_UX opcodes: fixes bug 23547
716
717         * exception.c (arch_handle_exception): only g_assert(cleanup) if
718         we really need it.
719
720 2002-04-27      Patrik Torstensson <patrik.torstensson@intel.com>
721
722         * x86.brg: fixed bug in CONV_I8 (invalid stack correction)
723
724 2002-04-27  Martin Baulig  <martin@gnome.org>
725
726         * jit.h (MonoFlowGrap): Renamed `epilogue_begin' to `epilogue_end',
727         there's already `epilog' so we don't need `epilogue_begin'.
728
729         * debug.c (mono_debug_add_method): Use `cfg->epilogue_end' to get the
730         size of the method's code.
731
732 2002-04-25  Martin Baulig  <martin@gnome.org>
733
734         * debug-dwarf2.c (dwarf2_write_string_type): Reflect latest MonoString
735         changes.
736
737 2002-04-25  Dietmar Maurer  <dietmar@ximian.com>
738
739         * x86.brg: enable stmt: STIND_I4 (addr, coni4) again,
740         added CONV_OVF_I4 (fix bug #23808)
741
742 2002-04-23  Dietmar Maurer  <dietmar@ximian.com>
743
744         * x86.brg: code cleanup - use x86_patch ()
745
746         * jit.c (mono_analyze_stack): only use MB_TERM_CHECKTHIS when necessary
747         (mono_analyze_stack): don't store constants in temp. variables for CEE_DUP
748
749         * x86.brg (stmt): removed stmt: STIND_I4 (addr, coni4) rule
750         because it slows down performance.
751
752 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
753
754         * emit-x86.c: enter_method handles 8-byte aligned parameters.
755
756 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
757
758         * jit,h, jit.c, x86.brg: NEWOBJ_SPEC and NEWARR_SPEC terminals for
759         non-shared code.
760
761 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
762
763         * jit.c (check_inlining): added statistics about inlineing
764
765         * mono.c (usage): new switch --noinline to disable inlining
766
767         * jit.c (mono_analyze_stack): added a check for (this!=NULL) if we
768         inline methods (to keep semantics)
769
770         * x86.brg: added constant folding for inegers 
771
772         * emit-x86.c (tree_allocate_regs): handle the special case when
773         chain rules need a register.
774
775 2002-04-19  Dietmar Maurer  <dietmar@ximian.com>
776
777         * invoke.c (arch_create_native_wrapper): do not save LMF for Strings
778
779         * jit.c (check_inlining): better inlining support
780
781 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
782         
783         * x86.brg: LDLEN uses max_length instead of bounds[0]
784         * jit.c: support for new szarray format
785
786 2002-04-18  Dietmar Maurer  <dietmar@ximian.com>
787
788         * jit.c (check_inlining): added inlining support
789
790 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
791
792         * x86.brg: optimized version of castclass and isinst
793
794 Wed Apr 17 12:34:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
795
796         * emit-x86.c, invoke.c: track time spent compiling.
797
798 Wed Apr 17 10:58:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
799
800         * emit-x86.c, invoke.c: call profile callbacks if needed.
801         * jit.c, jit.h, mono.c: add --profile command line option.
802
803 2002-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
804
805         * jit.h: included mono/io-layer/io-layer.h to avoid breaking
806         compilation under windows when upgrading mingw and w32api to 
807         version 1.3 (thanks Dick!).
808
809 2002-04-15  Patrik Torstensson <patrik.torstensson@labs2.com>
810
811         * jit.c: changed the array icalls to use full names
812
813 2002-04-15  Dietmar Maurer  <dietmar@ximian.com>
814
815         * x86.brg: check the this pointer before calling
816         non-virtual functions
817
818         * emit-x86.c (arch_emit_prologue): initialize local vars.
819
820         * x86.brg: removed incredible clumsy code
821
822 2002-04-13  Martin Baulig  <martin@gnome.org>
823
824         * debug-dwarf2.c (dwarf2_write_variable_location): New static func to write
825         the location of a variable.
826         (dwarf2_write_variable, dwarf2_write_parameter): Take a MonoDebugVarInfo
827         instead of a stack offset and use dwarf2_write_variable_location() to write
828         the location.
829
830 2002-04-13  Martin Baulig  <martin@gnome.org>
831
832         * debug.c, debug-stabs.c, debug-dwarf2.c: Reflect latest debug-symfile.h
833         API changes.
834
835 2002-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
836
837         * Makefile.am: use of the new '-s' option in monoburg.
838
839 2002-04-12  Martin Baulig  <martin@gnome.org>
840
841         * debug-dwarf2.c (dwarf2_write_variable): Emit info about the variable's
842         lifetime.
843
844 2002-04-10  Sergey Chaban <serge@wildwestsoftware.com>
845         * win32-exception: added Win32 SEH exception filter that translates
846         CONTEXT to sigcontext;
847
848         * jit.c: added Win32 SEH init/reset calls, compute sigcontext address
849         in a platfrom-dependent way;
850
851         * jit.h: use win32-exception instead of signal if PLATFORM_WIN32
852         and avoid io-layer includes;
853
854         * delegate.c: do not include io-layer stuff if PLATFORM_WIN32
855         is defined;
856
857 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
858
859         * delegate.c (arch_end_invoke): restore output arguments
860
861 Mon Apr 8 17:16:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
862
863         * jit.c: call mono_runtime_init ().
864
865 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
866
867         * jit.c (mono_jit_cleanup): added more statistics
868
869         * invoke.c (arch_create_native_wrapper): special case EndInvoke -
870         we need to pass the MonoMethod pointer as first argument.
871
872         * delegate.c (mono_async_invoke): notify all listeners, not only a
873         single one.
874         (arch_end_invoke): we now pass a MonoMethod as first parameter and
875         use arch_method_call_message_new() to access the stack.
876         (arch_end_invoke): wait until we really finished processing
877         (async_invoke_abort): notify all listeners, not only a
878         single one.
879
880 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
881
882         * message.c (arch_return_value): impl.
883         (arch_method_return_message_restore): consider delegate BeginInvoke
884
885         * jit.c: removed jit_exec_main()
886
887         * delegate.c (arch_begin_invoke): use the message builder to make
888         it architecture independent - still needs more cleanup.
889
890 2002-04-05  Dietmar Maurer  <dietmar@ximian.com>
891
892         * delegate.c (mono_delegate_ctor): support for transparent proxy
893
894         * x86.brg (freg): bug fix in CONV_R* opcodes
895
896 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
897
898         * message.c: added documentation
899
900 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
901
902         * mono.c (main): use --trace instead of --trace-calls
903
904         * x86.brg: impl. REMOTE_STIND_XX
905
906         * message.c (mono_store_remote_field): impl.
907
908 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
909
910         * x86.brg: impl. REMOTE_FIELD (load fields of remote objects)
911
912         * message.c (mono_load_remote_field): impl.
913
914         * jit.c (mono_analyze_stack): only call marshalbyref methods
915         through the vtable.
916         (mono_analyze_stack): consider marshalbyref objects in LDFLD
917
918 Fri Mar 29 16:00:27 CET 2002 Paolo Molaro <lupus@ximian.com>
919
920         * x86.brg: kill pointer arithmetric.
921
922 2002-03-28  Martin Baulig  <martin@gnome.org>
923
924         * jit.c (mono_debug_insert_breakpoint): New global variable.
925         (mono_debug_last_breakpoint_address): New global variable.
926
927         * emit-x86.c (arch_compile_method): If `mono_debug_insert_breakpoint' is
928         non-zero, insert a breakpoint; if it's positive, decrement it when done.
929         Set `mono_debug_last_breakpoint_address' to the address of the last inserted
930         breakpoint.
931
932         * debug.h: Provide external declaration of `mono_debug_insert_breakpoint' and
933         `mono_debug_last_breakpoint_address', also documented them here.
934
935 2002-03-28  Martin Baulig  <martin@gnome.org>
936
937         * debug-private.h (MonoDebugHandle): Renamed `format' to `default_format'.
938         (AssemblyDebugInfo): Added `format'.
939
940         * debug.c: Use the AssemblyDebugInfo's `format' field to determine the format,
941         this allows us choose the format on a per-assembly basis.
942         (mono_debug_open_assembly): When using MONO_DEBUG_FORMAT_DWARF2_PLUS, fall back
943         to MONO_DEBUG_FORMAT_DWARF2 if the symbol file does not exist, but the IL file
944         exists.
945         (debug_generate_method_lines): Generate correct IL offsets.
946
947 2002-03-28  Martin Baulig  <martin@gnome.org>
948
949         * jit.h (MonoFlowGraph): Added `prologue_end' and `epilogue_start' fields.
950
951         * emit-x86.c (arch_compile_method): Set prologue_end and epilogue_start.
952
953         * debug-private.h (DebugMethodInfo): Renamed `frame_start_offset' to
954         `prologue_end_offset', added `epilogue_begin_offset' and `last_line'.
955
956         * debug.c (debug_generate_method_lines): Don't return if we don't have line
957         numbers, we still need to generate the IL offsets here. Emit line numbers
958         for `prologue_end_offset' (the first line of actual code) and 
959         `epilogue_begin_offset' (the line of the method's closing brace).
960         Don't crash if cfg->bblocks [i].forest is NULL.
961         (mono_debug_add_method): Don't crash if we don't have line numbers.
962         Initialize the newly added fields.
963
964         * debug-stabs.c: Record first and last line, emit filename info at the
965         beginning of the stab file, gdb ignores the types otherwise.
966
967         * debug-dwarf2.c: Use the new prologue_end_offset instead of guessing it;
968         emit line number info for the first and last line.
969
970 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
971
972         * invoke.c (arch_create_delegate_trampoline): impl.
973
974 Thu Mar 28 11:58:53 CET 2002 Paolo Molaro <lupus@ximian.com>
975
976         * Makefile.am, mono.c, jit.h, jit.c: build the libmono library
977         with the jit runtime to easy embedding. main() is moved to mono.c, now.
978         * jit.c: use opcode names from libmetadata.
979         * debug.h, debug.c: constify char* argument.
980
981 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
982
983         * jit.c: catching SIGSEGV again, added proxy support
984
985 2002-03-21  Dietmar Maurer  <dietmar@ximian.com>
986
987         * delegate.c (mono_delegate_init): remove unused worker threads
988
989 2002-03-27  Mike Kestner <mkestner@speakeasy.net>
990
991         * delegate.c (arch_get_delegate_invoke): malloc a bigger area
992
993 Tue Mar 26 19:54:45 CET 2002 Paolo Molaro <lupus@ximian.com>
994
995         * jit.c: remove glib mem vtable code.
996
997 2002-03-26  Martin Baulig  <martin@gnome.org>
998
999         * debug-dwarf2.c (write_method_lines_dwarf2): Don't generate method
1000         lines if we don't have line number information.
1001         (write_method_dwarf2): Use `minfo->method_info.this_offset' instead
1002         of hardcoding 8.
1003
1004         * debug-stabs.c (write_method_stabs): Don't generate method lines if
1005         we don't have line number information. Use `minfo->method_info.this_offset'
1006         instead of hardcoding 8.
1007
1008         * debug.c (debug_generate_method_lines): Don't crash if we don't have
1009         line number information.
1010         (mono_debug_open_assembly): Don't generate line numbers for
1011         MONO_DEBUG_FORMAT_DWARF2_PLUS.
1012         (mono_debug_add_method): Don't store the 'this' offset in `param_offsets',
1013         but it in the new `this_offset' field.
1014         
1015 Mon Mar 25 13:03:35 CET 2002 Paolo Molaro <lupus@ximian.com>
1016
1017         * debug.c (debug_generate_method_lines): Use correct addresses for
1018         record_il_offset().
1019
1020 Mon Mar 25 13:03:35 CET 2002 Paolo Molaro <lupus@ximian.com>
1021
1022         * jit.c: do not set the glib mem vtable anymore.
1023         * Makefile.am: link to libmonoutils.
1024
1025 2002-03-25  Martin Baulig  <martin@gnome.org>
1026
1027         * debug.h (mono_debug_make_symbols): Documented this function.
1028
1029 2002-03-24  Martin Baulig  <martin@gnome.org>
1030
1031         * debug.c (mono_debug_add_method): Include the `this' offset in
1032         the `minfo->method_info.param_offsets' array.
1033
1034 2002-03-23  Martin Baulig  <martin@gnome.org>
1035
1036         * x86.brg (lreg: CONV_I8 (reg)): X86_XOR modifies the flags, so we need
1037         to do it before the X86_CMP.
1038         (reg: CLT (lreg, lreg)): Use correct x86_branch8() targets.
1039         (reg: CLT (lreg, lreg)): Likewise.
1040         (reg: CLT_UN (lreg, lreg)): Likewise.
1041         (reg: CLT_UN (lreg, lreg)): Likewise.
1042         (reg: CGT (lreg, lreg)): Likewise.
1043         (reg: CGT (lreg, lreg)): Likewise.
1044         (reg: CGT_UN (lreg, lreg)): Likewise.
1045         (reg: CGT_UN (lreg, lreg)): Likewise.
1046
1047 2002-03-23  Martin Baulig  <martin@gnome.org>
1048
1049         * debug-private.h (AssemblyDebugInfo): Added `_priv'.
1050
1051         * debug-dwarf2-plus.c
1052         (mono_debug_open_assembly_dwarf2_plus): Open the symbol file here.
1053         (mono_debug_close_assembly_dwarf2_plus): Close the symbol file here.
1054         (mono_debug_write_assembly_dwarf2_plus): Only call
1055         mono_debug_update_symbol_file() here.
1056
1057 Thu Mar 21 17:35:48 CET 2002 Paolo Molaro <lupus@ximian.com>
1058
1059         * jit.c: inter strings before executing a method.
1060         Do not intern command line arguments anymore.
1061
1062 2002-03-21  Martin Baulig  <martin@gnome.org>
1063
1064         * debug.h (MonoDebugFormat): Added MONO_DEBUG_FORMAT_DWARF2_PLUS.
1065
1066         * debug-dwarf2-plus.c: This debugging format reads a symbol file which has
1067         been created by MCS and fills in all machine dependent stuff.
1068
1069         * debug-private.h (DebugMethodInfo): Added `MonoDebugMethodInfo method_info',
1070         removed everything which is already in MonoDebugMethodInfo.
1071
1072         * debug.c (debug_generate_method_lines): Generate the MonoILOffsetInfo array.
1073         (mono_debug_make_symbols): Don't open the file or call as, this is done in the
1074         backend code.
1075
1076         * jit.c (main): Added "--dwarf-plus" command line option to use the new
1077         MONO_DEBUG_FORMAT_DWARF2_PLUS debugging format.
1078
1079 2002-03-21  Dietmar Maurer  <dietmar@ximian.com>
1080
1081         * jit.c (usage): new option to specify maximum number of worker threads
1082         (mono_analyze_stack): avoid cyclic dependency in CEE_LDFTN
1083
1084         * delegate.c (async_invoke_abort): added support for asynchronous exceptions
1085         (arch_get_async_invoke): notify listeners before we call the
1086         asynchronous callback
1087
1088 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
1089
1090         * delegate.c (async_invoke_thread): support for domains
1091         (async_invoke_thread): create workers only when needed
1092
1093 2002-03-19  Dietmar Maurer  <dietmar@ximian.com>
1094
1095         * delegate.c (async_invoke_thread): initial support for BeginInvoke/EndInvoke
1096
1097 2002-03-18  Dietmar Maurer  <dietmar@ximian.com>
1098
1099         * x86.brg: impl. lreg: XOR (lreg, lreg)
1100         impl. REM (freg, freg)
1101
1102 2002-03-17  Martin Baulig  <martin@gnome.org>
1103
1104         * debug.c (mono_debug_open_assembly): Call mono_debug_get_type() on all
1105         base types.
1106
1107         * debug-dwarf2.c: Added support for strings and arrays.
1108
1109 2002-03-17  Martin Baulig  <martin@gnome.org>
1110
1111         * debug.c (mono_debug_get_type): Recursively call this for all function members
1112         of a class type.
1113         (mono_debug_add_method): Don't mangle function names, this must be done by the
1114         debugger backend if the debugging format needs mangled names.
1115
1116         * debug-dwarf2.c: Improved support for classes, added member functions.
1117
1118 2002-03-16  Martin Baulig  <martin@gnome.org>
1119
1120         * debug.c (mono_debug_get_type): Recursively call this for all members and
1121         parent classes of a class type.
1122
1123         * debug-dwarf2.c: Added basic support for classes. Set source language to C++
1124         since GDB doesn't like Java very much.
1125
1126 2002-03-16  Martin Baulig  <martin@gnome.org>
1127
1128         * debug-dwarf2.c: Added support for enums.
1129
1130 2002-03-15  Martin Baulig  <martin@gnome.org>
1131
1132         * debug.c (mono_debug_get_type): Recursively call this for all members
1133         of a struct type.
1134
1135         * debug-dwarf2.c: Added support for structs.
1136
1137 2002-03-15  Dietmar Maurer  <dietmar@ximian.com>
1138
1139         * emit-x86.c (arch_create_jit_trampoline): adapt save/restore LMF
1140         to new MonoLMF layout
1141
1142 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
1143
1144         * emit-x86.c (arch_create_native_wrapper): new code to generate
1145         wrappers for calling native functions.
1146         (arch_create_native_wrapper): free allocated strings
1147         (arch_handle_exception): made mono_jit_info_table domain dependent
1148
1149 2002-03-14  Martin Baulig  <martin@gnome.org>
1150
1151         * debug.c (MonoDebugFormat): New public enums specifying which debugging
1152         format to use.
1153         (mono_debug_open_file): Added MonoDebugFormat argument.
1154         (mono_debug_make_symbols): Don't take an argument to make it easier to call
1155         this function from GDB. It's now safe to call this function multiple times;
1156         it'll always write a complete debugging file.
1157
1158         * debug.c: Splitted this file into a general part which remains in this file
1159         and the debugging format specific parts debug-stabs.c and debug-dwarf2.c.
1160         All public functions now call a corresponding format specific function.
1161
1162         * debug.c: The following changes are private to debug.c:
1163         (AssemblyDebugInfo, MonoDebugHandle): Moved declarations to debug-private.h.
1164         (record_line_number, debug_generate_method_lines): New private functions.
1165         (mono_debug_open_ass): Renamed to mono_debug_open_assembly; this function now
1166         calls a debugging-format-specific function (mono_debug_open_assembly_stabs or
1167         mono_debug_open_assembly_dwarf2).
1168         (mono_debug_make_symbols): Calls mono_debug_write_assembly_stabs/dwarf2(). It's
1169         now safe to call this function multiple times.
1170         (mono_debug_get_type): New public function. This takes a `MonoClass *' and
1171         returns an unique index for this type. It's used to ensure that we only write
1172         each class once to the debugging file.
1173         (mono_debug_add_method, mono_debug_add_type): Store all the data in an internal
1174         data structure, but don't directly write to the debugging file. This is done
1175         later from mono_debug_write_assembly().
1176
1177         * jit.c (main): Added "--dwarf" command line argument to generate DWARF 2
1178         debugging output. Call mono_debug_close() on cleanup if necessary.
1179
1180 2002-03-14  Martin Baulig  <martin@gnome.org>
1181
1182         * debug-private.h: New private header file.
1183
1184         * debug-stabs.c: Added the stabs type generation stuff which was
1185         previously in debug.c.
1186
1187         * debug-dwarf.c: Started to implement type support. We're currently
1188         only writing this most basic types to the dwarf file, but this will
1189         change soon.
1190
1191 2002-03-13  Martin Baulig  <martin@gnome.org>
1192
1193         * debug-stabs.c, debug-dwarf2.c: New files containing my new
1194         debugging code. They're now in CVS, but not yet used anywhere.
1195
1196 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
1197
1198         * emit-x86.c (mono_delegate_ctor): use C impl. instead of x86_*
1199         macros, included new delegate code from Daniel Stodden. 
1200         
1201         
1202 Mon Mar 11 14:47:21 CET 2002 Paolo Molaro <lupus@ximian.com>
1203
1204         * jit.c: verify that corlib and runtime are in sync.
1205
1206 Mon Mar 11 11:30:56 CET 2002 Paolo Molaro <lupus@ximian.com>
1207
1208         * emit-x86.c, jit.c: use the debug-helpers facilities to
1209         describe and match a method when debugging.
1210
1211 2002-03-10  Martin Baulig  <martin@gnome.org>
1212
1213         * emit-x86.c (arch_compile_method): When emitting stabs debugging
1214         output, put a nop instruction at the start of all functions so that
1215         the adresses won't change when using --debug.
1216
1217         * debug.c (mono_debug_add_method): `tree->cli_addr' is an offset into
1218         the bytecode area, stabs needs a line number in the .il file. Use the
1219         new info->moffsets to get the line number.
1220         (AssemblyDebugInfo): Added `total_lines' and `moffsets' fields.
1221         `moffsets' is an array of `total_lines' fields (total number of lines
1222         in the .il file); for each line in the .il field, this array contains
1223         the bytecode offset if it's an "IL_xxxx" line, -1 if it's the last line
1224         of a method and 0 otherwise.
1225         (debug_load_method_lines): Read the whole .il file and initialize the
1226         info->moffsets field.
1227
1228 2002-03-09  Martin Baulig  <martin@gnome.org>
1229
1230         * x86.brg (DIV_UN): Clear EDX before performing the division and remove
1231         the unnecessary CDQ instruction.
1232
1233 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
1234
1235         * jit.c (mono_analyze_stack): only load addresses of value types
1236         on the runtime stack.
1237
1238 2002-03-07  Duncan Mak  <duncan@ximian.com>
1239
1240         * Makefile.am: A small patch fixing errors in vpath-based builds
1241         (make clean failing to rerun monoburg due to BUILT_SOURCES usage),
1242         committed for Daniel Stodden <stodden@in.tum.de>. 
1243
1244 Thu Mar 7 17:22:52 CET 2002 Paolo Molaro <lupus@ximian.com>
1245
1246         * jit.c: Boehm-GC enable.
1247
1248 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
1249
1250         * x86.brg (SAVE_LFM): bug fix: patch the saved IP because we
1251         realloc that code sometimes!
1252
1253         * emit-x86.c (mono_compute_branches): support several types of
1254         jump infos
1255
1256 2002-03-06  Dietmar Maurer  <dietmar@ximian.com>
1257
1258         * x86.brg: impl. MUL_OVF_UN (reg, reg)
1259
1260         * jit.c (mono_find_final_block): find correct finally handler.
1261
1262         * emit-x86.c (arch_create_jit_trampoline): bug fix: preserve
1263         caller saved registers.  
1264
1265 2002-03-05  Dietmar Maurer  <dietmar@ximian.com>
1266
1267         * x86.brg: use x86_widen_reg for CONV opcodes
1268
1269 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
1270
1271         * jit.c (MAKE_SPILLED_BI_ALU): remove unnecessary assertions
1272
1273         * emit-x86.c (arch_handle_exception): big fix - dont use
1274         uninitialized next_bp
1275         (arch_compile_method): make the jit thread save
1276         (x86_magic_trampoline): moved lock/unlock to x86_magic_trampoline
1277         to avoid need of recursive mutexes
1278
1279         * x86.brg: use new mono_assert macros
1280
1281 2002-02-28  Dietmar Maurer  <dietmar@ximian.com>
1282
1283         * emit-x86.c (arch_create_jit_trampoline): save/restore LMF before
1284         calling into unmanaged code (arch_compile_method).
1285
1286         * x86.brg: impl. CONV_I4 (freg) with correct rounding
1287         (lreg): impl CALL_I8(INTF_ADDR)
1288         impl. CONV_R_UN (reg)
1289         bug fix im REM_UN
1290
1291 2002-02-27  Dietmar Maurer  <dietmar@ximian.com>
1292
1293         * emit-x86.c (arch_runtime_invoke): impl. runtime invoke for the jit.
1294
1295 2002-02-26  Dietmar Maurer  <dietmar@ximian.com>
1296
1297         * x86.brg: bug fix in CLT(lreg,lreg)
1298         (reg): bug fix in CONV_OVF_I4(lreg)
1299         (lreg): replaced x86_call_reg with x86_call_code
1300
1301         * emit-x86.c (mono_add_jump_info): impl.
1302         (mono_compute_branches): patch real jump address (instead of
1303         emitting code twice)
1304
1305 Tue Feb 26 11:56:03 CET 2002 Paolo Molaro <lupus@ximian.com>
1306
1307         * x86.brg: optimize cmp reg,0 -> test reg.
1308
1309 Sun Feb 24 13:58:34 CET 2002 Paolo Molaro <lupus@ximian.com>
1310
1311         * jit.h, jit.c, emit-x86.c: Added a few statistics counters
1312         and the --stats command line option to print them.
1313         Fixed memory leak in arch_compile_method () when a method's code is
1314         found in the cache. Fix magic trampoline to deal with static calls.
1315
1316 2002-02-21  Dietmar Maurer  <dietmar@ximian.com>
1317
1318         * x86.brg: impl. SHR_UN for lreg, added new test, bug fix for BNE_UN 
1319
1320 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
1321
1322         * emit-x86.c (arch_compile_method): add shared code to mono_root_domain
1323         (arch_create_jit_trampoline): cache trampoline code
1324
1325 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
1326
1327         * jit.c (mono_analyze_stack): optimize LDSFLD/STSFLD for domain
1328         specific code.
1329         (mono_analyze_stack): use MB_TERM_LDELEMA to perform bound check
1330
1331         * x86.brg: do not encode exception objects into the instruction
1332         stream, because they are domain dependend. Use
1333         arch_get_throw_exception_by_name() instead;
1334
1335 Mon Feb 18 15:51:40 CET 2002 Paolo Molaro <lupus@ximian.com>
1336
1337         * jit.c: intern command line arguments.
1338
1339 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
1340
1341         * jit.c (mono_analyze_stack): use the magic trampoline for all
1342         calls (since we cant store the address of compiled code in
1343         method->addr).
1344         (mono_analyze_stack): imp. LDSTR for shared code
1345
1346         * emit-x86.c (x86_magic_trampoline): handle x86_call_code().
1347         (arch_compile_method): add a cache for compiled methods to avoid
1348         recompilation. dont use method->addr to store domain dependent
1349         code address.
1350
1351 2002-02-15  Dietmar Maurer  <dietmar@ximian.com>
1352
1353         * x86.brg: impl. BLE,BGT for freg
1354
1355 Sat Feb 16 16:27:42 CET 2002 Paolo Molaro <lupus@ximian.com>
1356
1357         * emit-x86.c: handle unreachable code. Eliminate some unneeded
1358         malloc() calls.
1359         * jit.c: handle unreachable code. Move setting of mono_end_of_stack to
1360         main(). Add --compile classname and --ncompile num command line
1361         options to do performance evaluation of the jitter (and help
1362         debugging).
1363
1364 2002-02-15  Dietmar Maurer  <dietmar@ximian.com>
1365
1366         * emit-x86.c (arch_compile_method): bug fix in static delegate
1367         Invoke code.
1368
1369 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
1370
1371         * jit.c (mono_analyze_stack): do a LDIND after NEWOBJ for value types.
1372
1373 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
1374
1375         * jit.c (mono_analyze_stack): impl. CEE_SIZEOF
1376
1377 2002-02-13  Miguel de Icaza  <miguel@ximian.com>
1378
1379         * jit.c (arch_allocate_var): Only assert that the alignment is
1380         at least 32-bits aligned, not always 32-bits aligned (for I8 for example).
1381
1382 Mon Feb 11 11:20:57 CET 2002 Paolo Molaro <lupus@ximian.com>
1383
1384         * x86.brg: fix invalid cast check in unbox. Pack MBTree structure.
1385
1386 Sun Feb 10 12:54:05 CET 2002 Paolo Molaro <lupus@ximian.com>
1387
1388         * emit-x86.c: make x86_magic_trampoline() handle call instructions
1389         with an imm8 displacement. x86.brg not yet changed to take advantage
1390         of it.
1391
1392 Sun Feb 10 11:47:30 CET 2002 Paolo Molaro <lupus@ximian.com>
1393
1394         * jit.c: use opcode info from libmetadata to do flow analysis
1395         and simplify code.
1396
1397 2002-02-06  Dietmar Maurer  <dietmar@ximian.com>
1398
1399         * jit.c (MAKE_LDELEM, MAKE_STELEM): added bound checking 
1400
1401 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
1402
1403         * x86.brg: use element_class for type check
1404
1405 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
1406
1407         * jit.c (main): impl. __array_Address icall
1408
1409         * mempool.c (mono_mempool_alloc): handle large block allocation
1410
1411 2002-02-01  Dietmar Maurer  <dietmar@ximian.com>
1412
1413         * x86.brg: impl. SHL/SHR/CLT for 64 bit values
1414
1415 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
1416
1417         * x86.brg: impl. CEQ(lreg,lreg)
1418
1419         * jit.c (mono_analyze_stack): impl. LDVIRTFTN
1420         (mono_analyze_stack): handle MONO_TABLE_MEMBERREF in LDSFLD/STSFLD
1421
1422         * x86.brg: removed some dead code.
1423
1424 2002-01-18  Dietmar Maurer  <dietmar@ximian.com>
1425
1426         * jit.c (arch_allocate_var): fixed alignment bugs
1427
1428 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
1429
1430         * jit.c (mono_analyze_stack): use LDIND_REF/STIND_REF
1431
1432 2002-01-16  Dietmar Maurer  <dietmar@ximian.com>
1433
1434         * jit.c (main): install the trampoline before we start to create
1435         objects.
1436
1437         * x86.brg: impl. CLT_UN, CGT_UN
1438
1439         * emit-x86.c (leave_method): added check for null object
1440         (enter_method): consider byref arguments
1441
1442 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
1443
1444         * x86.brg: bug fix in CONV_OVF_I1_UN
1445         impl. ADD_OVF, MUL_OVF
1446         impl. ADD_OVF_UN, SUB_OVF, SUB_OVF_UN
1447         (SUB (lreg, lreg)): bug fix - use SBB instead of SUB
1448         (EMIT_COND_EXCEPTION): added signed flag
1449
1450 Fri Jan 11 20:06:22 CET 2002 Paolo Molaro <lupus@ximian.com>
1451
1452         * jit.c: implement stloc, ldloc, ldloca.
1453
1454 2002-01-11  Dietmar Maurer  <dietmar@ximian.com>
1455
1456         * jit.c (mono_analyze_stack): fixed calculation of last_instr
1457
1458         * x86.brg (LDLEN): emit null_reference exception
1459         (BLE_UN): bug fix. 
1460         (RET, RET_VOID, RET_OBJ, ...) fixed jump to epilog
1461
1462 2002-01-04  Dietmar Maurer  <dietmar@ximian.com>
1463
1464         * x86.brg: bug fix in CASTCLASS
1465
1466 2001-12-21  Dietmar Maurer  <dietmar@ximian.com>
1467
1468         * jit.c (mono_analyze_stack): spill MUL to avoid problem with
1469         register allocation.
1470
1471         * emit-x86.c (arch_compile_method): fixed static delegate bug
1472
1473 2001-12-16  Miguel de Icaza  <miguel@ximian.com>
1474
1475         * x86.brg, jit.c: Split up the nodes that we used to share on
1476         CONV_OVF.  They were sharing the nodes because they are the same
1477         on 32-bit machines, but on 64-bit machines you need different
1478         code for them.
1479
1480 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
1481
1482         * x86.brg: removed prerequisite that (tree->left->reg1 <
1483         tree->right->reg1) to make register allocation easier.
1484
1485 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
1486
1487         * emit-x86.c (arch_handle_exception): new code to handle
1488         exceptions inside unmanaged code.
1489
1490         * x86.brg: impl. SAVE_LMF, RESTORE_LMF, pass implizit valuetype
1491         address as first argument.
1492
1493 2001-12-15  Dietmar Maurer  <dietmar@ximian.com>
1494
1495         * x86.brg: pass exceptions on the stack
1496
1497         * jit.h (ISSTRUCT): new macro to check for real value types
1498         (return false for enum types). 
1499
1500 2001-12-11  Dietmar Maurer  <dietmar@ximian.com>
1501
1502         * x86.brg: use position indepentent code if possible. 
1503
1504         * x86.brg (EMIT_COND_EXCEPTION): new macro.
1505
1506         * emit-x86.c (mono_emit_cfg): impl. variable code buffer size
1507
1508 2001-12-10  Dietmar Maurer  <dietmar@ximian.com>
1509
1510         * jit.c (mono_analyze_flow): use g_malloc0 o allocate large bcinfo
1511         blocks.
1512         (mono_analyze_flow): use g_malloc0 o allocate large bblocks array.
1513
1514         * x86.brg (stmt): added opt. for STIND_R4/STIND_R8
1515
1516 2001-12-07  Dietmar Maurer  <dietmar@ximian.com>
1517
1518         * jit.c (mono_allocate_intvar): bug fix.
1519
1520         * emit-x86.c (get_unbox_trampoline): impl.
1521
1522         * jit.c (mono_analyze_stack): impl STOBJ, LEAVE
1523
1524 2001-12-06  Dietmar Maurer  <dietmar@ximian.com>
1525
1526         * x86.brg: raise exceptions.
1527
1528 2001-12-05  Dietmar Maurer  <dietmar@ximian.com>
1529
1530         * x86.brg: impl. CEQ for freg, NEWSTRUCT now allocates valuetypes on
1531         the stack. 
1532
1533 2001-12-06  Miguel de Icaza  <miguel@ximian.com>
1534
1535         * jit.c (mono_analyze_stack), x86.brg: Implement CONV.OVF.I1,
1536         CONV.OVF.I4, CONV.OVF.I1.UN, CONV.OVF.U1, CONV.OVF.U1.UN,
1537         CONV.OVF.I2.UN, CONV.OVF.I8.UN
1538
1539 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
1540
1541         * x86.brg: impl. UNBOX, NEWSTRUCT, removed VTYPE, bug fixes,
1542         removed the locaddr nonterminal, reimplemented value types
1543         
1544         * jit.c: reimplemented value type support, better support for
1545         enumeration types. 
1546
1547 2001-12-03  Miguel de Icaza  <miguel@ximian.com>
1548
1549         * x86.brg, jit.c: Implement conv.ovf.u4, conv.ovf.u2, conv.ovf.i2,
1550         conv.ovf.u8 
1551
1552 Mon Dec 3 17:16:36 CET 2001 Paolo Molaro <lupus@ximian.com>
1553
1554         * jit.c: call mono_init() after registering internal calls.
1555
1556 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
1557
1558         * emit-x86.c (tree_preallocate_regs): improved register allocation
1559
1560         * x86.brg: impl. ISINST, CASTCLASS
1561
1562 Fri Nov 30 12:02:24 CET 2001 Paolo Molaro <lupus@ximian.com>
1563
1564         * x86.brg: rearrange fields to reduce struct size.
1565         * jit.c: use signature->param_count, not signature->params_size.
1566         * debug.c: off-by-one error fix.
1567
1568 2001-11-29  Radek Doulik  <rodo@ximian.com>
1569
1570         * Makefile.am: build mono only for X86 architecture, compilation
1571         fails for ppc now because of accessing registers in sigcontext
1572         structure
1573
1574 2001-11-29  Dietmar Maurer  <dietmar@ximian.com>
1575
1576         * jit.c (mono_analyze_stack): bug fix in DUP
1577
1578 Thu Nov 29 12:32:01 CET 2001 Paolo Molaro <lupus@ximian.com>
1579
1580         * debug.c: fix type handling. Position function position at start of
1581         IL code. Output more fine-grained stepping information.
1582
1583 2001-11-28  Dietmar Maurer  <dietmar@ximian.com>
1584
1585         * x86.brg (LDIND_I1, LDIND_I2): use x86_widen_ instead of x86_mov_
1586
1587         * jit.c (mono_analyze_stack): record the cli_address for later use
1588         with gdb.
1589         (sigsegv_signal_handler): translate sigsegv into "Internal error"
1590         exception.
1591
1592 Tue Nov 27 16:32:41 CET 2001 Paolo Molaro <lupus@ximian.com>
1593
1594         * debug.c, debug.h: added support for generating stabs.
1595         Stabs can be compiled with as and the resulting object file can be
1596         loaded in a gdb session with add-symbol-file object.o.
1597         * jit.c, jit.h: add --stabs and --debug command line arguments. Keep track
1598         where locals and arguments are stored in the stack. Add support for
1599         passing command line arguments to CLR programs.
1600         * emit-x86.c: insert a breakpoint at method invocation if needed.
1601
1602 2001-11-27  Dietmar Maurer  <dietmar@ximian.com>
1603
1604         * jit.c: exception support
1605
1606         * emit-x86.c (arch_emit_epilogue): bug fix: restore the regs in
1607         the right order.
1608
1609 2001-11-26  Dick Porter  <dick@ximian.com>
1610
1611         * Makefile.am (mono_LDADD): Add io-layer library
1612
1613 2001-11-19  Dietmar Maurer  <dietmar@ximian.com>
1614
1615         * jit.c (mono_analyze_stack): impl. LDFTN
1616         (MAKE_SPILLED_BI_ALU): always spill DIV/REM results to memory to
1617         make register allocation easier on x86
1618
1619         * emit-x86.c (enter_method): more debugging output for Strings
1620         (arch_compile_method): added delegate support
1621         (arch_compile_method): align EBP to 8 byte boundary
1622
1623 Mon Nov 19 11:36:22 CET 2001 Paolo Molaro <lupus@ximian.com>
1624
1625         * jit.c: use mono_install_trampoline (), instead of exporting
1626         a function to a lower-level library.
1627
1628 2001-11-16  Dietmar Maurer  <dietmar@ximian.com>
1629
1630         * x86.brg (STRING_ARG): impl. a way to marshal strings. This
1631         will be extensible to handle all possible kinds of marshalling
1632         requirements. 
1633
1634         * jit.c (map_call_type): added MB_TERM_CALL_VOID
1635         (mono_analyze_stack): impl. LDELEMA, reimplemented CALL
1636         instructions to handle this arguments more effectively.
1637
1638 2001-11-15  Dietmar Maurer  <dietmar@ximian.com>
1639
1640         * Makefile.am (mono_SOURCES): renamed testjit to mono
1641
1642         * x86.brg: added debugging support 
1643
1644         * testjit.c: added support for value types, CFG improvements
1645
1646         * emit-x86.c (enter_method): handle value types
1647         (tree_allocate_regs): impl. a better way to handle chain rules
1648
1649 2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
1650
1651         * x86.brg (INITOBJ): bug fix: initialize data before use,
1652         simplified the code.
1653
1654 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
1655
1656         * testjit.c (mono_analyze_stack): Remove compiler warning by
1657         testing against NULL.
1658
1659 2001-11-09  Dick Porter  <dick@ximian.com>
1660
1661         * Makefile.am (testjit_LDADD): Don't need THREAD_LIBS any more
1662
1663 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
1664
1665         * testjit.c (mono_analyze_stack): new BOX impl.
1666
1667         * x86.brg: implemented INITOBJ
1668
1669         * testjit.c (mono_analyze_stack): finished array support
1670         (mono_analyze_stack): reimplemented DUP instruction
1671
1672 2001-11-08  Dietmar Maurer  <dietmar@ximian.com>
1673
1674         * testjit.c (MAKE_STELEM, MAKE_LDELEM): we build a tree which
1675         represents the address of the element. This way we can emit highly
1676         optimized x86 instructions to access elements (using base+index+offset
1677         adressing mode)
1678
1679 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
1680
1681         * mempool.c: Include string.h to kill warning.
1682
1683         * testjit.c: Add typecast to kill warning.
1684
1685         * x86.brg: Include string.h to eliminate warning.
1686
1687         * emit-x86.c (tree_allocate_regs): Fix arguments to g_warning to
1688         kill warning.
1689
1690 2001-11-07  Dietmar Maurer  <dietmar@ximian.com>
1691
1692         * emit-x86.c (enter_method): print out all method arguments
1693         (x86_magic_trampoline): impl.
1694         (arch_create_simple_jit_trampoline): we use different trampolines
1695         for static methods (no need to write the address back into to
1696         vtable).
1697
1698 2001-11-06  Dietmar Maurer  <dietmar@ximian.com>
1699
1700         * emit-x86.c (arch_create_jit_trampoline): optimised trampoline to
1701         use less the 16 bytes.
1702
1703         * x86.brg: code cleanup
1704
1705 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
1706
1707         * testjit.c: bug fixes.
1708
1709         * emit-x86.c (leave_method): print result values
1710
1711 2001-11-03  Dietmar Maurer  <dietmar@ximian.com>
1712
1713         * emit-x86.c (enter_method): new debugging code
1714         (leave_method): new debbuging code, this functions are called
1715         when you use the new option --trace-calls
1716
1717 2001-11-02  Dietmar Maurer  <dietmar@ximian.com>
1718
1719         * testjit.c: impl. STELEM_XX, STELEM_XX
1720
1721         * x86.brg: impl. LDLEN, LDELEMA
1722         
1723
1724 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
1725
1726         * x86.brg: added some experimental code for CALL
1727         instructions - still not found the optimal way to do it.
1728
1729         * testjit.c (map_stind_type): add support for value types with
1730         a size of 1, 2 or 4 bytes, implemented CEE_UNBOX, CEE_LDOBJ,
1731         CEE_LDSTR, CEE_LDFLD, CEE_LDFLDA, CEE_STFLD, CEE_NEWOBJ, CEE_CEQ
1732         (ctree_create_newobj): impl.
1733         
1734
1735         * emit-x86.c (tree_allocate_regs): removed allocation code for
1736         addr nonterminal.
1737         (get_address): use a simple, but bug free search instead of the
1738         buggy binary search.
1739
1740 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
1741
1742         * testjit.c: support virtual functions
1743
1744         * x86.brg: support different addressing modes for calls
1745
1746 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
1747
1748         * testjit.c: impl. STFLD
1749
1750 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
1751
1752         * x86.brg: impl. CEQ
1753
1754 2001-10-04  Dick Porter  <dick@ximian.com>
1755
1756         * testjit.c:
1757         * emit-x86.c: include mono-endian.h not endian.h
1758
1759 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
1760
1761         * testjit.c (ctree_create_dup): really duplicate the tree.
1762         attach the arguments to the CALL node. Added a new macro to
1763         make argument order configurable (ARCH_ARGS_RIGHT_TO_LEFT).
1764
1765 2001-10-01  Dietmar Maurer  <dietmar@ximian.com>
1766
1767         * interp.brg: the burm based interpreter: added the file as example.
1768
1769 2001-09-27  Dietmar Maurer  <dietmar@ximian.com>
1770
1771         * x86.brg: cleanup
1772
1773         * testjit.c: impl. LDIND/STIND/LDLOCA, use g_malloc to alloc static
1774         data.
1775         (map_stind_type): support enum types
1776         (map_ldind_type): support enum types
1777
1778         * emit-x86.c (tree_allocate_regs): added code to support
1779         register allocation for addressing modes trees.
1780         (tree_emit): bug fix: we have to emit all mono_burg_functins. The
1781         previous impl. did not work for chain rules.
1782         (compute_branches): support for SWITCH statements
1783
1784         * x86.brg: added rules to model x86 addressing modes
1785
1786 2001-09-26  Dietmar Maurer  <dietmar@ximian.com>
1787
1788         * emit-x86.c (compute_branches): implemented SWITCH
1789
1790         * testjit.c (mono_create_forest): implemented LDIND/STIND opcodes
1791         (map_ldind_type): add enumeration types.
1792         (map_stind_type): add enumeration types.
1793
1794         * emit-x86.c (arch_compile_method): more documentation.
1795
1796         * testjit.c: moved the architecture specific things to emit-x86.c
1797         and x86.brg. Added more documentation. code cleanup.
1798
1799 2001-09-25  Dietmar Maurer  <dietmar@ximian.com>
1800
1801         * x86.brg: we now have different types of addresses: ADDR_L for local
1802         values, ADDR_A for arguments and ADDR_G for global addresses. We
1803         also use LDIND_XX token to load values from a specific address
1804         instead of LDLOC/STLOC. 
1805
1806         * testjit.c: use the new adressing scheme everywhere:
1807         LDIND _XX (ADDR_X), and STIND_XX (ADDR_X, tree)  
1808
1809 2001-09-24  Dietmar Maurer  <dietmar@ximian.com>
1810
1811         * testjit.c (main): fix bug in parameter parsing
1812
1813         * x86.brg: impl. more opcodes
1814
1815 2001-09-23  Dick Porter  <dick@ximian.com>
1816
1817         * Makefile.am (testjit_LDADD): rename PTHREAD_LIBS to THREAD_LIBS
1818
1819 2001-09-23  Dietmar Maurer  <dietmar@ximian.com>
1820
1821         * testjit.c: use the memory pool to avoid memory leaks
1822
1823 2001-09-22  Dietmar Maurer  <dietmar@ximian.com>
1824
1825         * x86.brg: increment the stack pointer after function calls
1826
1827 2001-09-21  Dick Porter  <dick@ximian.com>
1828
1829         * Makefile.am (testjit_LDADD): Added PTHREAD_LIBS to the link line
1830
1831 2001-09-21  Dietmar Maurer  <dietmar@ximian.com>
1832
1833         * x86.brg: implemented long MUL/DIV
1834         (MB_OPT_LEVEL): define optimisation level macro
1835
1836         * testjit.c (tree_allocate_regs): added a way to prevent EDX usage
1837         for operations like idiv. it is also possible to assign specific registers.
1838
1839 2001-09-20  Dietmar Maurer  <dietmar@ximian.com>
1840
1841         * x86.brg: added basic support for long
1842
1843         * testjit.c (mono_compile_method): implemented POP
1844
1845 2001-09-19  Miguel de Icaza  <miguel@ximian.com>
1846
1847         * testjit.c (usage): Added a couple of more usage options.
1848
1849 2001-09-19  Dietmar Maurer  <dietmar@ximian.com>
1850
1851         * x86.brg: added more floating point grammar 
1852
1853         * testjit.c (mono_compile_method): make local offsets negative
1854
1855         * x86.brg: added some floating point trees
1856
1857         * testjit.c (mono_compile_method): arguments on the runtime 
1858         stack are at least 4 bytes
1859
1860         * x86.brg: partly implemented 8,16 bit integers
1861
1862         * testjit.c (get_address): mark basic blocks
1863
1864 2001-09-18  Dietmar Maurer  <dietmar@ximian.com>
1865
1866         * x86.brg: added some rules to optimize code
1867
1868         * testjit.c (get_address): use a binary search to get the address
1869         (main): added an option to debug the jit (-d)
1870
1871 Tue Sep 18 13:19:16 CEST 2001 Paolo Molaro <lupus@ximian.com>
1872
1873         * testjit.c: better/faster align code. Handle ldloc.s and stloc.s.
1874
1875 2001-09-17  Miguel de Icaza  <miguel@ximian.com>
1876
1877         * testjit.c (mono_compile_method): Provide better error reporting.
1878
1879 2001-09-17  Dietmar Maurer  <dietmar@ximian.com>
1880
1881         * testjit.c (tree_get_address): impl. to fix address bug
1882         (tree_get_address): make sure that we can only jump to the first
1883         instruction of a tree.
1884
1885         * x86.brg: emit real code for calls
1886
1887         * testjit.c (create_jit_trampoline): creates a function to trigger jit
1888         compilation.
1889         (mono_compile_method): reversed argument order
1890
1891 2001-09-15  Dietmar Maurer  <dietmar@ximian.com>
1892
1893         * x86.brg (stmt): don't emit unnecessary register moves
1894
1895         * testjit.c (tree_allocate_regs): free registers earlier
1896
1897 2001-09-14  Dietmar Maurer  <dietmar@ximian.com>
1898
1899         * x86.brg: branch addresses are now resolved
1900
1901         * testjit.c (compute_branches): compute address of branches
1902
1903         * x86.brg: emit real x86 instructions
1904
1905         * testjit.c: call objdump to disassemble the output
1906
1907 2001-09-13  Dietmar Maurer  <dietmar@ximian.com>
1908
1909         * x86.brg: use the right offsets to access local variables
1910         and arguments.
1911
1912         * emit-x86.c: only save/restore callee saved registers if they are
1913         really modified.
1914
1915         * testjit.c (tree_allocate_regs): use the new MonoRegSet to
1916         allocate registers.
1917         (mono_compile_method): changed the tree for mothod calls
1918
1919         * regset.h: impl.
1920         
1921         * regset.c: impl.
1922         
1923
1924 2001-09-10  Miguel de Icaza  <miguel@ximian.com>
1925
1926         * x86.brg: Use Unix assembly syntax.
1927
1928         * emit-x86.c: support code, should be moved
1929
1930         * testjit.c: Use GPtrArrays instead of GLists, as those are very
1931         inefficient at appends.
1932
1933         * Renamed `create_new_leave' to `create_new_leaf'
1934
1935         
1936