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