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