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