Mon Aug 27 20:16:37 CEST 2001 Paolo Molaro * interp.c: merge isinst/castclass handling. Hopefully implement the right semantics for handling callvirt correctly (changes here and there to support it). Integrate bugfix from Dietmar quickly so he needs to handle the cvs conflict:-) Mon Aug 27 12:20:32 CEST 2001 Paolo Molaro * interp.c: fix compilation and updates for changes in metadata/. 2001-08-26 Miguel de Icaza * interp.c (main): Add option handling for the interpreter, support the `--trace' option. Sun Aug 26 23:04:46 CEST 2001 Paolo Molaro * interp.c: get in a dummy virtual method dispatch. Added support for int64, native int and native uint as arguments. Added debug enter/leave for icall and pinvoke methods, too. Implement opcodes conv.i, conv.i8, ldelema. Sun Aug 26 11:37:30 CEST 2001 Paolo Molaro * interp.h, interp.c: load also a MonoClass pointer when we load an address on the stack. Implemented conv.i1, conv.i2, con.i4, conv.u4, conv.r4, conv.r8. Print the arguments in the stack trace and the name of the exception. Sat Aug 25 15:56:03 CEST 2001 Paolo Molaro * interp.c: Implemented some opcodes: starg.s, ldobj, isinst, ldarg, starg, ldloc, ldloca, stloc, initobj, cpblk, sizeof. Sat Aug 25 12:57:36 CEST 2001 Paolo Molaro * interp.c: handle enumerations specially (not as valuetypes). Fri Aug 24 19:34:04 CEST 2001 Paolo Molaro * interp.h, interp.c: add support for valuetypes. Fri Aug 24 16:09:20 CEST 2001 Paolo Molaro * interp.c: updates for merge of MonoParam in MonoType. Thu Aug 23 12:04:34 CEST 2001 Paolo Molaro * interp.c: removed beforefieldinit check, it's a useless flag. Added a couple more test cases to tests/ dir. 2001-08-22 Miguel de Icaza * interp.c (usage): Add version information (ves_pinvoke_method): Typo fix. Wed Aug 22 20:37:51 CEST 2001 Paolo Molaro * interp.c: simplified init_class (). Make sure a class is fully initialized before executing a method in the class. Search for the class constructor only on beforefieldinit classes. Implement a bunch of opcodes: br, brfalse, brtrue, beq, bge, bgt, blt, ble, bne.un, bge.un, bgt.un, ble.un, blt.un, stind.i, ldflda, ldsflda, ldelem.i8, stelem.i8, leave. Wed Aug 22 16:34:03 CEST 2001 Paolo Molaro * interp.c: Updates for changes in metadata/. Better output in debug mode and in the stack trace. Completed rethrow handling Tue Aug 21 18:56:19 CEST 2001 Paolo Molaro * interp.c: new macro INIT_FRAME() to properly initialize a MonoInvocation. Fixed a couple of buglets in exception code: increase stack pointer when pushing the exception for catch blocks, initialize frame->ex_handler to NULL, correctly try all the catch blocks (don't incorrectly fallback on filter handling). Added a couple more checks where we may need to throw an exception. Added more exception creation functions. Changed stackval_from_data() to take the target stackval as argument. Implemented a couple more opcodes. * interp.h: prepare stackval for value type code. 2001-08-21 Miguel de Icaza * Makefile.am (mint_LDADD): Renamed interpreter to mint. 2001-08-21 Dietmar Maurer * interp.c (get_named_exception): use the right constructor. Mon Aug 20 18:58:36 CEST 2001 Paolo Molaro * interp.c: fix buglet with the leave.s opcode. 2001-08-20 Dietmar Maurer * icall.c: changed everything to support the new calling convention * hacks.h: added some macros for FreeBSD * interp.c (get_named_exception): use mono_object_new instead of newobj, initialize the stack before we call the constructor. Sat Aug 18 12:43:38 CEST 2001 Paolo Molaro * interp.c, interp.h: added support code to create exceptions. Changed interncal calling convnetion over to MonoInvocation, to support exceptions, walking the stack back and forward and passing the 'this' pointer separately (remove the cludges required before to pass this on the stack). Use alloca heavily for both local vars and a copy of the incoming arguments. Init local vars to zero. Simplify stackval_from_data() and stackval_to_data() to only take a pointer instead of pointer + offset. Implement a few exceptions-related opcodes and the code to run finally, fault and catch blocks as well as a stack trace if no handler is found. 2001-08-16 Alex Graveley * Makefile.am (mono_int_LDADD): Link with ../../libffi/libffi.a instead of ../../libffi/.libs/libffi.a. 2001-08-10 Dietmar Maurer * interp.c (ves_exec_method): impl CASTCLASS * icall.c: moved the internal call stuff to this file * interp.c (ves_exec_method): impl. BOX/UNBOX (ves_icall_System_Array_GetValue): impl. (ves_icall_System_Array_SetValue): impl. added myself to Authors 2001-08-09 Dietmar Maurer * implemented arrays, but you will need a modified version of Array.cs to get arrays working (will commit soon) * interp.c (ves_icall_array_Set): impl. (ves_icall_array_Get): impl. (ves_icall_array_ctor): impl. (ves_icall_System_Array_GetRank): impl. (ves_icall_System_Array_GetLength): impl. (ves_icall_System_Array_GetLowerBound): impl. (mono_lookup_internal_call): impl. 2001-08-06 Dietmar Maurer * interp.c (ves_exec_method): impl. NEWARR (ves_exec_method): impl. most LDELEM/STELEM opcodes, LDLEN (newarr): impl. (mono_get_ansi_string): impl. (mono_lookup_internal_call): impl. (ves_exec_method): implemented internal calls 2001-08-05 Dietmar Maurer * interp.c (ves_pinvoke_method): removed all static vars. 2001-08-02 Dietmar Maurer * interp.c (ves_exec_method): found a way to do unordered compares, implemented CEE_BNE_UN_S, CEE_BGE_UN_S, CEE_BGT_UN_S, CEE_BLE_UN_S, CEE_BLT_UN_S Wed Aug 1 22:51:38 CEST 2001 Paolo Molaro * interp.c: handle also MONO_TYPE_CLASS to/from the stack. Change locals to be a memory blob, instead of the structured (but wrong) stackval. Implement bne.un.s opcode. Make the program exit with the error code from Main(). 2001-08-01 Dietmar Maurer * interp.c (ves_exec_method): implemented LDSTR 2001-07-31 Miguel de Icaza * interp.c (GET_NATI): Switched from using nati_t to cli/types.h m_i type. Maybe we should rename the types to be m_i_t instead of m_i alone. Make the code compile after I broke it. Tue Jul 31 23:46:33 CEST 2001 Paolo Molaro * interp.c: fix cleanup. * Makefile.am: don't link with disassembler library. 2001-07-31 Miguel de Icaza (ves_exec_method): Cleanup of the source code. Tue Jul 31 20:13:59 CEST 2001 Paolo Molaro * interp.c: implement stind.*, ldind.*, ldloca.s opcodes. Provide better tracing with DEBUG_INTERP. Tue Jul 31 17:52:53 CEST 2001 Paolo Molaro * interp.c: massive namespace cleanup. Mon Jul 30 20:09:58 CEST 2001 Paolo Molaro * interp.c: update to use mono_method->name. Fri Jul 27 20:54:00 CEST 2001 Paolo Molaro * interp.c: start implementing callvirt. Classes with class constructors are properly initialized when needed. Fix error introduced in version 1.17. Fri Jul 27 14:03:19 CEST 2001 Paolo Molaro * interp.c: implement static field loading and storing. 2001-07-27 Dietmar Maurer * interp.c (ves_pinvoke_method): impl. Fri Jul 27 11:49:19 CEST 2001 Paolo Molaro * interp.c: Removed some debugging printouts. Made stackval_to_data static. Handle also instance methods in CALL opcode. Fix ret to properly deal with void functions. Fixed constructor to leave the object on the stack. Thu Jul 26 13:24:51 CEST 2001 Paolo Molaro * interp.c: ves_exec_method () doesn't take a MonoImage arg anymore. Use the method cache in MonoImage. Updates to mache recent changes in metadata. Fix newobj code to use new metadata features. Call the class constructor after allocationg the object. Implemented load field and store field opcodes (the support functions need to be finished). Tue Jul 24 16:51:09 CEST 2001 Paolo Molaro * interp.c, hacks.h: moved a few ugly macros out of the code. Implemented switch opcode. 2001-07-23 Miguel de Icaza * interp.c (newobj): Added function to handle newobj opcode. 2001-07-18 Miguel de Icaza * interp.c (ves_exec_method): Make the interpreter abort with more information than it currently does. Enable the slow processor, as it is easier to debug. Sun Jul 15 17:50:23 CEST 2001 Paolo Molaro * Started changelog. * interp.c: use new mono_get_method () function to get the complete info on a method invocation: we support now method invocation with multiple (or zero) simple arguments and with or without a return value. Implement also a couple more opcodes.