Commit Graph

298 Commits

Author SHA1 Message Date
Alexey Andreev
e992297781 Eliminate unnecessary return statements 2017-01-29 23:45:48 +03:00
Alexey Andreev
fa0e884931 Optimize if statement to ternary conditional expression 2017-01-29 23:33:51 +03:00
Alexey Andreev
ecd58e3573 WASM: fix bugs 2017-01-29 22:17:04 +03:00
Alexey Andreev
2610fe5428 WASM: fix bugs 2017-01-29 19:01:18 +03:00
Alexey Andreev
055f39c1c8 WASM: fix exception handling 2017-01-28 23:25:13 +03:00
Alexey Andreev
f6103ec00b Copy exception variables when splitting async programs. Fix https://github.com/konsoletyper/teavm/issues/230 2017-01-28 22:39:44 +03:00
Alexey Andreev
58563a3e2d Fix liveness analysis in split AST optimizer 2017-01-25 22:46:15 +03:00
Alexey Andreev
02d8439920 When copying basic blocks in async splitter, copy exception variable as well. Fix https://github.com/konsoletyper/teavm/issues/230 2017-01-24 23:59:54 +03:00
Alexey Andreev
55836d6ed7 Fix async splitting of blocks with exception handlers in some cases. Fix https://github.com/konsoletyper/teavm/issues/234 2017-01-24 23:36:15 +03:00
Alexey Andreev
8967f423eb Increase inlining threshold. Add property to build TeaVM without additional artifacts (like samples) 2017-01-21 23:34:33 +03:00
Alexey Andreev
d3bed47b1d Add tests for escape analysis/scalar replacement. Fix found bugs 2017-01-21 23:34:33 +03:00
Alexey Andreev
e4fab2be41 Add escape analysis 2017-01-21 23:34:33 +03:00
Alexey Andreev
6781dd0abb Fix bug in nullness analysis 2017-01-18 21:30:04 +03:00
Alexey Andreev
149970f162 Fix infinite loop in inlining 2017-01-14 02:00:19 +03:00
Alexey Andreev
98b6fff2f0 Use local type inference to devirtualize calls after inlining 2017-01-14 00:50:22 +03:00
Alexey Andreev
645b2b7cd5 Add local type inference to use in optimizations 2017-01-09 19:16:51 +03:00
Alexey Andreev
5d1e558401 Disable loop inversion, since it contains errors 2017-01-08 23:43:12 +03:00
Alexey Andreev
ff059919a7 Eliminate exception joint in favour of phi functions with multiple inputs per source basic block 2017-01-08 23:43:12 +03:00
Alexey Andreev
9532f9a32b Refactor phi updater 2017-01-06 21:13:12 +03:00
Alexey Andreev
a5eb9ac800 Add tests for phi updater 2017-01-04 22:09:56 +03:00
Alexey Andreev
727c831467 Use new null checker in optimizer. Fix multiple bugs in optimizer and IR 2017-01-03 23:39:43 +03:00
Alexey Andreev
aef1e2e206 Fixing bugs in nullness analyzer 2017-01-02 16:55:17 +03:00
Alexey Andreev
9dc4b47253 Add nullness analysis 2016-12-27 00:28:37 +03:00
Alexey Andreev
ae5e1e4962 Store instructions as double-linked list instead of ArrayList 2016-12-20 00:03:14 +03:00
Alexey Andreev
231dcbaf36 Working on new nullness checker that uses augmented program representation 2016-12-04 22:30:35 +03:00
Alexey Andreev
730d3f3070 Use $$ prefix for exception handling variables, since $ used for local variables 2016-12-04 20:52:57 +03:00
Alexey Andreev
973231752f Avoid creating of unnecessary phi functions 2016-12-04 20:51:00 +03:00
Alexey Andreev
7ca6a4d64e Add IR parser of catch blocks 2016-12-04 19:47:10 +03:00
Alexey Andreev
6883b59fc3 Add IR parser of field get/set and switch instructions 2016-12-04 19:47:10 +03:00
Alexey Andreev
fb53667e77 Refactor textual IR parser 2016-12-04 19:47:10 +03:00
Alexey Andreev
6084491119 Add IR parser of different simple instructions 2016-12-04 19:47:10 +03:00
Alexey Andreev
2b94a8b05c Add IR parser of cast instructions 2016-12-04 19:47:09 +03:00
Alexey Andreev
825acfc85a Add IR parser of invoke instructions 2016-12-04 19:47:09 +03:00
Alexey Andreev
c16de76b23 Add IR parser of constant instructions 2016-12-04 19:47:09 +03:00
Alexey Andreev
f6308c1782 Add IR parser of binary operations and phi functions 2016-12-04 19:47:09 +03:00
Alexey Andreev
6148d7a943 Add support of branching instructions to listing parser 2016-12-04 19:47:09 +03:00
Alexey Andreev
e5db8d4afc Add support of goto and return instructions to textual IR parser 2016-12-04 19:47:09 +03:00
Alexey Andreev
93f8c2cf39 Creating textual IR parser 2016-12-04 19:47:09 +03:00
Alexey Andreev
55158c9e13 Move textual IR related things to a separate package 2016-12-04 19:47:09 +03:00
Alexey Andreev
e5fe82f0fe Working on textual IR 2016-12-04 19:47:09 +03:00
Alexey Andreev
6f92dadad5 Fix bugs in nullness checker. Use it in LICM 2016-12-04 19:47:09 +03:00
Alexey Andreev
2894c541f7 Add nullness checker 2016-12-04 19:47:09 +03:00
Alexey Andreev
0b4629d959 Refactor optimization API 2016-12-04 19:47:07 +03:00
Alexey Andreev
b7d760188e When native method returns undefined and Java expects string, produce null. Add $ prefix to local variables to avoid name clashing with global declarations 2016-12-03 14:30:43 +03:00
Alexey Andreev
ad39024795 Prevent PhiUpdater from placing e-phis with source variable equal to receiver 2016-12-03 13:46:02 +03:00
Alexey Andreev
86b78b8f5d Avoid creating programs with number of variables less than number of parameters 2016-11-29 22:32:22 +03:00
Alexey Andreev
2e20287f80 JS: fix operator priority when rendering new expression 2016-11-22 22:10:18 +03:00
Alexey Andreev
9364ad943a WASM: add support of 0x0D binary version 2016-11-20 22:22:33 +03:00
Alexey Andreev
24efd1f49c Fix support of async <clinit> when called by getstatic/putstatic 2016-11-20 17:50:47 +03:00
Alexey Andreev
c023ac2053 Change translation of <clinit> invocations 2016-11-20 17:08:46 +03:00
Alexey Andreev
764c9bbb1e Working on support of async <clinit> methods 2016-11-17 23:24:16 +03:00
Alexey Andreev
f61cfb23b5 After inlining remove unreachable basic blocks and unused variables. When removing unreachable basic blocks, remove corresponding phi inputs as well. 2016-11-06 21:12:59 +03:00
Alexey Andreev
aebfe7d165 During node splitting, create copies for previously copied nodes, if necessary. See #219 2016-11-04 16:55:56 +03:00
Alexey Andreev
4b766f7b73 Fix implementation of Tarjan SCC finding algorithm 2016-11-04 16:15:15 +03:00
Alexey Andreev
daf5ada5c6 Fix converting JS floating-point numbers to long (fix #228). 2016-11-04 14:12:51 +03:00
Alexey Andreev
2a3b0cd597 Fix generation of variable names in minified mode (fix #227). JUnit runner can be configured to run tests in minified and optimized modes. Apply these modes to travis config. 2016-11-04 13:21:01 +03:00
Alexey Andreev
1335476abe WASM: Add option to trace all call_indirect opcodes 2016-10-27 19:12:37 +03:00
Alexey Andreev
b3b1b54582 Remove unnecessary dependencies 2016-10-26 15:02:41 +03:00
Alexey Andreev
9fd744f550 Report more details about calling async code from sync method 2016-10-22 17:40:32 +03:00
Alexey Andreev
37d4c3349e Add AbstractInstructionReader, use it instead InstructionReader where possible 2016-10-22 16:25:38 +03:00
Alexey Andreev
3dbca7959b When unexpected exception occurs during optimization, dump IR to stderr. 2016-10-22 15:57:17 +03:00
Alexey Andreev
9c33ef686b WASM: fix support of 0xC binary version 2016-10-17 21:53:09 +03:00
Alexey Andreev
d6cc340676 WASM: fix remaining errors in WebAssembly 0xC 2016-10-14 22:32:12 +03:00
Alexey Andreev
56b1f54dda WASM: implementing support of 0xC version 2016-10-12 23:45:13 +03:00
Alexey Andreev
b4916ee4e7 WASM: fix bugs in support of 0xC binary version 2016-10-09 12:57:11 +03:00
Alexey Andreev
386c703459 WASM: implementing support of 0xC binary version 2016-10-06 19:56:45 +03:00
Alexey Andreev
499ce8c029 WASM: add some GC interop methods 2016-10-06 16:21:09 +03:00
Alexey Andreev
0041130d00 WASM: support multianewarray, fix jbox2d benchmark for WebAssembly 2016-10-06 15:49:58 +03:00
Alexey Andreev
9643e12710 WASM: align heap location by 4 bytes 2016-10-01 00:19:13 +03:00
Alexey Andreev
ef9d8a30bc WASM: fix translation of binary operations 2016-09-30 00:46:45 +03:00
Alexey Andreev
cc0c68e809 WASM: porting jbox2d benchmark to WebAssembly 2016-09-29 20:05:32 +03:00
Alexey Andreev
f890680e90 WASM: fix bugs in exception handling 2016-09-29 16:31:27 +03:00
Alexey Andreev
cbd74d41f4 WASM: fix exception handling. Use if instead of switch after call site when possible 2016-09-29 16:31:27 +03:00
Alexey Andreev
8a012178ed WASM: add support of offset field in memory operations 2016-09-29 16:31:27 +03:00
Alexey Andreev
25c9b03dff WASM: implement throwing exceptions 2016-09-29 16:31:27 +03:00
Alexey Andreev
4e431e2f77 WASM: refactoring shadow stack 2016-09-29 16:31:27 +03:00
Alexey Andreev
b67d243ad4 WASM: add transformation that converts exception handling to explicit guard checks 2016-09-22 16:27:28 +03:00
Alexey Andreev
8af1e3e66d Merge remote-tracking branch 'origin/shadow-stack-minimization' 2016-09-22 11:30:14 +03:00
Alexey Andreev
4f218b17f8 WASM: creating memory access trace transformation 2016-09-22 11:09:16 +03:00
Alexey Andreev
ff6a917bc3 WASM: don't write Address objects to GC roots 2016-09-22 00:10:37 +03:00
Alexey Andreev
fc3d36ec4c WASM: improving algorithm that generates instructions to store variables in shadow stack 2016-09-22 00:08:58 +03:00
Alexey Andreev
fcf0394214 WASM: add flag that allows to insert assertions before each memory access in C code 2016-09-19 22:34:16 +03:00
Alexey Andreev
033e57e7e7 WASM: fix bug in generating virtual table in some cases 2016-09-17 20:18:59 +03:00
Alexey Andreev
0a00551af1 WASM: add support of Character.toLowerCase/toUpperCase. Add _ prefix to names in c output 2016-09-17 12:37:49 +03:00
Alexey Andreev
6c5a691fc9 Fixing minor bugs 2016-09-17 10:42:46 +03:00
Alexey Andreev
1b78de9b40 Minor fixes after rebase 2016-09-17 09:59:13 +03:00
Alexey Andreev
7aaf67d16f Fix minor bugs 2016-09-17 09:33:53 +03:00
Alexey Andreev
8bfcb5f086 frontend: fix support of Integer.TYPE, Long.TYPE, etc. 2016-09-17 09:33:50 +03:00
Alexey Andreev
ed7e8ff7f4 javascript: refactor renderer 2016-09-17 09:21:26 +03:00
Alexey Andreev
7cd72f0e96 wasm: add optimization that removes unused functions from wasm module 2016-09-17 09:19:34 +03:00
Alexey Andreev
bb2f23b19b Fix bugs in runtime. Add support for System.out 2016-09-17 09:19:34 +03:00
Alexey Andreev
67098a60ef Fix bugs in GC and runtime 2016-09-17 09:19:34 +03:00
Alexey Andreev
de299dda48 Fix bugs in GC 2016-09-17 09:19:34 +03:00
Alexey Andreev
f2668b867d wasm: fix bugs in GC and runtime 2016-09-17 09:19:34 +03:00
Alexey Andreev
582177654a Fix liveness analysis used to put shadow stack values. Fix type inference of local variables. Don't put Object.monitor to class layout 2016-09-17 09:19:34 +03:00
Alexey Andreev
d28ff73c51 Fix bugs in GC 2016-09-17 09:19:34 +03:00
Alexey Andreev
e92ad161ef Fix bugs in register allocator 2016-09-17 09:19:34 +03:00
Alexey Andreev
fae2963900 Fix bugs in GC and runtime 2016-09-17 09:19:34 +03:00
Alexey Andreev
43b0700c10 Fix bugs in propagating names via register allocator 2016-09-17 09:19:34 +03:00
Alexey Andreev
593dafdd73 Fixing bugs in GC 2016-09-17 09:19:33 +03:00