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