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