2 Tue Sep 25 11:12:35 CEST 2001 Paolo Molaro <lupus@ximian.com>
4 * interp.c: fixed get_virtual_method () to deal with interface
7 Mon Sep 24 18:50:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
9 * interp.c: catch a few more error conditions with exceptions instead of
11 Don't use g_print() in stack traces because it doesn't work with
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.
22 2001-09-24 Dietmar Maurer <dietmar@ximian.com>
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
28 2001-09-23 Dick Porter <dick@ximian.com>
30 * Makefile.am (mint_LDADD): rename PTHREAD_LIBS to THREAD_LIBS
32 2001-09-23 Dick Porter <dick@ximian.com>
34 * interp.c (main): Do some thread setup and cleanup around the
37 2001-09-21 Dick Porter <dick@ximian.com>
39 * Makefile.am (mint_LDADD): Added PTHREAD_LIBS to the link line
41 Thu Sep 20 16:32:42 CEST 2001 Paolo Molaro <lupus@ximian.com>
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,
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.
57 Tue Sep 18 13:21:33 CEST 2001 Paolo Molaro <lupus@ximian.com>
59 * interp.c: fix some 64 bit issues. Safer support for delegates.
61 2001-09-12 Miguel de Icaza <miguel@ximian.com>
63 * interp.c (ves_exec_method): implement conv.u8 opcode.
65 Mon Sep 10 20:20:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
67 * interp.c: endian fixes, comments.
69 Fri Sep 7 18:45:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.
76 Thu Sep 6 15:41:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.
82 2001-08-30 Dietmar Maurer <dietmar@ximian.com>
84 * interp.c (ves_pinvoke_method): removed the libffi dependency
86 2001-08-29 Dietmar Maurer <dietmar@ximian.com>
88 * interp.c (ves_array_set): moved from icall.c
89 (ves_array_get): moved from icall.c
91 * icall.c: moved to metadata/icall.c
93 Wed Aug 29 12:46:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.
99 2001-08-28 Dietmar Maurer <dietmar@ximian.com>
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,
106 Mon Aug 27 21:30:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
108 * interp.c: warn and exit when Main () expects the cmdline arguments
109 instead of creashing.
111 Mon Aug 27 20:16:37 CEST 2001 Paolo Molaro <lupus@ximian.com>
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:-)
118 Mon Aug 27 12:20:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
120 * interp.c: fix compilation and updates for changes in metadata/.
122 2001-08-26 Miguel de Icaza <miguel@ximian.com>
124 * interp.c (main): Add option handling for the interpreter,
125 support the `--trace' option.
127 Sun Aug 26 23:04:46 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.
134 Sun Aug 26 11:37:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.
141 Sat Aug 25 15:56:03 CEST 2001 Paolo Molaro <lupus@ximian.com>
143 * interp.c: Implemented some opcodes: starg.s, ldobj, isinst,
144 ldarg, starg, ldloc, ldloca, stloc, initobj, cpblk, sizeof.
146 Sat Aug 25 12:57:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
148 * interp.c: handle enumerations specially (not as valuetypes).
150 Fri Aug 24 19:34:04 CEST 2001 Paolo Molaro <lupus@ximian.com>
152 * interp.h, interp.c: add support for valuetypes.
154 Fri Aug 24 16:09:20 CEST 2001 Paolo Molaro <lupus@ximian.com>
156 * interp.c: updates for merge of MonoParam in MonoType.
158 Thu Aug 23 12:04:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
160 * interp.c: removed beforefieldinit check, it's a useless flag.
161 Added a couple more test cases to tests/ dir.
163 2001-08-22 Miguel de Icaza <miguel@ximian.com>
165 * interp.c (usage): Add version information
166 (ves_pinvoke_method): Typo fix.
168 Wed Aug 22 20:37:51 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.
177 Wed Aug 22 16:34:03 CEST 2001 Paolo Molaro <lupus@ximian.com>
179 * interp.c: Updates for changes in metadata/. Better output in debug mode
180 and in the stack trace. Completed rethrow handling
182 Tue Aug 21 18:56:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.
195 2001-08-21 Miguel de Icaza <miguel@ximian.com>
197 * Makefile.am (mint_LDADD): Renamed interpreter to mint.
199 2001-08-21 Dietmar Maurer <dietmar@ximian.com>
201 * interp.c (get_named_exception): use the right constructor.
203 Mon Aug 20 18:58:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
205 * interp.c: fix buglet with the leave.s opcode.
207 2001-08-20 Dietmar Maurer <dietmar@ximian.com>
209 * icall.c: changed everything to support the new calling convention
211 * hacks.h: added some macros for FreeBSD
213 * interp.c (get_named_exception): use mono_object_new instead of
214 newobj, initialize the stack before we call the constructor.
216 Sat Aug 18 12:43:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.
229 2001-08-16 Alex Graveley <alex@ximian.com>
231 * Makefile.am (mono_int_LDADD): Link with ../../libffi/libffi.a
232 instead of ../../libffi/.libs/libffi.a.
234 2001-08-10 Dietmar Maurer <dietmar@ximian.com>
236 * interp.c (ves_exec_method): impl CASTCLASS
238 * icall.c: moved the internal call stuff to this file
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
245 2001-08-09 Dietmar Maurer <dietmar@ximian.com>
247 * implemented arrays, but you will need a modified version of
248 Array.cs to get arrays working (will commit soon)
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.
258 2001-08-06 Dietmar Maurer <dietmar@ximian.com>
260 * interp.c (ves_exec_method): impl. NEWARR
261 (ves_exec_method): impl. most LDELEM/STELEM opcodes, LDLEN
263 (mono_get_ansi_string): impl.
264 (mono_lookup_internal_call): impl.
265 (ves_exec_method): implemented internal calls
267 2001-08-05 Dietmar Maurer <dietmar@ximian.com>
269 * interp.c (ves_pinvoke_method): removed all static vars.
271 2001-08-02 Dietmar Maurer <dietmar@ximian.com>
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
277 Wed Aug 1 22:51:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
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().
284 2001-08-01 Dietmar Maurer <dietmar@ximian.com>
286 * interp.c (ves_exec_method): implemented LDSTR
288 2001-07-31 Miguel de Icaza <miguel@ximian.com>
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
294 Make the code compile after I broke it.
296 Tue Jul 31 23:46:33 CEST 2001 Paolo Molaro <lupus@ximian.com>
298 * interp.c: fix cleanup.
299 * Makefile.am: don't link with disassembler library.
301 2001-07-31 Miguel de Icaza <miguel@ximian.com>
303 (ves_exec_method): Cleanup of the source code.
305 Tue Jul 31 20:13:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
307 * interp.c: implement stind.*, ldind.*, ldloca.s opcodes.
308 Provide better tracing with DEBUG_INTERP.
310 Tue Jul 31 17:52:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
312 * interp.c: massive namespace cleanup.
314 Mon Jul 30 20:09:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
316 * interp.c: update to use mono_method->name.
318 Fri Jul 27 20:54:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
320 * interp.c: start implementing callvirt. Classes with
321 class constructors are properly initialized when needed.
322 Fix error introduced in version 1.17.
324 Fri Jul 27 14:03:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
326 * interp.c: implement static field loading and storing.
328 2001-07-27 Dietmar Maurer <dietmar@ximian.com>
330 * interp.c (ves_pinvoke_method): impl.
332 Fri Jul 27 11:49:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
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
339 Thu Jul 26 13:24:51 CEST 2001 Paolo Molaro <lupus@ximian.com>
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).
348 Tue Jul 24 16:51:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
350 * interp.c, hacks.h: moved a few ugly macros out of the code.
351 Implemented switch opcode.
353 2001-07-23 Miguel de Icaza <miguel@ximian.com>
355 * interp.c (newobj): Added function to handle newobj opcode.
357 2001-07-18 Miguel de Icaza <miguel@ximian.com>
359 * interp.c (ves_exec_method): Make the interpreter abort with more
360 information than it currently does.
362 Enable the slow processor, as it is easier to debug.
364 Sun Jul 15 17:50:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
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.