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