Commit Graph

3067 Commits

Author SHA1 Message Date
Alexey Andreev
8c6cf1840b Add support of clinit 2016-09-17 08:59:02 +03:00
Alexey Andreev
d2cdd5e1e9 Zero memory after allocation 2016-09-17 08:59:02 +03:00
Alexey Andreev
ca874d178d Add variables and variable types to AST. Use types to properly render variables in WASM 2016-09-17 08:59:02 +03:00
Alexey Andreev
fc2c6b9e07 Add support of strings (breaks compilation for some reason) 2016-09-17 08:59:02 +03:00
Alexey Andreev
278b926c04 Fix support of primitive arrays 2016-09-17 08:59:02 +03:00
Alexey Andreev
164ebeb629 Refactoring RTTI, add type annotation to array subscription instructions 2016-09-17 08:59:02 +03:00
Alexey Andreev
73d4a389b7 Fix static fields 2016-09-17 08:59:02 +03:00
Alexey Andreev
38638bc560 Add compressed binary data to store RTTI 2016-09-17 08:59:01 +03:00
Alexey Andreev
421eca8a49 Add support for array of objects 2016-09-17 08:59:01 +03:00
Alexey Andreev
38aca08993 Add support for instanceof expressions 2016-09-17 08:59:01 +03:00
Alexey Andreev
1aacbea4d0 Fix switch generation for general case 2016-09-17 08:59:01 +03:00
Alexey Andreev
850609bb72 Provide more information in class header 2016-09-17 08:59:01 +03:00
Alexey Andreev
fe5aca5139 Add support of virtual method invocation 2016-09-17 08:59:01 +03:00
Alexey Andreev
45993091e4 Fix minor bugs in WASM backend 2016-09-17 08:59:01 +03:00
Alexey Andreev
a1fe87ff70 Move several annotations 2016-09-17 08:59:01 +03:00
Alexey Andreev
d5e9168323 Fix bug with JS long emulator 2016-09-17 08:59:01 +03:00
Alexey Andreev
861742a2fb Fix bug with JS operator precedence 2016-09-17 08:59:01 +03:00
Alexey Andreev
675abe8740 Start supporting classes in WASM 2016-09-17 08:59:01 +03:00
Alexey Andreev
081efd2d60 Fix bugs in JavaScript backend 2016-09-17 08:59:00 +03:00
Alexey Andreev
055312055b Minor optimization of expression negation 2016-09-17 08:59:00 +03:00
Alexey Andreev
964d2cdf5b Minimal WASM example works 2016-09-17 08:59:00 +03:00
Alexey Andreev
4fa0669e9a Move WasmTarget to another package visible to git 2016-09-17 08:59:00 +03:00
Alexey Andreev
47997cde87 Rename target package to backend to avoid gitignore 2016-09-17 08:59:00 +03:00
Alexey Andreev
89c16b9807 Fixing bugs in WASM emitter 2016-09-17 08:58:56 +03:00
Alexey Andreev
e5356fae27 Add WASM s-expr emitter 2016-09-17 08:55:59 +03:00
Alexey Andreev
1484e970dd Add WASM generator 2016-09-17 08:55:59 +03:00
Alexey Andreev
888710102f Refactoring 2016-09-17 08:55:59 +03:00
Alexey Andreev
4961e3d92d Refactor AST 2016-09-17 08:55:59 +03:00
Alexey Andreev
d672fe068a Continue developing decompiler 2016-09-17 08:55:59 +03:00
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
4f8affcf6f Fix bug in metaprogramming proxies 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