Commit Graph

  • 604d64b0b8
    Merge pull request #22 from M4GNV5/cherry-misc master Aleksey Demakov 2020-05-10 23:12:34 +0300
  • 1eba11d8d5 add inversions of OP_BR_IFALSE and OP_BR_ITRUE to _jit_invert_condition #22 Jakob Löw 2020-05-10 19:13:59 +0200
  • 5e9d0cb9a6 Add memory arena stub arena Aleksey Demakov 2020-04-18 00:46:02 +0300
  • b27000841c Make all _jit_cache_* functions static and remove the prefix; remove some commented out code Aleksey Demakov 2019-09-12 12:06:28 +0300
  • 942c988db1 Fix last ChangeLog entry Aleksey Demakov 2020-04-17 23:30:31 +0300
  • 3997a29821 Include jit-dump.h and jit-memory.h from jit.h Aleksey Demakov 2020-04-17 22:38:02 +0300
  • 718931dcdb
    Merge pull request #21 from tromey/declare-functions Aleksey Demakov 2020-01-10 08:14:07 +0700
  • c608b30f38 Check for functions that are documented but not declared #21 Tom Tromey 2020-01-09 16:58:10 -0700
  • 77fbfeceaa
    Merge pull request #19 from tromey/branch-optimize Aleksey Demakov 2020-01-09 14:02:30 +0700
  • 6a7e6d9eb3 Add unit test for CFG transformation #19 Tom Tromey 2020-01-07 01:10:40 -0700
  • 06149d7834 Optimize a jump-around-branch case Tom Tromey 2018-02-27 18:26:43 -0700
  • d2aa30874c Add tests/unit subdirectory Tom Tromey 2020-01-06 16:26:27 -0700
  • 5fba3155b0
    Merge pull request #18 from tromey/fix-some-warnings Aleksey Demakov 2019-12-28 12:43:12 +0300
  • 757576f7f6 Fix some warnings #18 Tom Tromey 2019-12-27 16:09:20 -0700
  • 7016d5478e
    Merge pull request #17 from M4GNV5/cherry-misc Aleksey Demakov 2019-10-06 13:44:26 +0300
  • 39c7c2ea38 add a changelog entry for 54e7090, e385fd1 and f75ded9 #17 Jakob Löw 2019-10-01 00:35:24 +0200
  • f75ded9ad5 in the x86-64 backend use lea, inc and dec where applicable in add and sub opcodes Jakob Löw 2019-09-28 23:26:01 +0200
  • e385fd1101 fix possible SIGSEGV on conversion Jakob Löw 2019-08-30 11:39:39 +0200
  • 54e709009b add a simple unwinding check which makes the unwinder stop when the next frame is below the current one Jakob Löw 2018-09-12 16:17:03 +0200
  • b9cf37655d Fix out-of-tree builds Aleksey Demakov 2019-09-04 10:30:01 +0300
  • 7f7439dc04 Cosmetic changes Aleksey Demakov 2019-08-10 19:55:10 +0300
  • b1b8182852 Remove JITINT64CXX macro, move jit_size_t definition. Aleksey Demakov 2019-08-10 15:33:54 +0300
  • 0516c2695d
    Merge pull request #15 from M4GNV5/nesting Aleksey Demakov 2019-08-09 14:11:02 +0300
  • d6c0eb9d60 make sure values don't change their address #15 Jakob Löw 2018-12-30 02:11:52 +0100
  • 4740b2753e make sure struct return pointer arguments are always before parent frame pointer arguments Jakob Löw 2018-12-03 17:09:17 +0100
  • e6dcb55fce remove all calls to _jit_gen_fix_value from jit-insn.c, re-adding the import opcode, which is transformed into an add_relative in jit-compile.c Jakob Löw 2018-12-03 00:40:08 +0100
  • 5281baec45 merge the latest commits from upstream Jakob Löw 2018-10-26 19:00:36 +0200
  • 554c9f5c75 Fix _jit_load_opcode() invocation in interpreter (thanks Jakob Löw <jakob@m4gnus.de>) Aleksey Demakov 2018-10-25 13:05:42 +0300
  • 4096122076
    Merge f5f0b917b5 into d09676d2f3 #14 Jakob Löw 2018-09-09 11:57:59 +0000
  • d09676d2f3 Remove reference to __CYGWIN32__ v0.1.4 Ken Brown 2018-09-01 10:27:48 -0400
  • 22d66c3c4d Don't use Win32 API on Cygwin Ken Brown 2018-09-01 10:27:47 -0400
  • 59340183e8 Remove obsolete compiler option on Cygwin Ken Brown 2018-09-01 10:27:46 -0400
  • a79b4c421d gitignore minimal binary Aleksey Demakov 2018-09-01 13:18:45 +0300
  • 1c5c925b47 add a chanelog entry for the new nesting system Jakob Löw 2018-08-28 00:11:36 +0200
  • ec029283de fix importing parameter in the interpreter as they reside in a custom memory location Jakob Löw 2018-08-27 23:27:17 +0200
  • 00f8f12fb8 Add a special OP for retrieving the frame pointer Jakob Löw 2018-08-26 18:17:55 +0200
  • 7da475e60b jit-rules-x86-64.c: dont declare var in for initializer Aleksey Demakov 2018-08-25 16:32:13 +0300
  • d109997f50 Fix a typo Aleksey Demakov 2018-08-21 00:28:22 +0300
  • 92a44c67e7 fix a warning Aleksey Demakov 2018-08-21 00:27:37 +0300
  • 1f4e7b1d86 Fix libjitdynamic.p.in (thanks Eli Zaretskii). Aleksey Demakov 2018-08-19 11:32:06 +0300
  • 217a496c9f implement nesting in the interpreter backend Jakob Löw 2018-08-16 14:45:33 +0200
  • 27299578ee Merge branch 'gsoc' of git://github.com/M4GNV5/libjit into gsoc-2018 gsoc-2018 Aleksey Demakov 2018-08-15 03:34:30 +0300
  • 9ad05b4c05 Bump version to 0.1.4 Aleksey Demakov 2018-08-15 03:02:34 +0300
  • ad84940ad9 edit TODO Aleksey Demakov 2018-08-15 02:49:48 +0300
  • d436212b0c Fix jit_vmem_commit() return value Aleksey Demakov 2018-08-15 02:28:04 +0300
  • f5f0b917b5 fix a bug with live ranges which end in but also live out a block #14 Jakob Löw 2018-08-13 12:40:11 +0200
  • 017817fe70 bugfix commit (see below) Jakob Löw 2018-08-10 00:43:19 +0200
  • cffe11af0c retrieve the frame pointer by using incoming_reg rather than incoming_frame Jakob Löw 2018-07-31 13:47:12 +0200
  • 1099665f08 make jit_dump_live_ranges public, and allow it to write to any FILE * stream Jakob Löw 2018-08-04 10:21:09 +0200
  • a52c3aa45e more bugfixes (see commit description for details) Jakob Löw 2018-08-01 22:11:17 +0200
  • 8a5545d74f move dump_live_ranges in jit-flow.c to _jit_dump_live_ranges in jit-dump.c and use it in both jit-flow.c and jit-graph-reg-alloc.c Jakob Löw 2018-07-31 18:38:09 +0200
  • d94cee8d19 Tons of bugs fixed i found when testing the new register allocator Jakob Löw 2018-07-29 00:29:05 +0200
  • f829fa87c1 don't include jit-rules-x86-64.inc in jit-flow.c but rather add a plattform indipendent function which fills the register map struct Jakob Löw 2018-07-29 00:03:37 +0200
  • 653166a773 let the new register allocator behave correctly around JIT_OP_INCOMING_* and JIT_OP_OUTGOING_* ops and mark used registers as touched Jakob Löw 2018-07-28 23:24:09 +0200
  • 945a031935 implement instruction flags so we dont create spill ranges for values which can be in memory and fix an edge case where dest and value2 interfere Jakob Löw 2018-07-28 00:32:55 +0200
  • baf0e11305 let a local live range and live ranges which touch the start and end of their block interfere Jakob Löw 2018-07-27 23:29:21 +0200
  • 3e4ffc0308 seperate JIT_INCLUDE_REGISTER_USAGE and JIT_INCLUDE RULES in the generated files also fixing incorrect register usage reporting with local patterns Jakob Löw 2018-07-27 16:30:53 +0200
  • 688943982e move values in the correct registers before and after instructions Jakob Löw 2018-07-25 20:42:50 +0200
  • 638ffd3610 create live ranges for constants which are required in registers Jakob Löw 2018-07-25 16:17:20 +0200
  • 32344255b9 implement using register coloring when compiling instructions. Still some bugs (e.g. register arguments and constants in registers) Jakob Löw 2018-07-25 15:51:14 +0200
  • 48a62f8044 when two values have distinct types which, on the target architecture, cannot be put in the same register, their live ranges do not interfere Jakob Löw 2018-07-23 14:11:47 +0200
  • 2ba1340ead make the neighbor count track the amount of registers used by neighbors and add the spill count to the debugging output Jakob Löw 2018-07-22 21:32:06 +0200
  • 6af84b5f69 fix an integer overflow condition in _jit_bitset_(test|clear|set)_bit Jakob Löw 2018-07-22 21:17:01 +0200
  • fea32cfe01 put tiny live ranges on the stack last, so they are colored first to prevent them from getting spilled Jakob Löw 2018-07-22 17:18:09 +0200
  • fda0abe8cc fix a few bugs when simplifying and selecting live ranges to the stack, especially with fixed ranges Jakob Löw 2018-07-22 15:51:51 +0200
  • 63194c8344 remove jit_insn.index as instructions are held in an array so their pointers can be used for comparing order Jakob Löw 2018-07-21 21:55:53 +0200
  • dd3949fdf5 implement live range spilling and only use suitable registers for live ranges Jakob Löw 2018-07-20 19:47:08 +0200
  • 0aa1203c18 correctly handle clobbered register classes Jakob Löw 2018-07-20 16:27:56 +0200
  • e53dd5771e remove register_count in favor of is_fixed Jakob Löw 2018-07-20 14:27:02 +0200
  • 5ef22207ab correctly create dummy live ranges for clobbered values and unnamed registers Jakob Löw 2018-07-20 02:21:17 +0200
  • 58ef5c5fc0 A live range is alive for [start;end[ Which means a live range x starting at an end point of y does not interfere with y Jakob Löw 2018-07-18 15:40:24 +0200
  • ca7378be4c implement the select step of the chaitin/briggs register allocator (no spilling yet) Jakob Löw 2018-07-14 23:14:20 +0200
  • d92b76e74d split the graph coloring register allocation process into the steps defined by chaitin and briggs and implement the simplify step Jakob Löw 2018-07-14 15:18:19 +0200
  • 71b655f430 fix register usage declarations Jakob Löw 2018-07-12 21:37:51 +0200
  • 67e701eafa store the neigbors of each live range in a bitset Jakob Löw 2018-07-12 21:24:08 +0200
  • b2ff2c6b60 implement interference graph building (for now its just printed to stdout) Jakob Löw 2018-07-11 22:53:02 +0200
  • d1ed1c4600 correctly declare functions from jit-flow.c and allow insn_list functions to be used elsewhere Jakob Löw 2018-07-11 22:39:26 +0200
  • e61cc8fe3b fix register usage output using wrong args index Jakob Löw 2018-07-09 12:12:59 +0200
  • af7757f8ae store live ranges for dest, value1 and value2 with an instruction so we can set preferred colors and later know to register a value is colored with at that specific point Jakob Löw 2018-07-09 12:12:35 +0200
  • cdb67acd20 use the generated register usage cases for adding additional live ranges to a function Jakob Löw 2018-06-30 00:19:09 +0200
  • 4586f39eac correctly store information about clobbered registers and where each value resides Jakob Löw 2018-06-29 12:52:00 +0200
  • 0fb6827d69 add an include to architecture specific instruction files for defining registers used by each instruction Jakob Löw 2018-06-24 00:07:00 +0200
  • c88bd4ea9d correctly initialize bitsets Jakob Löw 2018-06-11 23:35:23 +0200
  • fcfa6ab9c5 implement live range computation Jakob Löw 2018-05-31 02:31:45 +0200
  • 05f14d52f2 use the locals to temporaries function to recalculate more properties of functions, blocks and values like indices and counts Jakob Löw 2018-05-31 02:26:47 +0200
  • fac68d548d fix bitsets and use them instead of linked lists for UEVar, VarKill and LiveOut sets Jakob Löw 2018-05-29 20:01:45 +0200
  • f03d6fa421 for some instructions the dest value is actually a source and therefore is not killed but rather used Jakob Löw 2018-05-28 18:40:57 +0200
  • de8fa499fb fix the epilog before tail calls and tail calls to constant addresses (tail calls still seem to be broken though as arguments are not passed to the callee) Jakob Löw 2018-05-26 14:19:48 +0200
  • cc9910171c rewrite the x86-64 prolog/epilog generating code so that it omits stack and base pointer operations when possible Jakob Löw 2018-05-25 13:54:41 +0200
  • 4e92d3143d add an optimization pass which turns local variables which are used in only one block into temporaries (this might happen when blocks have been removed by other optimizations) Jakob Löw 2018-05-24 22:09:45 +0200
  • c977829d71 run optimizations multiple times until nothing changes Jakob Löw 2018-05-23 22:43:55 +0200
  • cfe7c0b443 make the optimization level int based, switching on more and more optimizations (i.e. LiveOut calculation which is now used in jit-live to determine if a non-temporary value is live at the end of a block) Jakob Löw 2018-05-22 13:53:36 +0200
  • ccecedf641 correctly free live_out, var_kill and upward_expose sets Jakob Löw 2018-05-22 11:50:54 +0200
  • 13eaac6ce0 add an instruction for calling a nested function via a function and a frame pointer Jakob Löw 2017-09-19 09:01:35 +0200
  • ba1ebf2746 fix some small bugs with importing nested values Jakob Löw 2017-09-13 12:31:27 +0200
  • 87735cf139 remove the unused opcodes setup_for_sibling, setup_for_nested and import Jakob Löw 2017-09-13 01:28:20 +0200
  • 25c88f5e1c automatically find and pass parent frame pointers when calling nested functions Jakob Löw 2017-09-13 01:15:31 +0200
  • 780b4b816a Fix some issues with importing values Jakob Löw 2017-09-12 16:43:03 +0200
  • a40e0bc422 rework how nested values are accessed Jakob Löw 2017-09-11 22:56:01 +0200
  • 14467e0cd7 implement LiveOut computation using the data flow analysis algorithms from 'Engineering a Compiler' Jakob Löw 2018-05-22 01:49:44 +0200