Commit Graph

257 Commits

Author SHA1 Message Date
Alexey Andreev
a94686ddf6 Fix nullness detection on exception variable 2017-02-25 19:52:05 +03:00
Davin McCall
6ef08ae709 Fix errors in hasAsyncMethods() which cause it to return an incorrect result.
Previously the method could only ever return false.
2017-02-25 19:06:56 +03:00
Alexey Andreev
891e3b8ea9 Don't generate call to <clinit> on each static method during AST rendering. Instead, extract from WASM transformation that adds InitClassInstruction to beginning of each method and reuse in in JS. This fixes some issues in async methods, without making AST renderer much more complicated. 2017-02-22 23:05:58 +03:00
Alexey Andreev
89f835540b Add unused variable elimination to standard optimization levels 2017-02-15 22:16:14 +03:00
Alexey Andreev
19e8e06446 Fix creation of multi-dimensional arrays with zero dimensions. See https://github.com/konsoletyper/teavm/issues/239 2017-02-11 23:23:50 +03:00
Alexey Andreev
3402fd8ec9 Speed-up dependency analysis 2017-02-11 12:25:57 +03:00
Alexey Andreev
9271d71906 Fix compile-time error in metaprogramming API when body of emit or lazy throws exception instead of returning value 2017-02-05 17:28:40 +03:00
Alexey Andreev
751587bddc Disabl redundant return elimination in async methods. Fix https://github.com/konsoletyper/teavm/issues/235 2017-01-31 22:45:17 +03:00
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
5fd95f21cb Refactor nullness tests 2017-01-02 13:28:35 +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