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
|
55453c9311
|
Set version to 0.5.0-SNAPSHOT. Add configuration to deploy to bintray. Update version number during Travis build.
|
2017-02-16 21:48:13 +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 |
|
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
|
af10879a81
|
Remove unnecessary IDEA project files
|
2016-10-27 12:55:28 +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 |
|
Alexey Andreev
|
d76598ab68
|
Don't write Structure, Function and Address to GC roots
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
3370898a54
|
Implementing simple mark&sweep GC
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
ae5d701aac
|
Implementing simple mark&sweep GC
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
f7296e0389
|
Add static GC roots
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
f79716d53d
|
Add class field layout for GC
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
476086af47
|
Add transformation passes that maintain GC roots on shadow stack. Add support of shadow stack intrinsics
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
bfc37b10b5
|
Don't generate redundant clinit instructions
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
74db07537d
|
Fix bugs with memory operations
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
f7e39e6a4d
|
Remove call to initializer from wasm generator, put it into IR transformer. Add intrinsic to check whether class has been initializer. Add IR transformer that guards call to initializer with this intrinsic
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
eaf31c1309
|
Minor fixes
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
4d6c91aff8
|
Emit binary WASM compatible with SpiderMonkey
|
2016-09-17 09:19:33 +03:00 |
|
Alexey Andreev
|
40af27811f
|
Allow to run WASM generator via maven.
|
2016-09-17 09:19:32 +03:00 |
|
Alexey Andreev
|
8b3e160d8c
|
Fix bug in JavaScript backend
|
2016-09-17 09:19:32 +03:00 |
|
Alexey Andreev
|
9143714168
|
Refactor target API. Add ability to generate wast and C from wasm target
|
2016-09-17 09:19:32 +03:00 |
|
Alexey Andreev
|
de4128b377
|
Use little-endian data section, remove metainformation section
|
2016-09-17 09:19:32 +03:00 |
|
Alexey Andreev
|
09d8b581c0
|
Fix generation of WASM binary format
|
2016-09-17 09:19:32 +03:00 |
|
Alexey Andreev
|
d0def96dba
|
Further work on WASM binary format generator
|
2016-09-17 09:19:32 +03:00 |
|
Alexey Andreev
|
c70ba8f16d
|
Fix bug in function signatures
|
2016-09-17 09:19:32 +03:00 |
|
Alexey Andreev
|
9fd5a87a00
|
Fix copying memory blocks
|
2016-09-17 09:19:31 +03:00 |
|
Alexey Andreev
|
26749150f6
|
Add support for Class.isAssignableFrom
|
2016-09-17 09:19:31 +03:00 |
|
Alexey Andreev
|
bb4040af23
|
Fix bugs
|
2016-09-17 09:19:31 +03:00 |
|
Alexey Andreev
|
1ae683ead3
|
System.arrayCopy works
|
2016-09-17 09:19:31 +03:00 |
|
Alexey Andreev
|
ca3258417b
|
Implementing System.arraycopy
|
2016-09-17 09:19:31 +03:00 |
|
Alexey Andreev
|
cc9af93021
|
Keep variable names in generated sources
|
2016-09-17 09:19:31 +03:00 |
|
Alexey Andreev
|
ef5145d6fd
|
Trying to preserve variable names after GVN
|
2016-09-17 09:19:29 +03:00 |
|
Alexey Andreev
|
1c1b0c69fa
|
Propagating variable name via compiler's pipeline
|
2016-09-17 09:11:59 +03:00 |
|
Alexey Andreev
|
c5c453d95b
|
Fix bug in fillZero function
|
2016-09-17 09:11:10 +03:00 |
|
Alexey Andreev
|
375506e875
|
Fix bugs in C emitter. Improve generation of temporary variables in WASM generation. Improve test class
|
2016-09-17 09:11:10 +03:00 |
|
Alexey Andreev
|
0ac61919d5
|
Creating Wasm -> C translator
|
2016-09-17 09:11:10 +03:00 |
|
Alexey Andreev
|
199d91d28c
|
Further work on WASM tree -> C renderer
|
2016-09-17 09:11:10 +03:00 |
|
Alexey Andreev
|
1fb929e9ae
|
Creating C renderer for WASM tree, in order to enable debugging until WASM gets its own debugging support
|
2016-09-17 09:11:10 +03:00 |
|
Alexey Andreev
|
4fd20794c1
|
Refactoring. Fix checkstyle errors
|
2016-09-17 09:11:07 +03:00 |
|
Alexey Andreev
|
6483f518cf
|
Remove unused classes
|
2016-09-17 09:00:48 +03:00 |
|
Alexey Andreev
|
9fb97fd53f
|
Refactoring
|
2016-09-17 09:00:40 +03:00 |
|
Alexey Andreev
|
7679d12888
|
Replace NodeModifier by ElementModifier
|
2016-09-17 08:59:03 +03:00 |
|
Alexey Andreev
|
1be9ffb19e
|
Rename InstructionLocation to TextLocation. Replace NodeLocation by TextLocation
|
2016-09-17 08:59:03 +03:00 |
|
Alexey Andreev
|
3dd76c9355
|
Fix bugs in WASM target
|
2016-09-17 08:59:03 +03:00 |
|
Alexey Andreev
|
06a96911a1
|
Further improvements in WASM target
|
2016-09-17 08:59:03 +03:00 |
|
Alexey Andreev
|
5479d24a21
|
Implementing reflection in WASM
|
2016-09-17 08:59:02 +03:00 |
|