2001-11-15 Dietmar Maurer * Makefile.am (mono_SOURCES): renamed testjit to mono * x86.brg: added debugging support * testjit.c: added support for value types, CFG improvements * emit-x86.c (enter_method): handle value types (tree_allocate_regs): impl. a better way to handle chain rules 2001-11-10 Dietmar Maurer * x86.brg (INITOBJ): bug fix: initialize data before use, simplified the code. 2001-11-09 Miguel de Icaza * testjit.c (mono_analyze_stack): Remove compiler warning by testing against NULL. 2001-11-09 Dick Porter * Makefile.am (testjit_LDADD): Don't need THREAD_LIBS any more 2001-11-09 Dietmar Maurer * testjit.c (mono_analyze_stack): new BOX impl. * x86.brg: implemented INITOBJ * testjit.c (mono_analyze_stack): finished array support (mono_analyze_stack): reimplemented DUP instruction 2001-11-08 Dietmar Maurer * testjit.c (MAKE_STELEM, MAKE_LDELEM): we build a tree which represents the address of the element. This way we can emit highly optimized x86 instructions to access elements (using base+index+offset adressing mode) 2001-11-07 Miguel de Icaza * mempool.c: Include string.h to kill warning. * testjit.c: Add typecast to kill warning. * x86.brg: Include string.h to eliminate warning. * emit-x86.c (tree_allocate_regs): Fix arguments to g_warning to kill warning. 2001-11-07 Dietmar Maurer * emit-x86.c (enter_method): print out all method arguments (x86_magic_trampoline): impl. (arch_create_simple_jit_trampoline): we use different trampolines for static methods (no need to write the address back into to vtable). 2001-11-06 Dietmar Maurer * emit-x86.c (arch_create_jit_trampoline): optimised trampoline to use less the 16 bytes. * x86.brg: code cleanup 2001-11-05 Dietmar Maurer * testjit.c: bug fixes. * emit-x86.c (leave_method): print result values 2001-11-03 Dietmar Maurer * emit-x86.c (enter_method): new debugging code (leave_method): new debbuging code, this functions are called when you use the new option --trace-calls 2001-11-02 Dietmar Maurer * testjit.c: impl. STELEM_XX, STELEM_XX * x86.brg: impl. LDLEN, LDELEMA 2001-10-15 Dietmar Maurer * x86.brg: added some experimental code for CALL instructions - still not found the optimal way to do it. * testjit.c (map_stind_type): add support for value types with a size of 1, 2 or 4 bytes, implemented CEE_UNBOX, CEE_LDOBJ, CEE_LDSTR, CEE_LDFLD, CEE_LDFLDA, CEE_STFLD, CEE_NEWOBJ, CEE_CEQ (ctree_create_newobj): impl. * emit-x86.c (tree_allocate_regs): removed allocation code for addr nonterminal. (get_address): use a simple, but bug free search instead of the buggy binary search. 2001-10-12 Dietmar Maurer * testjit.c: support virtual functions * x86.brg: support different addressing modes for calls 2001-10-11 Dietmar Maurer * testjit.c: impl. STFLD 2001-10-10 Dietmar Maurer * x86.brg: impl. CEQ 2001-10-04 Dick Porter * testjit.c: * emit-x86.c: include mono-endian.h not endian.h 2001-10-02 Dietmar Maurer * testjit.c (ctree_create_dup): really duplicate the tree. attach the arguments to the CALL node. Added a new macro to make argument order configurable (ARCH_ARGS_RIGHT_TO_LEFT). 2001-10-01 Dietmar Maurer * interp.brg: the burm based interpreter: added the file as example. 2001-09-27 Dietmar Maurer * x86.brg: cleanup * testjit.c: impl. LDIND/STIND/LDLOCA, use g_malloc to alloc static data. (map_stind_type): support enum types (map_ldind_type): support enum types * emit-x86.c (tree_allocate_regs): added code to support register allocation for addressing modes trees. (tree_emit): bug fix: we have to emit all mono_burg_functins. The previous impl. did not work for chain rules. (compute_branches): support for SWITCH statements * x86.brg: added rules to model x86 addressing modes 2001-09-26 Dietmar Maurer * emit-x86.c (compute_branches): implemented SWITCH * testjit.c (mono_create_forest): implemented LDIND/STIND opcodes (map_ldind_type): add enumeration types. (map_stind_type): add enumeration types. * emit-x86.c (arch_compile_method): more documentation. * testjit.c: moved the architecture specific things to emit-x86.c and x86.brg. Added more documentation. code cleanup. 2001-09-25 Dietmar Maurer * x86.brg: we now have different types of addresses: ADDR_L for local values, ADDR_A for arguments and ADDR_G for global addresses. We also use LDIND_XX token to load values from a specific address instead of LDLOC/STLOC. * testjit.c: use the new adressing scheme everywhere: LDIND _XX (ADDR_X), and STIND_XX (ADDR_X, tree) 2001-09-24 Dietmar Maurer * testjit.c (main): fix bug in parameter parsing * x86.brg: impl. more opcodes 2001-09-23 Dick Porter * Makefile.am (testjit_LDADD): rename PTHREAD_LIBS to THREAD_LIBS 2001-09-23 Dietmar Maurer * testjit.c: use the memory pool to avoid memory leaks 2001-09-22 Dietmar Maurer * x86.brg: increment the stack pointer after function calls 2001-09-21 Dick Porter * Makefile.am (testjit_LDADD): Added PTHREAD_LIBS to the link line 2001-09-21 Dietmar Maurer * x86.brg: implemented long MUL/DIV (MB_OPT_LEVEL): define optimisation level macro * testjit.c (tree_allocate_regs): added a way to prevent EDX usage for operations like idiv. it is also possible to assign specific registers. 2001-09-20 Dietmar Maurer * x86.brg: added basic support for long * testjit.c (mono_compile_method): implemented POP 2001-09-19 Miguel de Icaza * testjit.c (usage): Added a couple of more usage options. 2001-09-19 Dietmar Maurer * x86.brg: added more floating point grammar * testjit.c (mono_compile_method): make local offsets negative * x86.brg: added some floating point trees * testjit.c (mono_compile_method): arguments on the runtime stack are at least 4 bytes * x86.brg: partly implemented 8,16 bit integers * testjit.c (get_address): mark basic blocks 2001-09-18 Dietmar Maurer * x86.brg: added some rules to optimize code * testjit.c (get_address): use a binary search to get the address (main): added an option to debug the jit (-d) Tue Sep 18 13:19:16 CEST 2001 Paolo Molaro * testjit.c: better/faster align code. Handle ldloc.s and stloc.s. 2001-09-17 Miguel de Icaza * testjit.c (mono_compile_method): Provide better error reporting. 2001-09-17 Dietmar Maurer * testjit.c (tree_get_address): impl. to fix address bug (tree_get_address): make sure that we can only jump to the first instruction of a tree. * x86.brg: emit real code for calls * testjit.c (create_jit_trampoline): creates a function to trigger jit compilation. (mono_compile_method): reversed argument order 2001-09-15 Dietmar Maurer * x86.brg (stmt): don't emit unnecessary register moves * testjit.c (tree_allocate_regs): free registers earlier 2001-09-14 Dietmar Maurer * x86.brg: branch addresses are now resolved * testjit.c (compute_branches): compute address of branches * x86.brg: emit real x86 instructions * testjit.c: call objdump to disassemble the output 2001-09-13 Dietmar Maurer * x86.brg: use the right offsets to access local variables and arguments. * emit-x86.c: only save/restore callee saved registers if they are really modified. * testjit.c (tree_allocate_regs): use the new MonoRegSet to allocate registers. (mono_compile_method): changed the tree for mothod calls * regset.h: impl. * regset.c: impl. 2001-09-10 Miguel de Icaza * x86.brg: Use Unix assembly syntax. * emit-x86.c: support code, should be moved * testjit.c: Use GPtrArrays instead of GLists, as those are very inefficient at appends. * Renamed `create_new_leave' to `create_new_leaf'