Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / interpreter / ChangeLog
index ec1511ebdb450fc06afcc49c1e8791a0ab711a67..d5cb61dbcbc3f83c445f869c07dcca3e9ae4f733 100644 (file)
@@ -1,3 +1,428 @@
+
+Wed Feb 20 22:18:40 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: more complete runtime_invoke () implementation.
+       Fixed castclass/isinst to work correctly with arrays.
+
+Tue Feb 19 20:21:14 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: implement the runtime_invoke function.
+
+Mon Feb 18 15:49:20 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fix alignment code. Make sure to init classes
+       in more cases. Command-line arguments are interned.
+
+2002-02-16  Radek Doulik  <rodo@ximian.com>
+
+       * interp.c (ves_exec_method): test type of sp [-1] instead of sp
+       [0], because sp [-1] is the value going to be shifted, fixed in
+       CEE_SHL, CEE_SHR, CEE_UN opcodes)
+
+Sat Feb 16 12:00:24 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fixed cut&paste error for ldind.r4 and ldind.r8.
+
+Fri Feb 15 15:07:27 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: use strrchr instead of rindex. use _isnan and _finite on
+       win32 systems.
+
+2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
+
+       * interp.c (ves_exec_method): replace 
+       'g_assert (sp->type = VAL_VALUETA)' with 
+       'g_assert (sp->type == VAL_VALUETA)' otherwise
+       the assert always passes. FIXME: should the test have been !=?
+
+2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (stackval_from_data): fix for MONO_TYPE_PTR
+
+Wed Feb 13 16:17:38 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fixed newobj implementation for valuetypes bug found by
+       dietmar. sub.ovf dummy code.
+
+Tue Feb 12 14:08:47 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * hacks.h: check against redefining preprocessor symbol.
+       * interp.c: fix profile info to return more sensible results.
+
+Mon Feb 11 13:05:29 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: added "die on exception" command line argument.
+       When we segfault, set the message in the exception to "Segmentation
+       fault" so people can recognise what's going on.
+
+2002-02-10  Miguel de Icaza  <miguel@ximian.com>
+
+       * interp.c (ves_exec_method): Compare the element_class type token
+       in the class we got as well, instead of the element class vs the
+       toplevel class.
+
+       This fixes the invalid cast exceptions during unboxing
+
+Fri Feb 8 13:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: use opcode information from libmetadata.
+
+2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (ves_exec_method): CEE_UNBOX: use element_class for
+       type check.
+
+2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c (main): impl. __array_Address icall
+
+Fri Feb 1 16:03:53 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: exception fixes. Use mono_method_pointer_get ()
+       to easy porting to other archs. Some support for overflow detection.
+
+2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
+
+       * interp.c, jit.c (main): install runtime_exec_main handler
+       (main): bug fix - call TlsAlloc () before we execute code
+
+2002-01-23  Dick Porter  <dick@ximian.com>
+
+       * interp.c: Added some kludges to cope with CONV_OVF_I2,
+       CONV_OVF_I4 and ADD_OVF so that number formatting works.  Also
+       initialise and cleanup the network support.
+
+Thu Jan 10 20:59:59 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c, interp.h: add a flag to mono_create_trampoline ()
+       to handle runtime methods.
+
+Sat Jan 5 15:45:14 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: allow classname:method name in --debug argument.
+       Fix box opcode for valuetypes. Fix a few opcode to take a 16 bit
+       index instead of 32 (stloc, ldloc, starg, etc.).
+
+Thu Jan 3 23:19:27 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: temporary mul.ovf, mul.ovf.un, add.ovf.un implementations
+       to get the compiler going.
+
+Mon Dec 24 17:23:45 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fix ldc.i8.
+
+Thu Dec 20 20:09:48 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: fix delegate method invocation to handle both
+       static and instance methods.
+
+Tue Dec 18 18:48:50 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: make segv_handler static, handle runtime methods in stack
+       trace.
+
+Thu Dec 13 20:24:28 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: correctly handle exceptions generated in C code.
+       Install an handler for SIGSEGV. Bare-bones profiler and hook for the
+       verifier.
+
+Mon Dec 3 17:15:44 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * interp.c: call mono_init() after registering internal calls.
+
+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.