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