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