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