x86.brg: (MB_OPT_LEVEL): define optimisation level macro
[mono.git] / mono / interpreter / ChangeLog
1
2 Thu Sep 20 16:32:42 CEST 2001 Paolo Molaro <lupus@ximian.com>
3
4         * interp.c: implemented some more opcodes: calli, rem.un,
5         shr.un, conv.u, cpobj, stobj, conv.r.un, conv.ovf.i1.un,
6         conv.ovf.i2.un, conv.ovf.i4.un, conv.ovf.i8.un, conv.ovf.i.un,
7         conv.ovf.u1.un, conv.ovf.u2.un, conv.ovf.u4.un, conv.ovf.u8.un,
8         conv.ovf.u.un.
9         Fix some 64 bit issues in the array element access code and a small bug.
10         Throw an exception on index out of range instead of asserting.
11         Throw an exception on a NULL array instead of dying.
12         Stomped a memory corruption bug (.cctor methods were freed after
13         executing them, but they are stores in MonoClass now...).
14         Added a simple facility to invoke the debugger when a named
15         function is entered (use the cmdline option --debug method_name).
16         * interp.h: fix 64 bit issue.
17
18 Tue Sep 18 13:21:33 CEST 2001 Paolo Molaro <lupus@ximian.com>
19
20         * interp.c: fix some 64 bit issues. Safer support for delegates.
21
22 2001-09-12  Miguel de Icaza  <miguel@ximian.com>
23
24         * interp.c (ves_exec_method): implement conv.u8 opcode. 
25
26 Mon Sep 10 20:20:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
27
28         * interp.c: endian fixes, comments.
29
30 Fri Sep 7 18:45:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31
32         * interp.c, interp.h: make ves_exec_method () and stackval_from_data ()
33         non static. Implement a couple of runtime methods needed to
34         use delegates (ves_runtime_method ()).
35         Implemented ldftn opcode.
36
37 Thu Sep 6 15:41:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
38
39         * Makefile.am: link to libmonoarch.
40         * interp.h, interp.c: use mono_create_trampoline ().
41         Pass the command line arguments to Main (String[]) methods.
42
43 2001-08-30  Dietmar Maurer  <dietmar@ximian.com>
44
45         * interp.c (ves_pinvoke_method): removed the libffi dependency
46
47 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
48
49         * interp.c (ves_array_set): moved from icall.c
50         (ves_array_get): moved from icall.c
51
52         * icall.c: moved to metadata/icall.c
53
54 Wed Aug 29 12:46:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
55
56         * interp.c: some small optimizations. Fixes to do signed
57         compares when needed. Change C++ comments into C.
58         Implemented cgt, clt. Added --opcode-count cmdline switch.
59
60 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
61
62         * interp.c (ves_exec_method): better check for value types (get
63         the class to detect if we have a value type), implemented CEE_CONV_U1,
64         CEE_CONV_U2, CEE_CEQ
65         
66
67 Mon Aug 27 21:30:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
68
69         * interp.c: warn and exit when Main () expects the cmdline arguments
70         instead of creashing.
71
72 Mon Aug 27 20:16:37 CEST 2001 Paolo Molaro <lupus@ximian.com>
73
74         * interp.c: merge isinst/castclass handling. Hopefully implement
75         the right semantics for handling callvirt correctly (changes
76         here and there to support it). Integrate bugfix from Dietmar quickly
77         so he needs to handle the cvs conflict:-)
78
79 Mon Aug 27 12:20:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
80
81         * interp.c: fix compilation and updates for changes in metadata/.
82
83 2001-08-26  Miguel de Icaza  <miguel@ximian.com>
84
85         * interp.c (main): Add option handling for the interpreter,
86         support the `--trace' option.
87
88 Sun Aug 26 23:04:46 CEST 2001 Paolo Molaro <lupus@ximian.com>
89
90         * interp.c: get in a dummy virtual method dispatch.
91         Added support for int64, native int and native uint as arguments.
92         Added debug enter/leave for icall and pinvoke methods, too.
93         Implement opcodes conv.i, conv.i8, ldelema.
94
95 Sun Aug 26 11:37:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
96
97         * interp.h, interp.c: load also a MonoClass pointer when we load
98         an address on the stack. Implemented conv.i1, conv.i2, con.i4,
99         conv.u4, conv.r4, conv.r8. Print the arguments in the stack trace
100         and the name of the exception.
101
102 Sat Aug 25 15:56:03 CEST 2001 Paolo Molaro <lupus@ximian.com>
103
104         * interp.c: Implemented some opcodes: starg.s, ldobj, isinst,
105         ldarg, starg, ldloc, ldloca, stloc, initobj, cpblk, sizeof.
106
107 Sat Aug 25 12:57:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
108
109         * interp.c: handle enumerations specially (not as valuetypes).
110
111 Fri Aug 24 19:34:04 CEST 2001 Paolo Molaro <lupus@ximian.com>
112
113         * interp.h, interp.c: add support for valuetypes.
114
115 Fri Aug 24 16:09:20 CEST 2001 Paolo Molaro <lupus@ximian.com>
116
117         * interp.c: updates for merge of MonoParam in MonoType.
118
119 Thu Aug 23 12:04:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
120
121         * interp.c: removed beforefieldinit check, it's a useless flag.
122         Added a couple more test cases to tests/ dir.
123
124 2001-08-22  Miguel de Icaza  <miguel@ximian.com>
125
126         * interp.c (usage): Add version information
127         (ves_pinvoke_method): Typo fix.
128
129 Wed Aug 22 20:37:51 CEST 2001 Paolo Molaro <lupus@ximian.com>
130
131         * interp.c: simplified init_class (). Make sure a class
132         is fully initialized before executing a method in the class.
133         Search for the class constructor only on beforefieldinit classes.
134         Implement a bunch of opcodes: br, brfalse, brtrue, beq, bge,
135         bgt, blt, ble, bne.un, bge.un, bgt.un, ble.un, blt.un, stind.i,
136         ldflda, ldsflda, ldelem.i8, stelem.i8, leave.
137
138 Wed Aug 22 16:34:03 CEST 2001 Paolo Molaro <lupus@ximian.com>
139
140         * interp.c: Updates for changes in metadata/. Better output in debug mode
141         and in the stack trace. Completed rethrow handling
142
143 Tue Aug 21 18:56:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
144
145         * interp.c: new macro INIT_FRAME() to properly
146         initialize a MonoInvocation. Fixed a couple of buglets in exception code:
147         increase stack pointer when pushing the exception for catch blocks,
148         initialize frame->ex_handler to NULL, correctly try all the
149         catch blocks (don't incorrectly fallback on filter handling).
150         Added a couple more checks where we may need to throw an
151         exception. Added more exception creation functions.
152         Changed stackval_from_data() to take the target stackval as
153         argument. Implemented a couple more opcodes.
154         * interp.h: prepare stackval for value type code.
155
156 2001-08-21  Miguel de Icaza  <miguel@ximian.com>
157
158         * Makefile.am (mint_LDADD): Renamed interpreter to mint.
159
160 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
161
162         * interp.c (get_named_exception): use the right constructor.
163
164 Mon Aug 20 18:58:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
165
166         * interp.c: fix buglet with the leave.s opcode.
167
168 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
169
170         * icall.c: changed everything to support the new calling convention
171
172         * hacks.h: added some macros for FreeBSD 
173
174         * interp.c (get_named_exception): use mono_object_new instead of
175         newobj, initialize the stack before we call the constructor.
176
177 Sat Aug 18 12:43:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
178
179         * interp.c, interp.h: added support code to create exceptions.
180         Changed interncal calling convnetion over to MonoInvocation, to support
181         exceptions, walking the stack back and forward and passing the 'this'
182         pointer separately (remove the cludges required before to pass this on the
183         stack). Use alloca heavily for both local vars and a copy of the incoming 
184         arguments. Init local vars to zero.
185         Simplify stackval_from_data() and stackval_to_data() to only take a pointer
186         instead of pointer + offset.
187         Implement a few exceptions-related opcodes and the code to run finally, fault and
188         catch blocks as well as a stack trace if no handler is found.
189         
190 2001-08-16  Alex Graveley  <alex@ximian.com>
191
192         * Makefile.am (mono_int_LDADD): Link with ../../libffi/libffi.a
193         instead of ../../libffi/.libs/libffi.a.
194
195 2001-08-10  Dietmar Maurer  <dietmar@ximian.com>
196
197         * interp.c (ves_exec_method): impl CASTCLASS
198
199         * icall.c: moved the internal call stuff to this file
200
201         * interp.c (ves_exec_method): impl. BOX/UNBOX
202         (ves_icall_System_Array_GetValue): impl.
203         (ves_icall_System_Array_SetValue): impl.
204         added myself to Authors
205
206 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
207
208         * implemented arrays, but you will need a modified version of 
209         Array.cs to get arrays working (will commit soon)
210         
211         * interp.c (ves_icall_array_Set): impl.
212         (ves_icall_array_Get): impl.
213         (ves_icall_array_ctor): impl.
214         (ves_icall_System_Array_GetRank): impl.
215         (ves_icall_System_Array_GetLength): impl.
216         (ves_icall_System_Array_GetLowerBound): impl.
217         (mono_lookup_internal_call): impl.
218
219 2001-08-06  Dietmar Maurer  <dietmar@ximian.com>
220
221         * interp.c (ves_exec_method): impl. NEWARR
222         (ves_exec_method): impl. most LDELEM/STELEM opcodes, LDLEN
223         (newarr): impl.
224         (mono_get_ansi_string): impl.
225         (mono_lookup_internal_call): impl.
226         (ves_exec_method): implemented internal calls
227
228 2001-08-05  Dietmar Maurer  <dietmar@ximian.com>
229
230         * interp.c (ves_pinvoke_method): removed all static vars.
231
232 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
233
234         * interp.c (ves_exec_method): found a way to do unordered
235         compares, implemented CEE_BNE_UN_S, CEE_BGE_UN_S, CEE_BGT_UN_S, 
236         CEE_BLE_UN_S, CEE_BLT_UN_S
237         
238 Wed Aug 1 22:51:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
239
240         * interp.c: handle also MONO_TYPE_CLASS to/from the stack.
241         Change locals to be a memory blob, instead of the structured
242         (but wrong) stackval. Implement bne.un.s opcode. Make the program
243         exit with the error code from Main().
244
245 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
246
247         * interp.c (ves_exec_method): implemented LDSTR
248
249 2001-07-31  Miguel de Icaza  <miguel@ximian.com>
250
251         * interp.c (GET_NATI): Switched from using nati_t to cli/types.h
252         m_i type.  Maybe we should rename the types to be m_i_t instead of
253         m_i alone.
254         
255         Make the code compile after I broke it.
256
257 Tue Jul 31 23:46:33 CEST 2001 Paolo Molaro <lupus@ximian.com>
258
259         * interp.c: fix cleanup.
260         * Makefile.am: don't link with disassembler library.
261
262 2001-07-31  Miguel de Icaza  <miguel@ximian.com>
263
264         (ves_exec_method): Cleanup of the source code.
265
266 Tue Jul 31 20:13:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
267
268         * interp.c: implement stind.*, ldind.*, ldloca.s opcodes.
269         Provide better tracing with DEBUG_INTERP.
270
271 Tue Jul 31 17:52:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
272
273         * interp.c: massive namespace cleanup.
274
275 Mon Jul 30 20:09:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
276
277         * interp.c: update to use mono_method->name.
278
279 Fri Jul 27 20:54:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
280
281         * interp.c: start implementing callvirt. Classes with
282         class constructors are properly initialized when needed.
283         Fix error introduced in version 1.17.
284
285 Fri Jul 27 14:03:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
286
287         * interp.c: implement static field loading and storing.
288
289 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
290
291         * interp.c (ves_pinvoke_method): impl.
292
293 Fri Jul 27 11:49:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
294
295         * interp.c: Removed some debugging printouts. Made stackval_to_data
296         static. Handle also instance methods in CALL opcode. Fix ret to properly
297         deal with void functions. Fixed constructor to leave the object on
298         the stack.
299
300 Thu Jul 26 13:24:51 CEST 2001 Paolo Molaro <lupus@ximian.com>
301
302         * interp.c: ves_exec_method () doesn't take a MonoImage arg
303         anymore. Use the method cache in MonoImage. Updates to
304         mache recent changes in metadata. 
305         Fix newobj code to use new metadata features. Call the class
306         constructor after allocationg the object. Implemented load field
307         and store field opcodes (the support functions need to be finished).
308         
309 Tue Jul 24 16:51:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
310
311         * interp.c, hacks.h: moved a few ugly macros out of the code.
312         Implemented switch opcode.
313
314 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
315
316         * interp.c (newobj): Added function to handle newobj opcode.
317
318 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
319
320         * interp.c (ves_exec_method): Make the interpreter abort with more
321         information than it currently does.
322
323         Enable the slow processor, as it is easier to debug.
324
325 Sun Jul 15 17:50:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
326
327         * Started changelog.
328         * interp.c: use new mono_get_method () function to get the complete
329         info on a method invocation: we support now method invocation with
330         multiple (or zero) simple arguments and with or without a return value.
331         Implement also a couple more opcodes.