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