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