2001-11-30 Dick Porter <dick@ximian.com>
[mono.git] / mono / interpreter / ChangeLog
index ca65978ec276565d9e01c8df861f30e7dfedfc3d..c5e731419d3e3ceb4c2a8db72a882d6324de9018 100644 (file)
@@ -1,3 +1,431 @@
+2001-11-30  Dick Porter  <dick@ximian.com>
+
+       * interp.c: Replace get_named_exception() with
+       mono_exception_from_name()
+
+Fri Nov 30 12:05:21 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: calculate locals and args offsets only once
+       per method call. Cache trampoline code as well.
+
+2001-11-23  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (ves_exec_method): bug fix for exception5.cs
+
+Mon Nov 19 11:33:00 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: start adding support for handling exceptions across
+       managed/unmanaged boundaries. Cleanup Delegate method invocation.
+       Pass the correct target object in Delegate::Invoke and use the correct
+       'this' pointer in ldvirtftn (bugs pointed out by Dietmar).
+
+Thu Nov 15 17:40:24 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: handle enums with underlying type different from int32.
+       More checks for C structs <-> C# objects consistency.
+
+Wed Nov 14 19:23:00 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: move the stack frame dumping code to a function so it can
+       be called from the debugger. Fix virtual method lookup for interfaces.
+       Throw exceptions instead of aborting in more places.
+       Print also the message in an exception. Updates for field renames in
+       corlib.
+
+2001-11-09  Dick Porter  <dick@ximian.com>
+
+       * Makefile.am (mint_LDADD): Don't need THREAD_LIBS any more
+
+2001-11-07  Miguel de Icaza  <miguel@ximian.com>
+
+       * interp.c: Include stdlib to kill warning.
+       (check_corlib): Adjust format encodings to remove warnings.
+
+Wed Nov 7 15:47:36 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: updates for changes in array code.
+
+Fri Nov 2 19:06:54 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: hanlde field refs. Throw an exception on NULL references.
+       Check consistency of corlib types with the C struct representation.
+
+2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (ves_exec_method): use relative numbering for runtime
+       type checks (and make it work with interfaces)
+
+2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c: removed newobj()
+
+2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (get_virtual_method): use the vtable
+       (arch_compile_method): added to compute vtable entry
+
+Mon Oct 8 16:14:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: use the accessors provided in object.h to deal with
+       MonoArrays. Updates for API renames in metadata. Throw exception
+       in ldelema if index is out of bounds.
+
+Mon Oct 8 10:44:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fixes for changes in metadata.
+
+2001-10-04  Dick Porter  <dick@ximian.com>
+
+       * interp.c (ves_runtime_method): init_class() the
+       mono_defaults.delegate_class
+       Include mono-endian.h not endian.h
+
+Tue Oct 2 18:51:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: set frame->ip in the leave opcode. Make db_methods static.
+
+Sun Sep 30 11:57:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: compiler and ANSI C portability fixes.
+
+Fri Sep 28 19:37:46 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: Implemented ldtoken, conv.ovf.i. Use MonoClass->byval_arg
+       (and remove related kludges). Don't choke on access to arrays of
+       references. Throw an exception when an internalcall or P/Invoke
+       function don't have an implementation. Throw and EngineException
+       for unimplemented opcodes.
+
+Tue Sep 25 11:12:35 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fixed get_virtual_method () to deal with interface
+       methods better.
+
+Mon Sep 24 18:50:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: catch a few more error conditions with exceptions instead of
+       erroring out.
+       Don't use g_print() in stack traces because it doesn't work with
+       some float values.
+       When we call an instance method of a valuetype class, unbox the 'this'
+       argument if it is an object.
+       Use mono_ldstr () to implement the ldstr opcode: it takes care of
+       interning the string if necessary.
+       Implemented new opcodes: ckfinite, cgt.un, clt.un, ldvirtftn, ldarga.
+       Fixes to handle NaNs when comparing doubles.
+       Make sure the loaded assembly has an entry point defined.
+       Fixed portability bugs in neg and not opcodes.
+
+2001-09-24  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (ves_exec_method): LDC_I4: 8bit constants are signed
+       (ves_exec_method): bug fix for NOT/NEG
+       (main): fix bug in parameter parsing
+
+2001-09-23  Dick Porter  <dick@ximian.com>
+
+       * Makefile.am (mint_LDADD): rename PTHREAD_LIBS to THREAD_LIBS
+
+2001-09-23  Dick Porter  <dick@ximian.com>
+
+       * interp.c (main): Do some thread setup and cleanup around the
+       call to ves_exec()
+
+2001-09-21  Dick Porter  <dick@ximian.com>
+
+       * Makefile.am (mint_LDADD): Added PTHREAD_LIBS to the link line
+
+Thu Sep 20 16:32:42 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: implemented some more opcodes: calli, rem.un,
+       shr.un, conv.u, cpobj, stobj, conv.r.un, conv.ovf.i1.un,
+       conv.ovf.i2.un, conv.ovf.i4.un, conv.ovf.i8.un, conv.ovf.i.un,
+       conv.ovf.u1.un, conv.ovf.u2.un, conv.ovf.u4.un, conv.ovf.u8.un,
+       conv.ovf.u.un.
+       Fix some 64 bit issues in the array element access code and a small bug.
+       Throw an exception on index out of range instead of asserting.
+       Throw an exception on a NULL array instead of dying.
+       Stomped a memory corruption bug (.cctor methods were freed after
+       executing them, but they are stores in MonoClass now...).
+       Added a simple facility to invoke the debugger when a named
+       function is entered (use the cmdline option --debug method_name).
+       * interp.h: fix 64 bit issue.
+
+Tue Sep 18 13:21:33 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fix some 64 bit issues. Safer support for delegates.
+
+2001-09-12  Miguel de Icaza  <miguel@ximian.com>
+
+       * interp.c (ves_exec_method): implement conv.u8 opcode. 
+
+Mon Sep 10 20:20:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: endian fixes, comments.
+
+Fri Sep 7 18:45:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c, interp.h: make ves_exec_method () and stackval_from_data ()
+       non static. Implement a couple of runtime methods needed to
+       use delegates (ves_runtime_method ()).
+       Implemented ldftn opcode.
+
+Thu Sep 6 15:41:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * Makefile.am: link to libmonoarch.
+       * interp.h, interp.c: use mono_create_trampoline ().
+       Pass the command line arguments to Main (String[]) methods.
+
+2001-08-30  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (ves_pinvoke_method): removed the libffi dependency
+
+2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (ves_array_set): moved from icall.c
+       (ves_array_get): moved from icall.c
+
+       * icall.c: moved to metadata/icall.c
+
+Wed Aug 29 12:46:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: some small optimizations. Fixes to do signed
+       compares when needed. Change C++ comments into C.
+       Implemented cgt, clt. Added --opcode-count cmdline switch.
+
+2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (ves_exec_method): better check for value types (get
+       the class to detect if we have a value type), implemented CEE_CONV_U1,
+       CEE_CONV_U2, CEE_CEQ
+       
+
+Mon Aug 27 21:30:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: warn and exit when Main () expects the cmdline arguments
+       instead of creashing.
+
+Mon Aug 27 20:16:37 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * interp.c: fix compilation and updates for changes in metadata/.
+
+2001-08-26  Miguel de Icaza  <miguel@ximian.com>
+
+       * interp.c (main): Add option handling for the interpreter,
+       support the `--trace' option.
+
+Sun Aug 26 23:04:46 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * interp.c: handle enumerations specially (not as valuetypes).
+
+Fri Aug 24 19:34:04 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.h, interp.c: add support for valuetypes.
+
+Fri Aug 24 16:09:20 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: updates for merge of MonoParam in MonoType.
+
+Thu Aug 23 12:04:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * 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  <miguel@ximian.com>
+
+       * interp.c (usage): Add version information
+       (ves_pinvoke_method): Typo fix.
+
+Wed Aug 22 20:37:51 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * 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  <miguel@ximian.com>
+
+       * Makefile.am (mint_LDADD): Renamed interpreter to mint.
+
+2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (get_named_exception): use the right constructor.
+
+Mon Aug 20 18:58:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fix buglet with the leave.s opcode.
+
+2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * 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  <alex@ximian.com>
+
+       * Makefile.am (mono_int_LDADD): Link with ../../libffi/libffi.a
+       instead of ../../libffi/.libs/libffi.a.
+
+2001-08-10  Dietmar Maurer  <dietmar@ximian.com>
+
+       * 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  <dietmar@ximian.com>
+
+       * 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  <dietmar@ximian.com>
+
+       * 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  <dietmar@ximian.com>
+
+       * interp.c (ves_pinvoke_method): removed all static vars.
+
+2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * 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  <dietmar@ximian.com>
+
+       * interp.c (ves_exec_method): implemented LDSTR
+
+2001-07-31  Miguel de Icaza  <miguel@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * interp.c: fix cleanup.
+       * Makefile.am: don't link with disassembler library.
+
+2001-07-31  Miguel de Icaza  <miguel@ximian.com>
+
+       (ves_exec_method): Cleanup of the source code.
+
+Tue Jul 31 20:13:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: implement stind.*, ldind.*, ldloca.s opcodes.
+       Provide better tracing with DEBUG_INTERP.
+
+Tue Jul 31 17:52:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: massive namespace cleanup.
+
+Mon Jul 30 20:09:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: update to use mono_method->name.
+
+Fri Jul 27 20:54:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * 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 <lupus@ximian.com>
+
+       * interp.c: implement static field loading and storing.
+
+2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (ves_pinvoke_method): impl.
+
 Fri Jul 27 11:49:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
 
        * interp.c: Removed some debugging printouts. Made stackval_to_data