Commit Graph

88 Commits

Author SHA1 Message Date
Alexey Andreev
96ba2bbf7d Continue developing decompiler 2016-09-17 08:55:59 +03:00
Alexey Andreev
5f2019a9b6 Start creating WASM expression generator 2016-09-17 08:55:59 +03:00
Alexey Andreev
8c08136c9a Start developing WebAssembly model. Implement mostly all expressions 2016-09-17 08:55:59 +03:00
Alexey Andreev
789119e6ea Move ast package off javascript 2016-09-17 08:55:58 +03:00
Alexey Andreev
52ace0c252 Refactor TeaVM to support pluggable targets like JavaScript, WebAssembly, LLVM, etc (with only JavaScript target for now) 2016-09-17 08:55:44 +03:00
Alexey Andreev
1f30e5fd88 Add test to prove that all modification to a local variable are visible in a corresponding catch block 2016-09-17 08:55:19 +03:00
Alexey Andreev
6196dc80ed Fix bug in phi updater. Fix tests 2016-09-17 08:43:56 +03:00
Alexey Andreev
e82518b88f Further refactoring of exception handling 2016-09-17 08:43:53 +03:00
Alexey Andreev
a26eed7c51 Change how exceptions handlers are represented 2016-09-17 08:42:55 +03:00
Alexey Andreev
3ac7bd1c68 Fix bug in LoopInversion 2016-09-17 08:42:55 +03:00
Alexey Andreev
920a17ff63 Add redundant jump elimination 2016-09-17 08:42:55 +03:00
Alexey Andreev
0d6d4e7e41 Add constant condition elimination 2016-09-17 08:42:54 +03:00
Alexey Andreev
7b31def2b4 Improve GVN to evaluate constants 2016-09-17 08:42:54 +03:00
Alexey Andreev
ea9605e518 When removing empty if statements, extract expressions with side effects from its condition 2016-09-17 08:42:54 +03:00
Alexey Andreev
19625034c4 Implementing inlining 2016-09-17 08:42:54 +03:00
Alexey Andreev
b7072c1c10 Repeat optimizations until profitable. Add optimizations that removes unnecessary <clinit> invocations 2016-09-17 08:42:54 +03:00
Alexey Andreev
4bfc08e946 Fix bug in code that determines whether inversion of a loop is profitable 2016-09-17 08:42:54 +03:00
Alexey Andreev
ee1b1035d2 Fix strange bug 2016-09-17 08:42:54 +03:00
Alexey Andreev
d912ba4af3 Invert loops only when it's profitable (causes invariants to dominate exits). Improve LICM to move invariants with side effects 2016-09-17 08:42:54 +03:00
Alexey Andreev
7668ef66fb Fix phi updater 2016-09-17 08:42:54 +03:00
Alexey Andreev
85cbb4a75c Further work on incremental phi updater 2016-09-17 08:42:51 +03:00
Alexey Andreev
6b6c968aea Make bytecode parser to cache method references to reduce memory consumption 2016-07-28 23:51:39 +03:00
Alexey Andreev
a3f60996e2 Fix https://github.com/konsoletyper/teavm/issues/196 2016-07-28 22:23:39 +03:00
Alexey Andreev
6e2eb8386b Repair information about variable names in debug tables 2016-06-25 18:58:45 +03:00
Alexey Andreev
18c0ebcd04 Fix code to pass checkstyle. Trying to fix travis configuration 2016-06-24 05:23:41 +03:00
Alexey Andreev
9fc6f02875 Further work on incremental phi updater 2016-06-05 23:06:09 +03:00
Alexey Andreev
d196eb9864 Further work on incremental phi updater 2016-06-05 20:58:23 +03:00
Alexey Andreev
66931401a8 Further work on incremental phi updater 2016-06-05 17:36:43 +03:00
Alexey Andreev
859f428036 Further work on incremental phi updater 2016-06-03 23:57:08 +03:00
Alexey Andreev
ca521f74f0 Further work on incremental phi updater 2016-05-23 22:35:55 +03:00
Alexey Andreev
5ac195df5a Refactor phi placement 2016-05-14 23:58:48 +03:00
Alexey Andreev
3d69167280 Refactor block mappers. Remove phi placement from loop inversion, since it's easier to make SSATransformer incremental and call it after each application of loop inversion 2016-05-14 23:36:19 +03:00
Alexey Andreev
8abf4797af Merge remote-tracking branch 'origin/master' into optimizations 2016-05-13 20:47:38 +03:00
Alexey Andreev
02f414b61a Speed up allocation of objects and arrays 2016-05-12 22:25:31 +03:00
Alexey Andreev
062f30634c Fix support of SWAP instruction 2016-05-11 22:05:50 +03:00
Alexey Andreev
3f58e3b24f When name of method parameter is not an identifier, mangle it to contain only Java identifier character 2016-05-11 21:15:36 +03:00
Alexey Andreev
81b2f69225 Fix bugs in loop inversion 2016-05-10 22:51:34 +03:00
Alexey Andreev
3c93b78902 Implementing loop inversion 2016-05-09 18:13:00 +03:00
Alexey Andreev
a57be365b4 Implementing loop inversion 2016-05-07 17:36:38 +03:00
Alexey Andreev
894e39c59f Move static fields from class scope to global scope 2016-04-17 13:26:29 +03:00
Alexey Andreev
2d79da7b1b Fix compilation of pop2 instruction when top two entries are values of type 1 2016-04-15 23:07:30 +03:00
Alexey Andreev
f63ec25ed3 Move metaprogramming API implementation into separate module 2016-04-12 22:54:32 +03:00
Alexey Andreev
74a0278881 Merge branch 'metaprogramming' of https://github.com/konsoletyper/teavm into metaprogramming 2016-04-12 22:18:47 +03:00
Alexey Andreev
da42e5e3eb Add optimizations to metaprogramming implementation 2016-04-12 22:14:15 +03:00
Alexey Andreev
84d9899b3e Implement metaprogramming proxies 2016-04-06 23:02:15 +03:00
Alexey Andreev
8df8191dae Fix bug with capturing phi inputs 2016-03-02 23:14:23 +03:00
Alexey Andreev
518e13cf07 Add several tests for metaprogramming 2016-02-29 23:07:20 +03:00
Alexey Andreev
3e562aa08a Simple metaprogramming test passes 2016-02-27 18:46:27 +03:00
Alexey Andreev
2b3cba69bc Run JUnit tests via JUnit runner instead of Maven plugin 2016-02-23 18:46:32 +03:00
Alexey Andreev
5e7311d8cc Start porting metaprogramming API implementation 2016-02-23 13:44:39 +03:00