fixed NEWOBJ and SIZEOF bugs
[mono.git] / mono / interpreter / ChangeLog
1 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
2
3         * interp.c (stackval_from_data): fix for MONO_TYPE_PTR
4
5 Wed Feb 13 16:17:38 CET 2002 Paolo Molaro <lupus@ximian.com>
6
7         * interp.c: fixed newobj implementation for valuetypes bug found by
8         dietmar. sub.ovf dummy code.
9
10 Tue Feb 12 14:08:47 CET 2002 Paolo Molaro <lupus@ximian.com>
11
12         * hacks.h: check against redefining preprocessor symbol.
13         * interp.c: fix profile info to return more sensible results.
14
15 Mon Feb 11 13:05:29 CET 2002 Paolo Molaro <lupus@ximian.com>
16
17         * interp.c: added "die on exception" command line argument.
18         When we segfault, set the message in the exception to "Segmentation
19         fault" so people can recognise what's going on.
20
21 2002-02-10  Miguel de Icaza  <miguel@ximian.com>
22
23         * interp.c (ves_exec_method): Compare the element_class type token
24         in the class we got as well, instead of the element class vs the
25         toplevel class.
26
27         This fixes the invalid cast exceptions during unboxing
28
29 Fri Feb 8 13:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30
31         * interp.c: use opcode information from libmetadata.
32
33 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
34
35         * interp.c (ves_exec_method): CEE_UNBOX: use element_class for
36         type check.
37
38 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
39
40         * interp.c (main): impl. __array_Address icall
41
42 Fri Feb 1 16:03:53 CET 2002 Paolo Molaro <lupus@ximian.com>
43
44         * interp.c: exception fixes. Use mono_method_pointer_get ()
45         to easy porting to other archs. Some support for overflow detection.
46
47 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
48
49         * interp.c, jit.c (main): install runtime_exec_main handler
50         (main): bug fix - call TlsAlloc () before we execute code
51
52 2002-01-23  Dick Porter  <dick@ximian.com>
53
54         * interp.c: Added some kludges to cope with CONV_OVF_I2,
55         CONV_OVF_I4 and ADD_OVF so that number formatting works.  Also
56         initialise and cleanup the network support.
57
58 Thu Jan 10 20:59:59 CET 2002 Paolo Molaro <lupus@ximian.com>
59
60         * interp.c, interp.h: add a flag to mono_create_trampoline ()
61         to handle runtime methods.
62
63 Sat Jan 5 15:45:14 CET 2002 Paolo Molaro <lupus@ximian.com>
64
65         * interp.c: allow classname:method name in --debug argument.
66         Fix box opcode for valuetypes. Fix a few opcode to take a 16 bit
67         index instead of 32 (stloc, ldloc, starg, etc.).
68
69 Thu Jan 3 23:19:27 CET 2002 Paolo Molaro <lupus@ximian.com>
70
71         * interp.c: temporary mul.ovf, mul.ovf.un, add.ovf.un implementations
72         to get the compiler going.
73
74 Mon Dec 24 17:23:45 CET 2001 Paolo Molaro <lupus@ximian.com>
75
76         * interp.c: fix ldc.i8.
77
78 Thu Dec 20 20:09:48 CET 2001 Paolo Molaro <lupus@ximian.com>
79
80         * interp.c: fix delegate method invocation to handle both
81         static and instance methods.
82
83 Tue Dec 18 18:48:50 CET 2001 Paolo Molaro <lupus@ximian.com>
84
85         * interp.c: make segv_handler static, handle runtime methods in stack
86         trace.
87
88 Thu Dec 13 20:24:28 CET 2001 Paolo Molaro <lupus@ximian.com>
89
90         * interp.c: correctly handle exceptions generated in C code.
91         Install an handler for SIGSEGV. Bare-bones profiler and hook for the
92         verifier.
93
94 Mon Dec 3 17:15:44 CET 2001 Paolo Molaro <lupus@ximian.com>
95
96         * interp.c: call mono_init() after registering internal calls.
97
98 2001-11-30  Dick Porter  <dick@ximian.com>
99
100         * interp.c: Replace get_named_exception() with
101         mono_exception_from_name()
102
103 Fri Nov 30 12:05:21 CET 2001 Paolo Molaro <lupus@ximian.com>
104
105         * interp.c: calculate locals and args offsets only once
106         per method call. Cache trampoline code as well.
107
108 2001-11-23  Dietmar Maurer  <dietmar@ximian.com>
109
110         * interp.c (ves_exec_method): bug fix for exception5.cs
111
112 Mon Nov 19 11:33:00 CET 2001 Paolo Molaro <lupus@ximian.com>
113
114         * interp.c: start adding support for handling exceptions across
115         managed/unmanaged boundaries. Cleanup Delegate method invocation.
116         Pass the correct target object in Delegate::Invoke and use the correct
117         'this' pointer in ldvirtftn (bugs pointed out by Dietmar).
118
119 Thu Nov 15 17:40:24 CET 2001 Paolo Molaro <lupus@ximian.com>
120
121         * interp.c: handle enums with underlying type different from int32.
122         More checks for C structs <-> C# objects consistency.
123
124 Wed Nov 14 19:23:00 CET 2001 Paolo Molaro <lupus@ximian.com>
125
126         * interp.c: move the stack frame dumping code to a function so it can
127         be called from the debugger. Fix virtual method lookup for interfaces.
128         Throw exceptions instead of aborting in more places.
129         Print also the message in an exception. Updates for field renames in
130         corlib.
131
132 2001-11-09  Dick Porter  <dick@ximian.com>
133
134         * Makefile.am (mint_LDADD): Don't need THREAD_LIBS any more
135
136 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
137
138         * interp.c: Include stdlib to kill warning.
139         (check_corlib): Adjust format encodings to remove warnings.
140
141 Wed Nov 7 15:47:36 CET 2001 Paolo Molaro <lupus@ximian.com>
142
143         * interp.c: updates for changes in array code.
144
145 Fri Nov 2 19:06:54 CET 2001 Paolo Molaro <lupus@ximian.com>
146
147         * interp.c: hanlde field refs. Throw an exception on NULL references.
148         Check consistency of corlib types with the C struct representation.
149
150 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
151
152         * interp.c (ves_exec_method): use relative numbering for runtime
153         type checks (and make it work with interfaces)
154
155 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
156
157         * interp.c: removed newobj()
158
159 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
160
161         * interp.c (get_virtual_method): use the vtable
162         (arch_compile_method): added to compute vtable entry
163
164 Mon Oct 8 16:14:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
165
166         * interp.c: use the accessors provided in object.h to deal with
167         MonoArrays. Updates for API renames in metadata. Throw exception
168         in ldelema if index is out of bounds.
169
170 Mon Oct 8 10:44:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
171
172         * interp.c: fixes for changes in metadata.
173
174 2001-10-04  Dick Porter  <dick@ximian.com>
175
176         * interp.c (ves_runtime_method): init_class() the
177         mono_defaults.delegate_class
178         Include mono-endian.h not endian.h
179
180 Tue Oct 2 18:51:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
181
182         * interp.c: set frame->ip in the leave opcode. Make db_methods static.
183
184 Sun Sep 30 11:57:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
185
186         * interp.c: compiler and ANSI C portability fixes.
187
188 Fri Sep 28 19:37:46 CEST 2001 Paolo Molaro <lupus@ximian.com>
189
190         * interp.c: Implemented ldtoken, conv.ovf.i. Use MonoClass->byval_arg
191         (and remove related kludges). Don't choke on access to arrays of
192         references. Throw an exception when an internalcall or P/Invoke
193         function don't have an implementation. Throw and EngineException
194         for unimplemented opcodes.
195
196 Tue Sep 25 11:12:35 CEST 2001 Paolo Molaro <lupus@ximian.com>
197
198         * interp.c: fixed get_virtual_method () to deal with interface
199         methods better.
200
201 Mon Sep 24 18:50:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
202
203         * interp.c: catch a few more error conditions with exceptions instead of
204         erroring out.
205         Don't use g_print() in stack traces because it doesn't work with
206         some float values.
207         When we call an instance method of a valuetype class, unbox the 'this'
208         argument if it is an object.
209         Use mono_ldstr () to implement the ldstr opcode: it takes care of
210         interning the string if necessary.
211         Implemented new opcodes: ckfinite, cgt.un, clt.un, ldvirtftn, ldarga.
212         Fixes to handle NaNs when comparing doubles.
213         Make sure the loaded assembly has an entry point defined.
214         Fixed portability bugs in neg and not opcodes.
215
216 2001-09-24  Dietmar Maurer  <dietmar@ximian.com>
217
218         * interp.c (ves_exec_method): LDC_I4: 8bit constants are signed
219         (ves_exec_method): bug fix for NOT/NEG
220         (main): fix bug in parameter parsing
221
222 2001-09-23  Dick Porter  <dick@ximian.com>
223
224         * Makefile.am (mint_LDADD): rename PTHREAD_LIBS to THREAD_LIBS
225
226 2001-09-23  Dick Porter  <dick@ximian.com>
227
228         * interp.c (main): Do some thread setup and cleanup around the
229         call to ves_exec()
230
231 2001-09-21  Dick Porter  <dick@ximian.com>
232
233         * Makefile.am (mint_LDADD): Added PTHREAD_LIBS to the link line
234
235 Thu Sep 20 16:32:42 CEST 2001 Paolo Molaro <lupus@ximian.com>
236
237         * interp.c: implemented some more opcodes: calli, rem.un,
238         shr.un, conv.u, cpobj, stobj, conv.r.un, conv.ovf.i1.un,
239         conv.ovf.i2.un, conv.ovf.i4.un, conv.ovf.i8.un, conv.ovf.i.un,
240         conv.ovf.u1.un, conv.ovf.u2.un, conv.ovf.u4.un, conv.ovf.u8.un,
241         conv.ovf.u.un.
242         Fix some 64 bit issues in the array element access code and a small bug.
243         Throw an exception on index out of range instead of asserting.
244         Throw an exception on a NULL array instead of dying.
245         Stomped a memory corruption bug (.cctor methods were freed after
246         executing them, but they are stores in MonoClass now...).
247         Added a simple facility to invoke the debugger when a named
248         function is entered (use the cmdline option --debug method_name).
249         * interp.h: fix 64 bit issue.
250
251 Tue Sep 18 13:21:33 CEST 2001 Paolo Molaro <lupus@ximian.com>
252
253         * interp.c: fix some 64 bit issues. Safer support for delegates.
254
255 2001-09-12  Miguel de Icaza  <miguel@ximian.com>
256
257         * interp.c (ves_exec_method): implement conv.u8 opcode. 
258
259 Mon Sep 10 20:20:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
260
261         * interp.c: endian fixes, comments.
262
263 Fri Sep 7 18:45:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
264
265         * interp.c, interp.h: make ves_exec_method () and stackval_from_data ()
266         non static. Implement a couple of runtime methods needed to
267         use delegates (ves_runtime_method ()).
268         Implemented ldftn opcode.
269
270 Thu Sep 6 15:41:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
271
272         * Makefile.am: link to libmonoarch.
273         * interp.h, interp.c: use mono_create_trampoline ().
274         Pass the command line arguments to Main (String[]) methods.
275
276 2001-08-30  Dietmar Maurer  <dietmar@ximian.com>
277
278         * interp.c (ves_pinvoke_method): removed the libffi dependency
279
280 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
281
282         * interp.c (ves_array_set): moved from icall.c
283         (ves_array_get): moved from icall.c
284
285         * icall.c: moved to metadata/icall.c
286
287 Wed Aug 29 12:46:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
288
289         * interp.c: some small optimizations. Fixes to do signed
290         compares when needed. Change C++ comments into C.
291         Implemented cgt, clt. Added --opcode-count cmdline switch.
292
293 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
294
295         * interp.c (ves_exec_method): better check for value types (get
296         the class to detect if we have a value type), implemented CEE_CONV_U1,
297         CEE_CONV_U2, CEE_CEQ
298         
299
300 Mon Aug 27 21:30:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
301
302         * interp.c: warn and exit when Main () expects the cmdline arguments
303         instead of creashing.
304
305 Mon Aug 27 20:16:37 CEST 2001 Paolo Molaro <lupus@ximian.com>
306
307         * interp.c: merge isinst/castclass handling. Hopefully implement
308         the right semantics for handling callvirt correctly (changes
309         here and there to support it). Integrate bugfix from Dietmar quickly
310         so he needs to handle the cvs conflict:-)
311
312 Mon Aug 27 12:20:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
313
314         * interp.c: fix compilation and updates for changes in metadata/.
315
316 2001-08-26  Miguel de Icaza  <miguel@ximian.com>
317
318         * interp.c (main): Add option handling for the interpreter,
319         support the `--trace' option.
320
321 Sun Aug 26 23:04:46 CEST 2001 Paolo Molaro <lupus@ximian.com>
322
323         * interp.c: get in a dummy virtual method dispatch.
324         Added support for int64, native int and native uint as arguments.
325         Added debug enter/leave for icall and pinvoke methods, too.
326         Implement opcodes conv.i, conv.i8, ldelema.
327
328 Sun Aug 26 11:37:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
329
330         * interp.h, interp.c: load also a MonoClass pointer when we load
331         an address on the stack. Implemented conv.i1, conv.i2, con.i4,
332         conv.u4, conv.r4, conv.r8. Print the arguments in the stack trace
333         and the name of the exception.
334
335 Sat Aug 25 15:56:03 CEST 2001 Paolo Molaro <lupus@ximian.com>
336
337         * interp.c: Implemented some opcodes: starg.s, ldobj, isinst,
338         ldarg, starg, ldloc, ldloca, stloc, initobj, cpblk, sizeof.
339
340 Sat Aug 25 12:57:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
341
342         * interp.c: handle enumerations specially (not as valuetypes).
343
344 Fri Aug 24 19:34:04 CEST 2001 Paolo Molaro <lupus@ximian.com>
345
346         * interp.h, interp.c: add support for valuetypes.
347
348 Fri Aug 24 16:09:20 CEST 2001 Paolo Molaro <lupus@ximian.com>
349
350         * interp.c: updates for merge of MonoParam in MonoType.
351
352 Thu Aug 23 12:04:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
353
354         * interp.c: removed beforefieldinit check, it's a useless flag.
355         Added a couple more test cases to tests/ dir.
356
357 2001-08-22  Miguel de Icaza  <miguel@ximian.com>
358
359         * interp.c (usage): Add version information
360         (ves_pinvoke_method): Typo fix.
361
362 Wed Aug 22 20:37:51 CEST 2001 Paolo Molaro <lupus@ximian.com>
363
364         * interp.c: simplified init_class (). Make sure a class
365         is fully initialized before executing a method in the class.
366         Search for the class constructor only on beforefieldinit classes.
367         Implement a bunch of opcodes: br, brfalse, brtrue, beq, bge,
368         bgt, blt, ble, bne.un, bge.un, bgt.un, ble.un, blt.un, stind.i,
369         ldflda, ldsflda, ldelem.i8, stelem.i8, leave.
370
371 Wed Aug 22 16:34:03 CEST 2001 Paolo Molaro <lupus@ximian.com>
372
373         * interp.c: Updates for changes in metadata/. Better output in debug mode
374         and in the stack trace. Completed rethrow handling
375
376 Tue Aug 21 18:56:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
377
378         * interp.c: new macro INIT_FRAME() to properly
379         initialize a MonoInvocation. Fixed a couple of buglets in exception code:
380         increase stack pointer when pushing the exception for catch blocks,
381         initialize frame->ex_handler to NULL, correctly try all the
382         catch blocks (don't incorrectly fallback on filter handling).
383         Added a couple more checks where we may need to throw an
384         exception. Added more exception creation functions.
385         Changed stackval_from_data() to take the target stackval as
386         argument. Implemented a couple more opcodes.
387         * interp.h: prepare stackval for value type code.
388
389 2001-08-21  Miguel de Icaza  <miguel@ximian.com>
390
391         * Makefile.am (mint_LDADD): Renamed interpreter to mint.
392
393 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
394
395         * interp.c (get_named_exception): use the right constructor.
396
397 Mon Aug 20 18:58:36 CEST 2001 Paolo Molaro <lupus@ximian.com>
398
399         * interp.c: fix buglet with the leave.s opcode.
400
401 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
402
403         * icall.c: changed everything to support the new calling convention
404
405         * hacks.h: added some macros for FreeBSD 
406
407         * interp.c (get_named_exception): use mono_object_new instead of
408         newobj, initialize the stack before we call the constructor.
409
410 Sat Aug 18 12:43:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
411
412         * interp.c, interp.h: added support code to create exceptions.
413         Changed interncal calling convnetion over to MonoInvocation, to support
414         exceptions, walking the stack back and forward and passing the 'this'
415         pointer separately (remove the cludges required before to pass this on the
416         stack). Use alloca heavily for both local vars and a copy of the incoming 
417         arguments. Init local vars to zero.
418         Simplify stackval_from_data() and stackval_to_data() to only take a pointer
419         instead of pointer + offset.
420         Implement a few exceptions-related opcodes and the code to run finally, fault and
421         catch blocks as well as a stack trace if no handler is found.
422         
423 2001-08-16  Alex Graveley  <alex@ximian.com>
424
425         * Makefile.am (mono_int_LDADD): Link with ../../libffi/libffi.a
426         instead of ../../libffi/.libs/libffi.a.
427
428 2001-08-10  Dietmar Maurer  <dietmar@ximian.com>
429
430         * interp.c (ves_exec_method): impl CASTCLASS
431
432         * icall.c: moved the internal call stuff to this file
433
434         * interp.c (ves_exec_method): impl. BOX/UNBOX
435         (ves_icall_System_Array_GetValue): impl.
436         (ves_icall_System_Array_SetValue): impl.
437         added myself to Authors
438
439 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
440
441         * implemented arrays, but you will need a modified version of 
442         Array.cs to get arrays working (will commit soon)
443         
444         * interp.c (ves_icall_array_Set): impl.
445         (ves_icall_array_Get): impl.
446         (ves_icall_array_ctor): impl.
447         (ves_icall_System_Array_GetRank): impl.
448         (ves_icall_System_Array_GetLength): impl.
449         (ves_icall_System_Array_GetLowerBound): impl.
450         (mono_lookup_internal_call): impl.
451
452 2001-08-06  Dietmar Maurer  <dietmar@ximian.com>
453
454         * interp.c (ves_exec_method): impl. NEWARR
455         (ves_exec_method): impl. most LDELEM/STELEM opcodes, LDLEN
456         (newarr): impl.
457         (mono_get_ansi_string): impl.
458         (mono_lookup_internal_call): impl.
459         (ves_exec_method): implemented internal calls
460
461 2001-08-05  Dietmar Maurer  <dietmar@ximian.com>
462
463         * interp.c (ves_pinvoke_method): removed all static vars.
464
465 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
466
467         * interp.c (ves_exec_method): found a way to do unordered
468         compares, implemented CEE_BNE_UN_S, CEE_BGE_UN_S, CEE_BGT_UN_S, 
469         CEE_BLE_UN_S, CEE_BLT_UN_S
470         
471 Wed Aug 1 22:51:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
472
473         * interp.c: handle also MONO_TYPE_CLASS to/from the stack.
474         Change locals to be a memory blob, instead of the structured
475         (but wrong) stackval. Implement bne.un.s opcode. Make the program
476         exit with the error code from Main().
477
478 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
479
480         * interp.c (ves_exec_method): implemented LDSTR
481
482 2001-07-31  Miguel de Icaza  <miguel@ximian.com>
483
484         * interp.c (GET_NATI): Switched from using nati_t to cli/types.h
485         m_i type.  Maybe we should rename the types to be m_i_t instead of
486         m_i alone.
487         
488         Make the code compile after I broke it.
489
490 Tue Jul 31 23:46:33 CEST 2001 Paolo Molaro <lupus@ximian.com>
491
492         * interp.c: fix cleanup.
493         * Makefile.am: don't link with disassembler library.
494
495 2001-07-31  Miguel de Icaza  <miguel@ximian.com>
496
497         (ves_exec_method): Cleanup of the source code.
498
499 Tue Jul 31 20:13:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
500
501         * interp.c: implement stind.*, ldind.*, ldloca.s opcodes.
502         Provide better tracing with DEBUG_INTERP.
503
504 Tue Jul 31 17:52:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
505
506         * interp.c: massive namespace cleanup.
507
508 Mon Jul 30 20:09:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
509
510         * interp.c: update to use mono_method->name.
511
512 Fri Jul 27 20:54:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
513
514         * interp.c: start implementing callvirt. Classes with
515         class constructors are properly initialized when needed.
516         Fix error introduced in version 1.17.
517
518 Fri Jul 27 14:03:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
519
520         * interp.c: implement static field loading and storing.
521
522 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
523
524         * interp.c (ves_pinvoke_method): impl.
525
526 Fri Jul 27 11:49:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
527
528         * interp.c: Removed some debugging printouts. Made stackval_to_data
529         static. Handle also instance methods in CALL opcode. Fix ret to properly
530         deal with void functions. Fixed constructor to leave the object on
531         the stack.
532
533 Thu Jul 26 13:24:51 CEST 2001 Paolo Molaro <lupus@ximian.com>
534
535         * interp.c: ves_exec_method () doesn't take a MonoImage arg
536         anymore. Use the method cache in MonoImage. Updates to
537         mache recent changes in metadata. 
538         Fix newobj code to use new metadata features. Call the class
539         constructor after allocationg the object. Implemented load field
540         and store field opcodes (the support functions need to be finished).
541         
542 Tue Jul 24 16:51:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
543
544         * interp.c, hacks.h: moved a few ugly macros out of the code.
545         Implemented switch opcode.
546
547 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
548
549         * interp.c (newobj): Added function to handle newobj opcode.
550
551 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
552
553         * interp.c (ves_exec_method): Make the interpreter abort with more
554         information than it currently does.
555
556         Enable the slow processor, as it is easier to debug.
557
558 Sun Jul 15 17:50:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
559
560         * Started changelog.
561         * interp.c: use new mono_get_method () function to get the complete
562         info on a method invocation: we support now method invocation with
563         multiple (or zero) simple arguments and with or without a return value.
564         Implement also a couple more opcodes.