Alexey Andreev
3ad16e80c7
WASM: add support for Enum.valueOf and Class.isEnum
2017-04-10 22:27:24 +03:00
Alexey Andreev
d09affce85
WASM: fix translation of lookupswitch when min and max values differ by
...
more than 2^31
2017-04-10 21:35:02 +03:00
Alexey Andreev
248a49c7dd
WASM: when lookupswitch table has labels that diff by more 256,
...
translate it to binary search code.
See #261
2017-04-09 23:13:26 +03:00
Alexey Andreev
ef1618ec36
Merge remote-tracking branch 'origin/master'
2017-04-06 23:35:53 +03:00
Alexey Andreev
354883ab86
$rt_ustr handles null strings. $rt_s gets optimized in minified mode.
2017-04-06 23:35:40 +03:00
Alexey Andreev
8330eae4ae
WASM: support stack traces
2017-04-06 23:06:30 +03:00
Mirko Sertic
09b3f18a2c
#258 WASM: Unreferenced but exported methods are removed by dep checker ( #259 )
...
WASM: automatically mark as reachable methods of reachable classes which are exported to WASM via `@Export` annotation
See #258
2017-04-05 18:36:53 +03:00
Alexey Andreev
473c35dafa
WASM: Fix generation of types of 'if' blocks generated from conditional
...
expressions.
See #256
2017-04-04 23:16:59 +03:00
sertic
f84a646eae
#253 WASM Memory should be exported to make it accessible from JS
...
Now a default export named "memory" is created to export the WASM memory.
2017-04-04 15:55:55 +02:00
sertic
19b804b5fc
#252 WASM binary version was reset to 0x01 for MVP official release
...
In current browsers and for the official MVP only WASM binary version 0x01 is supported.
All other binary versions are no longer required or supported, hence the generation
logic for them is no longer needed.
2017-04-04 12:48:00 +02:00
Steve Hannah
7491f1805a
Added annotation to suppress errors like * claimed to be synchronous, but has invocations of synchronous methods. This is usesful in cases where the developer knows that the APIs are synchronous but might be mistakenly marked as async for some reason. This is a possible workaround for issues like https://github.com/konsoletyper/teavm/issues/248
2017-03-24 15:51:23 -07:00
Alexey Andreev
d49354bdac
Fix another exception while rendering labels
2017-03-21 21:48:03 +03:00
Alexey Andreev
299485eb96
Fix bug in generation of block labels
2017-03-17 17:19:28 +03:00
Alexey Andreev
b28f5a6b71
Don't produce keywords for label names
2017-03-17 16:41:35 +03:00
Alexey Andreev
891b906a8c
Fix serialization of call graph. Fix minor bugs in build daemon
2017-03-17 13:57:37 +03:00
Alexey Andreev
56398f58f9
Make serializable some classes that are going to participate in remote build strategy
2017-03-17 13:57:37 +03:00
Alexey Andreev
c6d4265f8b
Fix generation of JS labels
2017-02-26 20:02:45 +03:00
Alexey Andreev
6d3b329540
Remove unnecessary comments and eliminate duplicate code
2017-02-26 13:52:06 +03:00
Alexey Andreev
17113533fc
Implement default annotation values and annotations of method parameters in IR binary serializer
2017-02-26 13:49:45 +03:00
Alexey Andreev
3e3b25bddc
Fix serialization of IR to binary format for incremental build
2017-02-26 07:07:02 +03:00
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