2004-11-12 Ben Maurer * transform.c: Fix bug with delegates in interp. 2004-11-10 Lluis Sanchez Gual * interp.c: Added MonoRemotingTarget parameter to signature interp_create_remoting_trampoline. Tue Nov 9 17:28:48 CET 2004 Paolo Molaro * interp.c: update to exception clause structure changes. 2004-11-08 Ben Maurer * interp.c: warning free 2004-10-29 Zoltan Varga * Makefile.am (libgc_libs): Do some automake magic so libmono/mono depends on libmonogc. Wed Sep 22 19:06:02 CEST 2004 Paolo Molaro * interp.c: updates for stack walk interface. 2004-09-09 Lluis Sanchez Gual * interp.c: In interp_walk_stack, don't crash if the context is not set (this may happen if the method is called by unmanaged code). 2004-08-17 Ben Maurer * interp.c: thread local alloc 2004-08-05 Bernie Solomon * interp.c: (mono_interp_init) use g_thread_supported to stop multiple g_thread_init calls. Also attach domain to thread like mono_jit_init 2004-07-31 Bernie Solomon * interp.h: add mono_interp_ftnptr_to_delegate * transform.c (generate): use mono_interp_ftnptr_to_delegate as ical function. * interp.c: add mono_interp_ftnptr_to_delegate to create interpreter style delegate. fixes pinvoke3 2004-07-28 Lluis Sanchez Gual * interp.c: Use mono_init_from_assembly instead of mono_init. 2004-07-27 Bernie Solomon * transform.c (mono_interp_transform_method): quick fix to cope with the fake ptr classes 2004-07-26 Bernie Solomon * mintops.def: more options on ICALL op code * interp.c: cope with exception in ICALL ops, more of them * transforms.c: more ICALL opcodes 2004-07-21 Bernie Solomon * mintops.def: rename the ICALL op codes to give a better clue about their signature. * transform.c (generate): use new ICALL types and add a case for two args + a result * interp.c (ves_exec_method_with_context): new ICALL op codes. 2004-07-21 Bernie Solomon * mintops.def: add MINT_DUP_VT * transform.c (generate): cope with CEE_DUP on value type * interp.c (ves_exec_method_with_context): implement MINT_DUP_VT (interp_mono_runtime_invoke): don't unbox this for valuetypes here as it is now done in the callers. 2004-07-09 Ben Maurer * interp.c: register gc roots 2004-07-08 Zoltan Varga * interp.c mintops.def transform.c: Replace CEE_MONO_PROC with CEE_MONO_ICALL. 2004-07-05 Zoltan Varga * mintops.h: Applied patch from Marcin Krzyzanowski (krzak@pld-linux.org). Add support for unaligned access on little endian machines. * interp.c:Applied patch from Marcin Krzyzanowski (krzak@pld-linux.org). Fix crash seen on amd64. 2004-06-24 David Waite * interp.c: change to C90-style comments from C99/C++-style Mon Jun 21 14:06:03 CEST 2004 Paolo Molaro * interp.h: API updates. 2004-05-21 Bernie Solomon * transform.c: ignore new LMF opcodes 2004-05-20 Lluis Sanchez Gual * interp.c, interp.h: Use the new methods for handling thread.abort. 2004-05-04 Zoltan Varga * interp.c (ves_exec_method_with_context): Disable explicit assignment of 'esi' to the ip variable, since it causes register allocation errors on some versions of gcc. Fixes #58010. 2004-04-29 Bernie Solomon * transform.c (generate): missed a couple of places that should use ADD_CODE so buffer gets grown properly. * interp.c (interp_mono_runtime_invoke): restore state better on catching exception via longjmp here 2004-04-29 Bernie Solomon * transform.c: * interp.c: Implement STARG for valuetypes as mcs needs it. 2004-04-28 Bernie Solomon * transform.c: Make sure ENSURE_I4 is called on 32 bit machines too. (mono_interp_transform_method): allow some stack space for tracing to work. 2004-04-26 David Waite * interp.h: remove comma from end of enumeration constants declarations 2004-04-21 Bernie Solomon * interp.h: put in space for old type field for PPC as tramp.c assumes it. Quick fix until that's fixed. * interp.c: reenable instruction tracing for DEBUG_INTERP 2004-04-19 Bernie Solomon * Makefile.am: * interp.h: * interp.c: now interprets different VM code * mintops.h: * mintops.def: * mintops.c: definition of new VM code * transform.c: convert CIL to new VM code 2004-04-14 Zoltan Varga * interp.c (ves_exec_method_with_context): Add support for STRWLPARRAY marshalling convention. 2004-03-29 Bernie Solomon * interp.c interp.h: remove child from MonoInvocation as it isn't used. 2004-03-25 Martin Baulig * interp.c (stackval_from_data): Added MONO_TYPE_GENERICINST. (stackval_to_data): Added MONO_TYPE_GENERICINST. (calc_offsets): Use mono_class_get_full() and mono_get_method_full(). (ves_exec_method_with_context): Likewise. 2004-03-04 Lluis Sanchez Gual * interp.c: Get the type of transparent proxies from its remote_class. 2004-02-02 Zoltan Varga * interp.c (ves_exec_method_with_context): Add new marshalling conventions. 2004-01-22 Zoltan Varga * interp.c (mono_main): Remove call to mono_verify_corlib (), since the verification code is not up-to-date. 2004-01-19 Bernie Solomon * interp.c (ves_exec_method_with_context): get_native_wrapper removed and call mono_marshal_get_native_wrapper directly with new DllNotFoundException handling Mon Jan 19 17:52:33 CET 2004 Paolo Molaro * interp.c: eliminate CSIZE macro. 2004-01-15 Zoltan Varga * interp.c (ves_array_set): Check for ArrayTypeMismatchException. 2004-01-12 Gonzalo Paniagua Javier * interp.c: call setlocale (). Fixes bug #52100. 2003-12-19 Bernie Solomon * embed.h, main.c: new files to enable embedding the interpreter * interp.c: make main callable from main.c rearrange main for embedding * Makefile.am: changes now most code is in a library 2003-11-21 Lluis Sanchez Gual * interp.c: Added support for context static fields. 2003-10-31 Zoltan Varga * interp.c (mono_create_method_pointer): New function which contains the arch independent part of method wrapper creation. Add a cache for the wrapper code, since Delegate::Equals depends on the wrapper address being constant for a method. Fixes #50366. 2003-10-30 Bernie Solomon * interp.c: (ves_exec_method_with_context) we need to lookup internal calls now. don't free type in CEE_SIZEOF. fix CEE_NEWOBJ inside wrapper methods 2003-10-24 Zoltan Varga * interp.c: Update after appdomain changes. 2003-10-13 Bernie Solomon * interp.c - set large stack size on HP 64bit 2003-10-02 Bernie Solomon * hacks.h - work round HP 64 bit problem with isunordered 2003-10-03 Zoltan Varga * interp.c (dump_frame): Avoid crash on frames without a method. Patch sam@superduper.net (sam clegg). Fixes #46197. (ves_exec_method_with_context): Fix unbox casting. 2003-09-25 Bernie Solomon * interp.c - reinstate use of mono_marshal_get_delegate_invoke for ordering and fix CALLI to handle wrapper. More wrapper handling in CALL and LDSTR. Add another string conversion case. 2003-09-25 Zoltan Varga * interp.c (ves_exec_method): Fix warning. (ves_exec_method_with_context): Fix CGT_UN and CLT_UN. Patch by David Waite (mass@akuma.org). 2003-9-24 Bernie Solomon * interp.c: I broke calling native delegates reinstate old code for the moment. 2003-9-22 Bernie Solomon * interp.c: use mono_marshal_get_delegate_invoke to get delegate invocation order consistent. Fix THROW_EX, fix ip in overflow exceptions. Fri Sep 12 10:42:08 CEST 2003 Paolo Molaro * interp.c, interp.h: patch from Bernie Solomon : 64 bit/opcodes/exception handling fixes. 2003-08-30 Zoltan Varga * interp.c: Use mono_field_from_token () in the appropriate places. This simplifies the code and also fixes #48051. 2003-08-27 Zoltan Varga * interp.c (main): Fix the order of initialization calls so it maches the order in the JIT.Patch by Bernie Solomon (bernard@ugsolutions.com). Also remove the unused ms mutex. * interp.c: Get rid of metadata_section. 2003-08-22 Zoltan Varga * interp.c (main): Call g_thread_init () to make glib thread-safe. Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for reporting this. 2003-08-18 Zoltan Varga * interp.c: Get rid of duplicate definition of CHECK_MUL_OVERFLOW. * interp.h interp.c: Get rid of VAL_VALUETA, use VAL_MP instead. Fix the INITOBJ opcode which was the only user of VALUETA. 2003-08-16 Zoltan Varga * interp.c (ves_exec_method): Implemented mul.ovf correctly for int32 and int64. Implement the conv.ovf opcodes for all argument types. 2003-08-15 Zoltan Varga * interp.c (ves_exec_method): Handle non-valuetypes in CEE_STOBJ. Fixes #46781. (ves_exec_method): Added support for the synchronized flag to the interpreter. Also fixed the CALLI opcode, and made exception handling work though the managed-unmanaged barrier. Fri Jul 25 19:06:27 CEST 2003 Paolo Molaro * interp.c: updates for new instructions. 2003-07-22 Zoltan Varga * interp.c: Use the new metadata_section lock instead of metadata_lock. Patch by Bernie Solomon (bernard@ugsolutions.com). Fri Jul 18 15:11:44 CEST 2003 Paolo Molaro * interp.c: 64 bit fixes from Laurent Morichetti . Install cleanup function. 2003-07-13 Zoltan Varga * interp.c: Keep alloca()-d data on a free list to prevent stack overflow errors when valuetypes are allocated in a loop. Fixes #27420. Is the new code still faster than using malloc/free ? * interp.c (ves_array_get): Add index checking to ves_array_get/set. Fixes decimal-array.exe. * interp.c (interp_mono_runtime_invoke): Unbox value type instances before calling the method. Fixes appdomain2.exe. * interp.c: Fix warnings. * interp.c: Report unhandled exceptions correctly. * interp.c: Implement CEE_ISINST and CEE_CASTCLASS using mono_object_isinst. Fixes bug #45539 and reflection-enum.exe. Tue May 27 16:36:41 CEST 2003 Paolo Molaro * interp.c: don't use relative numbering stuff. Tue May 27 12:18:44 CEST 2003 Paolo Molaro * interp.c: update for mono_class_vtable() changes. Tue May 13 16:43:18 CEST 2003 Paolo Molaro * interp.c: handle thread static fields. Sun Apr 27 13:27:59 CEST 2003 Paolo Molaro * interp.c: check for arraytypemismatch. 2003-04-23 Martin Baulig * interp.c: When running with --dieonex, use the debugging code to print source lines in the backtrace. 2003-02-09 Gonzalo Paniagua Javier * interp.c: added a dummy mono_runtime_install_handlers function to avoid crashing when ves_pinvoke_method tries to call it. 2003-02-06 Piers Haken * interp.c: warning cleanups 2002-11-15 Dick Porter * interp.c: mono_runtime_init() now has an extra parameter for thread attaching. 2002-10-31 Dick Porter * Makefile.am: The previous automake-1.6 fix broke automake-1.4 on cygwin. Try again. 2002-09-27 Dick Porter * interp.c: Tell glib what the program name is, by passing it the name of the managed file we're executing 2002-08-28 Dick Porter * interp.c: mono_set_rootdir() doesnt take any args now * Makefile.am: Export HOST_CC and turn on optimisation for w32 builds 2002-08-28 Nick Drochak * interp.c: check and throw exception if needed for overflow on multiplication of integer types. 2002-08-07 Dietmar Maurer * interp.c (interp_walk_stack): removed the createdelegate icall 2002-08-02 Dietmar Maurer * interp.c (get_virtual_method): support proxies (ves_exec_method): impl. LDFLD/STFLD for proxies. Fri Aug 2 13:00:41 CEST 2002 Paolo Molaro * interp.c, interp.h: implemented exception trap for runtime_invoke and handle exceptions across managed/unmanaged boundaries. 2002-08-01 Dietmar Maurer * interp.c (stackval_from_data): add pinvoke argument (stackval_to_data): add pinvoke argument. We need consider the fact that unmanages structures may have different sizes. (ves_pinvoke_method): do not call stackval_from_data if the result is a value type. Wed Jul 31 17:47:11 CEST 2002 Paolo Molaro * interp.c: simplified some more branch code. Wed Jul 31 16:50:42 CEST 2002 Paolo Molaro * interp.c: fixed indentation, simplified some code. Wed Jul 31 14:29:43 CEST 2002 Paolo Molaro * interp.c: fix so that mint can at least get to executing Main(). 2002-07-31 Dietmar Maurer * interp.c: use the new marshaling code. better delegate/remoting support. (ves_exec_method): bug fix - directly jump to handle_exception. 2002-07-29 Dietmar Maurer * interp.c (main): install compile_method handler Wed Jul 24 13:02:12 CEST 2002 Paolo Molaro * interp.c: implemented stack walking function. Fri Jul 19 14:21:18 CEST 2002 Paolo Molaro * interp.c: fix float boxing on LE systems. Sat Jul 13 19:54:56 CEST 2002 Paolo Molaro * interp.c: advance ip in conv.r.un. 2002-07-01 Dick Porter * interp.c (ves_exec): Removed unneeded argument to mono_runtime_run_main() 2002-06-25 Dick Porter * interp.c (ves_exec): Pass the assembly to mono_runtime_run_main Wed Jun 19 17:01:37 CEST 2002 Paolo Molaro * interp.c: un-broke after stack trace changes. Fri May 31 16:17:20 CEST 2002 Paolo Molaro * interp.c, hacks.h: compiler compatibility fixes. Fri May 31 13:25:57 CEST 2002 Paolo Molaro * interp.c, mint.1: added --config command line option. Thu May 30 14:14:16 CEST 2002 Paolo Molaro * interp.c: lookup P/Invoke method addr only when needed. 2002-05-29 Dietmar Maurer * interp.c (ves_exec_method): free type in CEE_SIZEOF Tue May 28 16:10:49 CEST 2002 Paolo Molaro * interp.c: fixed SIZEOF to work with typedef/typeref. Fri May 24 15:33:50 CEST 2002 Paolo Molaro * interp.c: added partial async delegate and remoting support. Thu May 23 18:45:38 CEST 2002 Paolo Molaro * interp.c: special case string ctors in invoke. Handle null object in throw. Misc integer type mismatch fixes. 2002-05-23 Dietmar Maurer * interp.c (ves_runtime_method): share more code with the jit. Wed May 22 12:31:40 CEST 2002 Paolo Molaro * interp.c: fixed finally handling. In trace mode show exception handling operations and the contents of the stack in the same line as the executing instruction. 2002-05-20 Miguel de Icaza * interp.c: Updated help display. 2002-05-20 Radek Doulik * interp.c (dump_stack): print boxed values for --noptr (ves_exec_method): use stackval_to_data as pointed out by lupus 2002-05-17 Radek Doulik * interp.c (dump_stack): if --noptr then print content of strings in form [str:] 2002-05-16 Radek Doulik * interp.c (ves_exec_method): use data.i instead of data.l in i32 case (ves_exec_method): set type in I64 <--> I32 conversions 2002-05-15 Radek Doulik * interp.c (ves_runtime_method): moved stackval_from_data call inside #else branch, consulted on irc with lupus 2002-05-15 Dietmar Maurer * interp.c (ves_exec_method): use new mono_unhandled_exception() 2002-05-14 Radek Doulik * interp.c: introduced new --noptr option to suppres pointer address printing. I find this useful for comparing trace outputs while porting to ppc Tue May 14 16:37:55 CEST 2002 Paolo Molaro * interp.c: some finally handling fixes and compilation fixes for changes in the runtime lib. 2002-04-30 Dick Porter * interp.c: Tell glib to not abort when g_log() etc print recursively Mon Apr 22 16:52:03 CEST 2002 Paolo Molaro * interp.c: handle muslticast delegates. Implement a couple more convert opcodes. Pretend we spend some time jitting... 2002-04-20 Dietmar Maurer * interp.c (ves_exec_method): support internalcall String constructors 2002-04-19 Dan Lewis * interp.c: support for new szarray format. Tue Apr 16 20:12:58 CEST 2002 Paolo Molaro * interp.c: removed profiling code (moved to common library). Implemented inlining for some special methods. 2002-04-15 Patrik Torstensson * interp.c: Using fullnames when adding icall's (array) Wed Apr 10 16:07:23 CEST 2002 Paolo Molaro * interp.c: quick implementation for opcodes needed by the new parse routines in corlib. Tue Apr 9 13:08:26 CEST 2002 Paolo Molaro * interp.c: make the interp thread-safe wrt the metadata lib. Mon Apr 8 17:15:48 CEST 2002 Paolo Molaro * interp.c: display return value with --trace. Call mono_runtime_init (). 2002-04-06 Dietmar Maurer * interp.c (interp_mono_runtime_invoke): handle more types, removed runtime_exec_main Thu Apr 4 11:36:52 CEST 2002 Paolo Molaro * interp.c: don't try to get an IL opcode for runtime and internal call methods. Thu Mar 28 16:54:51 CET 2002 Paolo Molaro * interp.c: spring warning cleanup. Thu Mar 28 12:03:28 CET 2002 Paolo Molaro * interp.c: check obj address in stfld. 2002-03-27 Dietmar Maurer * interp.c (ves_exec_method): CASTCLASS: fix for transparent proxy Tue Mar 26 20:09:10 CET 2002 Paolo Molaro * interp.c: set frame->ip before dumping the stack trace. Tue Mar 26 19:54:45 CET 2002 Paolo Molaro * interp.c: remove glib mem vtable code. 2002-03-26 Dick Porter * interp.c: Show thread ID's in trace output. New option "--traceclassinit" to put debug output around runtime_class_init(). Make sure all options are displayed in usage(). Tue Mar 26 17:03:14 CET 2002 Paolo Molaro * interp.c: support fieldrefs when accessing instance fields. Mon Mar 25 12:59:52 CET 2002 Paolo Molaro * interp.c: allow tracing to be done on a per-method basis. Fix interp_mono_runtime_invoke() to deal correcttly with the return value. Disable glib mem vtable setting. Thu Mar 21 18:08:37 CET 2002 Paolo Molaro * interp.c: set stack trace info when throwing an exception. Thu Mar 21 17:32:46 CET 2002 Paolo Molaro * interp.c: intern strings before executing a method (and don't intern command line arguments anymore). Add sanity checks in alloca use. Sat Mar 16 19:15:18 CET 2002 Paolo Molaro * interp.c: restore frame on return from unmanaged calls. Add support for continuing execution up to x IL insn. Fix exception handling when an exception is raised in the catch handler of the same method that issued the first one. 2002-03-11 Dietmar Maurer * interp.c (ves_runtime_method): set method_info field Mon Mar 11 14:48:07 CET 2002 Paolo Molaro * interp.c: corlib consistency checls moved to libmetadata. Mon Mar 11 11:27:27 CET 2002 Paolo Molaro * interp.c: use the new facilities in debug-helpers to disassemble CIL code and match method names to MonoMethods. Thu Mar 7 17:20:59 CET 2002 Paolo Molaro * interp.c: Boehm-GC enable. Fix some overflow opcodes. Tue Mar 5 18:12:40 CET 2002 Paolo Molaro * interp.c: fix non-debug build and some more opcode work. Mon Mar 4 11:21:44 CET 2002 Paolo Molaro * interp.c: print the address of 'this' in tracing mode. Thu Feb 28 19:18:59 CET 2002 Paolo Molaro * interp.c: add checks for more binary consistency. 2002-02-27 Dietmar Maurer * interp.c (interp_mono_runtime_invoke): use alloca instead of g_new0 Tue Feb 26 11:43:34 CET 2002 Paolo Molaro * interp.c: added profiling for object creation. Mon Feb 25 17:37:07 CET 2002 Paolo Molaro * interp.c: use correct value for guint64 max. 2002-02-22 Radek Doulik * interp.c: s/gulong/guint64 as it differs on ppc Wed Feb 20 22:18:40 CET 2002 Paolo Molaro * 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 * interp.c: implement the runtime_invoke function. Mon Feb 18 15:49:20 CET 2002 Paolo Molaro * interp.c: fix alignment code. Make sure to init classes in more cases. Command-line arguments are interned. 2002-02-16 Radek Doulik * 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 * interp.c: fixed cut&paste error for ldind.r4 and ldind.r8. Fri Feb 15 15:07:27 CET 2002 Paolo Molaro * interp.c: use strrchr instead of rindex. use _isnan and _finite on win32 systems. 2002-02-14 Jeffrey Stedfast * 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 * interp.c (stackval_from_data): fix for MONO_TYPE_PTR Wed Feb 13 16:17:38 CET 2002 Paolo Molaro * 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 * 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 * 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 * 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 * interp.c: use opcode information from libmetadata. 2002-02-05 Dietmar Maurer * interp.c (ves_exec_method): CEE_UNBOX: use element_class for type check. 2002-02-04 Dietmar Maurer * interp.c (main): impl. __array_Address icall Fri Feb 1 16:03:53 CET 2002 Paolo Molaro * 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 * interp.c, jit.c (main): install runtime_exec_main handler (main): bug fix - call TlsAlloc () before we execute code 2002-01-23 Dick Porter * 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 * 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 * 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 * 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 * interp.c: fix ldc.i8. Thu Dec 20 20:09:48 CET 2001 Paolo Molaro * interp.c: fix delegate method invocation to handle both static and instance methods. Tue Dec 18 18:48:50 CET 2001 Paolo Molaro * interp.c: make segv_handler static, handle runtime methods in stack trace. Thu Dec 13 20:24:28 CET 2001 Paolo Molaro * 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 * interp.c: call mono_init() after registering internal calls. 2001-11-30 Dick Porter * interp.c: Replace get_named_exception() with mono_exception_from_name() Fri Nov 30 12:05:21 CET 2001 Paolo Molaro * interp.c: calculate locals and args offsets only once per method call. Cache trampoline code as well. 2001-11-23 Dietmar Maurer * interp.c (ves_exec_method): bug fix for exception5.cs Mon Nov 19 11:33:00 CET 2001 Paolo Molaro * 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 * 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 * 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 * Makefile.am (mint_LDADD): Don't need THREAD_LIBS any more 2001-11-07 Miguel de Icaza * 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 * interp.c: updates for changes in array code. Fri Nov 2 19:06:54 CET 2001 Paolo Molaro * 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 * interp.c (ves_exec_method): use relative numbering for runtime type checks (and make it work with interfaces) 2001-10-15 Dietmar Maurer * interp.c: removed newobj() 2001-10-10 Dietmar Maurer * 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 * 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 * interp.c: fixes for changes in metadata. 2001-10-04 Dick Porter * 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 * interp.c: set frame->ip in the leave opcode. Make db_methods static. Sun Sep 30 11:57:15 CEST 2001 Paolo Molaro * interp.c: compiler and ANSI C portability fixes. Fri Sep 28 19:37:46 CEST 2001 Paolo Molaro * 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 * interp.c: fixed get_virtual_method () to deal with interface methods better. Mon Sep 24 18:50:25 CEST 2001 Paolo Molaro * 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 * 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 * Makefile.am (mint_LDADD): rename PTHREAD_LIBS to THREAD_LIBS 2001-09-23 Dick Porter * interp.c (main): Do some thread setup and cleanup around the call to ves_exec() 2001-09-21 Dick Porter * Makefile.am (mint_LDADD): Added PTHREAD_LIBS to the link line Thu Sep 20 16:32:42 CEST 2001 Paolo Molaro * 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 * interp.c: fix some 64 bit issues. Safer support for delegates. 2001-09-12 Miguel de Icaza * interp.c (ves_exec_method): implement conv.u8 opcode. Mon Sep 10 20:20:36 CEST 2001 Paolo Molaro * interp.c: endian fixes, comments. Fri Sep 7 18:45:38 CEST 2001 Paolo Molaro * 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 * 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 * interp.c (ves_pinvoke_method): removed the libffi dependency 2001-08-29 Dietmar Maurer * 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 * 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 * 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 * interp.c: warn and exit when Main () expects the cmdline arguments instead of creashing. 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.