Alexey Andreev
3acf1f9538
Fix issues with new IR serialization format
2019-03-11 12:14:10 +03:00
Alexey Andreev
abdd9b3270
C backend: support coroutines
2019-03-10 14:04:04 +03:00
Alexey Andreev
578912056b
Reduce memory used by initial class reader
2019-03-07 19:27:07 +03:00
Alexey Andreev
fcfa998e1c
Reduce memory used by call graph in dev server mode
2019-03-07 16:51:00 +03:00
Alexey Andreev
88dca1bd02
Decrease memory consumption during compilation
2019-03-06 16:51:01 +03:00
Alexey Andreev
2a1aca98da
Use shared ReferenceCache between different stages of compilation
2019-03-05 19:32:50 +03:00
Alexey Andreev
3c9a3bb359
Store AST cash in binary format. Introduce more compact
...
AST serialization format.
Reduce memory consumption of incremental compilation on dev server
2019-03-05 19:06:21 +03:00
Alexey Andreev
573c5f6064
Reduce memory consumption of incremental compilation on dev server
2019-03-05 16:50:16 +03:00
Alexey Andreev
35730d665f
Decrease memory consumption
2019-02-27 13:24:50 +03:00
Alexey Andreev
ade00cc984
C backend: fix bugs
2019-02-26 00:10:22 +03:00
Alexey Andreev
2c40c7d56e
Trying to decrease compiler memory consumption
2019-02-25 18:31:34 +03:00
Alexey Andreev
95092c4d82
Refactor things around decompiler, JS backend and control flow debug info
2019-02-25 16:10:35 +03:00
Alexey Andreev
3be32a5851
JS: don't generate square brackets in 'if' bodies, when possible.
...
Generate mangled name for $rt_wrapException
2019-02-25 11:30:30 +03:00
Alexey Andreev
a8f1940df3
Fix bugs in debugger
2019-02-22 17:19:19 +03:00
Alexey Andreev
4a325a192e
Update inlining thresholds due to changes in scoring algorithm
2019-02-13 19:31:57 +03:00
Alexey Andreev
ce13c05342
JS: add ability to set limit for top-level names.
...
The purpose of this option is JS engines are too sensible for number
of methods in closure, while they don't care about methods
in an object.
2019-02-13 17:03:13 +03:00
Alexey Andreev
6790d724c7
Further improvements to inliner
2019-02-13 13:42:44 +03:00
Alexey Andreev
4de1c51e1a
Improve inliner: use simlified heuristics in advanced optimization mode, remove methods that were fully inlined
2019-02-12 19:30:57 +03:00
Alexey Andreev
89189c7454
Fix bugs in debugger
2019-02-12 12:10:33 +03:00
Alexey Andreev
bc41b12f0e
JS: fix bug in generating async functions in minified mode
2019-02-07 17:15:32 +03:00
Alexey Andreev
1b2c47407f
Place classes to a single object in development server to improve debugger performance
2019-02-07 16:29:55 +03:00
Alexey Andreev
95a3a30a6e
Fix html4j tests
2019-01-31 19:20:14 +03:00
Alexey Andreev
7d2c76f711
Fix compiler crash when using incremental pipeline
2019-01-30 19:36:00 +03:00
Alexey Andreev
35ca7fd152
Add lazy compilation pipeline that can work a little bit faster in incremental compiler
2019-01-30 19:00:07 +03:00
Alexey Andreev
5be34dcf44
Proper fix for virtual table issue.
...
C: prevent from generating identifiers that clash with keywords
2019-01-30 15:00:49 +03:00
Alexey Andreev
daeaa502d6
JS: deobfuscate stack traces for wrapped native exceptions
2019-01-30 14:32:43 +03:00
Alexey Andreev
42aedf770b
Fix bugs in C backend
2019-01-28 14:57:34 +03:00
Alexey Andreev
f734603255
JS: prevent TeaVM from generating URL function
2019-01-27 23:42:05 +03:00
Alexey Andreev
78c55437e3
Add stack deobfuscation to dev server
2019-01-24 16:28:30 +03:00
Alexey Andreev
1dd379551c
Produce less names in top level scope in dev server mode in order to improve debugging performance in Chrome
2019-01-23 13:28:39 +03:00
Alexey Andreev
48227b24a0
Fix bootstrap mode
2019-01-20 17:50:46 +03:00
Alexey Andreev
74997d277b
Fix bugs in try/catch decompilation
2019-01-15 21:49:33 +03:00
Alexey Andreev
3c8184c3b7
Fix bug in nullness analysis when variable graph has irreducible loops
2019-01-14 14:08:12 +03:00
Alexey Andreev
1fabe4c5b9
Fix passing checkstyle
2019-01-09 12:54:38 +03:00
Alexey Andreev
9305a532bb
Replace ArrayList with array to store arguments of InvokeInstruction
2019-01-09 12:51:52 +03:00
Alexey Andreev
f589b0035a
Decrease memory consumption
2018-12-29 19:02:03 +03:00
Alexey Andreev
58c19e3abc
Minor fixes in development toolchain
2018-12-25 18:45:26 +03:00
Alexey Andreev
4ffe74296d
Limit max line size of generated JS code
2018-12-21 14:28:30 +03:00
Alexey Andreev
96f77b2f08
Fix stack overflow when decoding large Java strings
2018-12-20 17:25:02 +03:00
Alexey Andreev
43cda1223c
Fix class initialization when writing to its static field
2018-12-20 16:59:15 +03:00
Alexey Andreev
a4b61bac19
Fix bugs in debugger
2018-12-19 19:28:35 +03:00
Alexey Andreev
75295f50e5
Make debugging API asynchronous
2018-12-19 18:13:15 +03:00
Alexey Andreev
d7d4dc1571
Add IDEA run configuration that runs dev server
2018-12-16 20:42:21 +03:00
Alexey Andreev
bab0cd59a6
Improve performance and stability of development server and incremental compilation
2018-12-13 18:45:44 +03:00
Alexey Andreev
c9c9c15dfe
Fix Class.initialize. Fix html4j tests
2018-12-11 23:47:47 +03:00
Alexey Andreev
d968b20e4c
Fix generation of integer multiplication in minified mode. Fix String.intern() (see #370 )
2018-12-11 17:42:14 +03:00
Alexey Andreev
eec458089f
Implement development server
2018-12-10 19:03:18 +03:00
Alexey Andreev
952ed3f193
Fix diagnostics no printed from teavm-cli. Fix diagnostics of unavailable classes and methods
2018-12-09 19:54:04 +03:00
Alexey Andreev
d74bcbe2b9
Fast dependency analyzer, fix bugs in incremental compiler
2018-12-07 17:41:21 +03:00
Alexey Andreev
eaf0f5a24e
Fix bootstrap compiler
2018-12-07 17:41:20 +03:00
Alexey Andreev
3209909c8b
Fix build
2018-12-07 01:30:13 +03:00
Alexey Andreev
1b83519280
Reduce minumus JS runtime a little
2018-12-07 00:52:05 +03:00
Alexey Andreev
2bb146af47
Improve float to string conversion
2018-12-07 00:21:18 +03:00
Alexey Andreev
f23c71cd97
Improve double to string conversion
2018-12-02 16:12:59 +03:00
Alexey Andreev
1cf3cce076
Reduce minimum runtime size
2018-12-01 23:07:03 +03:00
Alexey Andreev
45d0a13c9b
In HtmlUnit, decode stack traces for all constructed exceptions
2018-11-26 15:58:51 +03:00
Alexey Andreev
0c03379206
Fix inability to catch exception when calling just created lambda
2018-11-26 14:49:03 +03:00
Alexey Andreev
85f901362f
Wrap native JS exceptions as java.lang.RuntimeException
2018-11-26 14:01:50 +03:00
Alexey Andreev
b018e61615
Fix converting method to state machine in some cases. Fix #366
2018-11-25 18:46:45 +03:00
Alexey Andreev
a3dfc0c486
Add API to catch native JS exceptions
2018-11-23 19:54:37 +03:00
Alexey Andreev
cf9090e0fa
Use JS typed arrays to reinterpret floats and ints.
...
Also, drop IE9 support
2018-11-23 17:14:06 +03:00
Alexey Andreev
0376a46c06
Fix extra space added after new expression
2018-11-23 12:13:13 +03:00
Alexey Andreev
d50189ea3a
Add decoding of stack trace in JUnit adapter
2018-11-23 12:09:26 +03:00
Alexey Andreev
6d2815bc5c
Support running JUnit3 tests and improve support of JUnit4
2018-11-22 19:51:33 +03:00
Alexey Andreev
cd7a702c31
Trying to fix Travis build
2018-11-22 15:40:32 +03:00
Alexey Andreev
753755918d
Update build config to avoid jar hell
2018-11-22 14:49:30 +03:00
Alexey Andreev
0f951f8c86
Fix calculating class name in debugger
2018-11-19 15:29:02 +03:00
Alexey Andreev
f2dd398719
Fix bug in source map generation
...
This bug caused metadata lines that follow after the code
generated from Java bytecode, to be mapped to the line in
Java bytecode of the method that appears last in the generated
JavaScript
2018-11-18 02:11:28 +03:00
Alexey Andreev
148c07336c
Generate entire code inside wrapper IIF
2018-11-15 12:47:25 +03:00
Alexey Andreev
fe151d525a
Prevent generation of function names that clash with standard objects
2018-11-14 13:55:36 +03:00
Alexey Andreev
064888c9a1
Support Java 11
2018-11-12 18:59:28 +03:00
Alexey Andreev
4a7b70e1e8
Wasm: fix the way '!' expression translated. Also fix #365
2018-11-06 14:34:18 +03:00
Alexey Andreev
4d2c075c07
Always embed runtime into generated file. Remove 'runtime' build property
2018-10-28 00:15:36 +03:00
Alexey Andreev
63b2440e48
Remove $rt_global and indirect references to runtime function
2018-10-27 22:42:25 +03:00
Alexey Andreev
1b78ef99a6
Fix bugs in node splitting or irreducible graphs
2018-10-24 18:16:59 +03:00
Alexey Andreev
ef011d429d
Ignore flaky test
2018-10-19 17:20:07 +03:00
Alexey Andreev
8a55510d4f
Fix bug in dependency analyzer
2018-10-19 14:47:34 +03:00
Alexey Andreev
f206cbe2d1
Reorder modifiers to get less metadata size
2018-10-04 19:07:23 +03:00
Alexey Andreev
4c4c589172
Various code size optimizations
...
1. Generate 'a' for 'this' instead of '$t'
2. Fix frequency-based identifier optimization
3. Generate less code in <clinit> callers
4. Generate one-letter identifier in most of constructors
(instead of $r)
5. Use $ and _ chars in identifiers
2018-10-04 16:29:05 +03:00
Alexey Andreev
b66053f5ce
Don't generate virtual wrappers for methods that aren't ever called virtually
2018-10-04 11:55:34 +03:00
Alexey Andreev
681e21ecca
Store class names in metadata as a pair of package and simple name
2018-10-03 16:01:37 +03:00
Alexey Andreev
0a94c91ff2
Don't generate unused class names in metadata section
2018-10-03 14:46:52 +03:00
Alexey Andreev
be21e474c5
Generate shorter <clinit> caller names in minified mode
2018-10-03 12:48:14 +03:00
Alexey Andreev
6b063bc567
Some code size optimizations
...
1. Eliminate empty switch statements
2. Eliminate unnecessary == 0 and != 0 conditions in 'if'
2018-10-03 11:57:51 +03:00
Alexey Andreev
168bf1fa9c
Add option to print size statistics of generated JS code
2018-10-03 11:08:15 +03:00
Alexey Andreev
0473020bc8
Prevent from generating functions with NaN identifier
2018-09-04 17:28:10 +03:00
Alexey Andreev
50573f4f06
Prevent minifier from generating NaN function
2018-08-30 11:10:23 +03:00
Alexey Andreev
f5c6ac9c5d
Improve performance of dependency analyzer, decrease memory consumption
2018-08-29 13:20:16 +03:00
Alexey Andreev
365e47882a
Avoid generation of too deeply nested expressions to fit into v8 parser stack
2018-08-27 22:08:03 +03:00
Alexey Andreev
d6363c5fbf
Fix NPE in dependency analyzer. Fix excessive types propagating in dependency analyzer
2018-08-27 16:17:23 +03:00
Alexey Andreev
558c3f2f1e
Fix bugs in dependency analyzer, introduced by previous optimizations
2018-08-23 13:26:26 +03:00
Alexey Andreev
0ebf8c2f6e
Reduce memory consumption
2018-08-20 18:56:16 +03:00
Alexey Andreev
2dd145a731
Improve performance of dependency analysis
2018-08-20 18:41:08 +03:00
Alexey Andreev
7f46c301bd
IDEA: allow to configure build daemon heap size
2018-07-31 16:31:09 +03:00
Alexey Andreev
67afe6173e
Improve performance of compilation of large code bases
2018-07-31 12:14:53 +03:00
Alexey Andreev
5b5417d46b
Improve performance of dependency analysis
2018-07-04 11:53:53 +03:00
Alexey Andreev
4e20a1de18
Properly handle checkcast to array type in dependency analyzer
2018-07-03 19:11:51 +03:00
Alexey Andreev
3653e39bec
Add system property that triggers printing of dependency analyzer summary report
2018-06-29 17:32:26 +03:00
Alexey Andreev
f160ce2f2f
Use class/method names to generate lambda class names. Reduce number of types propagated by dependency analyzer
2018-06-29 16:46:36 +03:00
Alexey Andreev
097820cc2b
Wasm backend: implement remaining types of resources
2018-05-20 23:54:23 +03:00
Alexey Andreev
5ce48ce866
Wasm backend: fix issues related to instanceof expression
2018-05-19 22:56:16 +03:00
Alexey Andreev
27a4848947
Make more precise type inference. The old algorithm sometimes reported wrong results on multidimensional primitive arrays
2018-05-19 20:40:47 +03:00
Alexey Andreev
15b77ee752
Wasm backend: fix Array.get
2018-05-17 23:58:14 +03:00
Alexey Andreev
9b2e00cb9f
Wasm backend: support reinterpret conversion in C wasm emulator
2018-05-17 23:58:01 +03:00
Alexey Andreev
dbe31c43bf
Wasm backend: write function index in AST representation to make easier navigation and debugging
2018-05-17 19:39:22 +03:00
Alexey Andreev
bb3a2a22fe
C backend: add GTK version of jbox2d benchmark.
2018-05-17 01:14:37 +03:00
Alexey Andreev
c7b6544537
C backend: allow to pass Java string to C code
2018-05-16 23:20:20 +03:00
Alexey Andreev
f0d97a72ab
Wasm backend: add intrinsics for some Float and Double methods
2018-05-16 20:15:13 +03:00
Alexey Andreev
d7b57ae938
Update asm version to 6.1.1 and versions of Maven plugins that use old asm in order to support Java 10 bytecode version.
2018-05-15 16:20:20 +03:00
Alexey Andreev
d3a9f57c1c
C backend: avoid generation of deeply nested blocks and long lines (such code is rejected by MSVC).
2018-05-14 22:34:37 +03:00
Alexey Andreev konsoletyper@gmail.com
4d8f33d994
C backend: few fixes for MVSC
2018-05-14 01:15:29 +03:00
Alexey Andreev
76ca3f06cf
C backend: make compiled binary independent of load location
2018-05-13 23:27:27 +03:00
Alexey Andreev
8cf69db8bb
Wasm backend: copy wasm-runtime.js to the output directory. Fix wasm benchmark according latest changes
2018-05-13 19:45:25 +03:00
Alexey Andreev
c9ebe2e2e9
Wasm backend: fix more tests. Implement Array.get. Implement x instanceof C for all cases.
2018-05-13 19:17:45 +03:00
Alexey Andreev
f23128bb13
Wasm backend: fix many tests
2018-05-12 23:43:53 +03:00
Alexey Andreev
5e3514e5dd
Wasm backend: fix low-level memory copying function
2018-05-11 20:02:52 +03:00
Alexey Andreev
a81eeeee03
Wasm backend: fix hanging tests, make more tests pass, change name generation scheme
2018-05-10 17:41:28 +03:00
Alexey Andreev
b087610c2c
Wasm backend: make JUnit tests work
2018-05-08 23:31:51 +03:00
Alexey Andreev
f532801f38
C backend: implement support for ResourceArray and ResourceMap
2018-05-07 19:30:00 +03:00
Alexey Andreev
401a9ed212
C backend: improve representation of string literals, fix them for various corner cases
2018-05-06 00:48:27 +03:00
Alexey Andreev
37efbd742b
C backend: more bugfixes
...
* Fix cloning Object[] in 64-bit systems
* Fix generation of x instanceof Interface
* Fix a % b when a and b are float or double
* Fix generation of unreachable virtual calls
2018-05-05 23:35:17 +03:00
Michele Comignano
c11b868c0b
Add IdentityHashMap, improve distribution of identityHashCode
...
Add IdentityHashMap, improve distribution of identityHashCode
2018-05-05 22:05:22 +03:00
Alexey Andreev
ff07b28bee
C backend: fix bugs in exception handling transformer
2018-05-05 22:03:20 +03:00
Alexey Andreev
52ddd96c7d
Fix duplicate <clinit> execution in some cases when accessing class through reflection
2018-05-05 18:38:18 +03:00
Alexey Andreev
d2aa37d6a4
C backend: fix more bugs, pass more tests
2018-05-05 15:17:35 +03:00
Alexey Andreev
899725b6bd
C backend: fix bug in type inference, fix code generation for small int and long values
2018-05-04 19:05:11 +03:00
Alexey Andreev
4530167061
C backend: implement support for simple cases of resources
2018-05-01 00:54:11 +03:00
Alexey Andreev
ee2f389027
C backend: make more tests pass
2018-04-28 18:49:26 +03:00
Alexey Andreev
18eb3ee058
C backend: make more tests pass
2018-04-27 00:47:38 +03:00
Alexey Andreev
fa07100024
C backend: major improvements to interop
...
1. Function.get that allows to convert static Java method
to a C function pointer
2. Address.ofData that gets address (void*) of Java array data
3. `@Include` annotation to add `#include` to generated C
when using some method or class
2018-04-24 00:36:25 +03:00
Alexey Andreev
38267980fb
Run C test compilation in multiple threads
2018-04-21 12:24:31 +03:00
Alexey Andreev
8f0320e217
Fix bugs in C backend to make more tests pass
2018-04-21 00:55:43 +03:00
Alexey Andreev
4990dbe8e4
Add support for C backend in TeaVMTestRunner
2018-04-20 22:58:09 +03:00
Alexey Andreev
e77997c93f
Implement null check in C backend
...
Although initial purpose of this comment was null check,
it took much time to complete it and it caused many unrelated changes.
Besides just implementing null check in quite naive fashion
(I could not use the trick with memory protection, since I have to
maintain shadow stack, and support WebAssembly), I had to optimize
things. I relied on my existing nullness analysis to eliminate
as much null checks as possible. However, the whole nullness analysis
was wrong. After some thoughts I came up with solution very
close to range analysis, which required me to introduce extension
to IR sometimes called e-SSA form with so called sigma nodes.
Also, I found some bugs in few different places (by the time write this
message I could only remember escape analysis/scalar replacement and
after-inlining devirtualization) and fixed them.
2018-04-17 00:05:46 +03:00
Alexey Andreev konsoletyper@gmail.com
d9c5b3fd04
C backend: compatibility with msvc
2018-03-29 00:44:31 +03:00
Alexey Andreev konsoletyper@gmail.com
fe47fe19ce
Fix build under JDK9+
2018-03-28 22:54:55 +03:00
Alexey Andreev
0d1cb85067
C backend: generate code to buffer, simplify generator
2018-03-27 23:16:38 +03:00
Alexey Andreev
dc227e1e42
C backend: add support for Array.get
2018-03-21 22:44:22 +03:00
Alexey Andreev
05d0220dcd
C backend: initial commit
2018-03-20 23:18:52 +03:00
Alexey Andreev
540ad7f694
Uprage HPPC to 0.7.3
2018-03-20 19:10:36 +03:00
Alexey Andreev
de88541b64
Another fix for evaluation order in AST optimizer
...
See #330
2018-02-17 10:29:33 +03:00
Alexey Andreev
788e506175
Fix evaluation order when eliminating redundant variables from AST
...
See #330
2018-02-17 01:29:26 +03:00
Alexey Andreev
4f9110f7b1
Make graph.toString return dot representation of graph
2018-02-04 22:51:25 +03:00
Alexey Andreev
6d68010416
Improve speed of class inference during inlining
2018-02-04 22:29:51 +03:00
Alexander Gundermann
f548fc964c
WASM: fix opcodes
2018-01-28 19:21:45 +03:00
Alexey Andreev
ff7232ac3e
Improvements in reflection:
...
1. During dependency analysis, propagate class literals from
Class.forName return node
2. Use original class source to generate reflection metadata
3. Link classes when they appear in signature of reflectable methods
4. Turn Class.forName(string_literal) into class literal.
2018-01-27 00:21:50 +03:00
Alexey Andreev
f49ec16021
Replace non-strict equality comparisons with strict in runtime.js
2018-01-25 22:08:19 +03:00
Alexey Andreev
caaf2114bf
Fix error when superclass has final String fields
2018-01-25 21:53:28 +03:00
Alexey Andreev
85c686c72a
Remove outdated methodAliases build parameter
...
Replace classAliases with classesToPreserve
2018-01-09 23:38:30 +03:00
Alexey Andreev
10c706077a
When a value in debugger represents plain JavaScript object, show its native fields in watch window
2018-01-08 14:45:46 +03:00
Alexey Andreev
0c8013dfcf
When splitting async program, don't process same blocks twice
...
The old assumption was: if a block has instructions, it was already processed. However, that might be not true in some cases. This led to duplication of exception handlers in some blocks which in turn broken decompiler. From now on processed blocks are stored in a set.
2018-01-07 16:04:11 +03:00
Alexey Andreev
c15709994f
Fix bug in decompiling nested catch blocks with complex control flow
2017-12-03 18:39:57 +03:00
Alexey Andreev
a20d0b0855
Fix compile-time error when callable reference requires boxing
2017-11-26 13:14:02 +03:00
Alexey Andreev
a7ac256c47
Fix bug in AST optimization
2017-11-26 13:14:02 +03:00
Alexey Andreev
1200354a7b
Emit boolean constants as numbers
2017-11-26 13:14:02 +03:00
Alexey Andreev
ff19dc15c9
Further bootstrapping
2017-11-26 13:14:02 +03:00
Alexey Andreev
5fb1623c4e
Add utility method to automatically register extensions in bootstrap mode
2017-11-26 13:14:02 +03:00
Alexey Andreev
256814a60a
Support plugin loading from bootstrap environment
2017-11-26 13:14:02 +03:00
Alexey Andreev
fc4425d7f4
Add missing method to Properties
2017-11-26 13:05:34 +03:00
Alexey Andreev
62f639f92b
Properly report missing virtual methods
2017-11-19 14:36:04 +03:00
Alexey Andreev
3f487f8a7d
Add some useful implementations of ClassHolderSource and ResourceReader
2017-11-16 18:30:25 +03:00
Alexey Andreev
44e6feef0c
Add support for functions that return true or false depending on whether they run from TeaVM
2017-11-16 18:30:04 +03:00
Alexey Andreev
105c188953
Fix nested exception handlers
2017-11-16 00:19:00 +03:00
Alexey Andreev
945a0fee9d
Fix bug in dependency analyzer
2017-11-13 00:15:15 +03:00
Alexey Andreev
2bbdf6caba
Rename DependencyChecker to DependencyAnalyzer
2017-11-12 23:21:16 +03:00
Alexey Andreev
0f39dbbdd4
Minor code style improvements
2017-11-12 23:07:12 +03:00
Alexey Andreev
1b0bacd90c
Remove unused parts of call graph API
2017-11-12 23:06:58 +03:00
Alexey Andreev
edfbe01a7f
Improve performance of dependency analysis by filtering out propagated types that don't match types of method parameters and return values
2017-11-12 23:06:15 +03:00
Alexey Andreev
d811e7edbb
Improve performance of dependency analyzer
2017-11-11 00:48:39 +03:00
Alexey Andreev
f4c5b5073a
Minor performance improvement
2017-11-05 16:12:31 +03:00
Alexey Andreev
a9d47b5ce7
Improve performance of register allocator
2017-11-05 14:55:04 +03:00
Alexey Andreev
90e9792892
Improve DependencyChecker performance
2017-11-05 14:54:37 +03:00
Alexey Andreev
bc51940ce1
Another fix for array.clone() in Rhino and old browsers
2017-11-05 14:53:38 +03:00
Alexey Andreev
6817618b4e
Make primivive[].clone() work in older browsers and in Rhino
2017-11-05 12:29:02 +03:00
Alexey Andreev
344cb4e42d
Fix T[].clone()
2017-11-03 21:58:48 +03:00
Alexey Andreev
25011ee7a6
Remove outdated hack when Class.parent could be non-null for root classes
2017-10-29 21:41:49 +03:00
Alexey Andreev
c54b2b9e9e
Fix bug in escape analysis
2017-10-29 19:08:25 +03:00
Alexey Andreev
c224c57f98
Fix compiler crash when there's no method found during DCE
2017-10-26 15:50:46 +03:00
Alexey Andreev
775b5324b3
Fix WebAssembly codegen
2017-10-24 00:04:57 +03:00
Alexey Andreev
c82ed6746a
Fix compilation of WebAssembly samples
2017-10-22 20:22:24 +03:00
Alexey Andreev
de14a57fe1
Change how method resolution work in DCE and devirtualization.
...
Since in Java 8 there are default methods in interface, method
resolution algorithm becomes more complicated. This alseocauses
several related changes.
1. Resolve methods as late as possible; do not resolve
virtual call sites during DCE.
2. Due to several reasons we have to improve linking phase
to preserve super methods that aren't actually ever called,
but present in virtual call sites.
Related issue: #311
2017-10-22 17:56:31 +03:00
Alexey Andreev
880529dbe2
Fix compiler crash when can't find referring declarations
2017-10-05 14:59:09 +03:00
Alexey Andreev
12dded73f6
JS: add support for Class.getModifiers
2017-07-17 22:21:17 +03:00
Alexey Andreev
1581345e17
Properly report breakpoint hit event
2017-07-04 06:37:17 +03:00
Alexey Andreev
db97b7f732
Fix various issues in debugger
2017-07-02 16:25:11 +03:00
Alexey Andreev
434a3dd207
Fix IDEA debugger issues
2017-07-01 23:41:21 +03:00
Alexey Andreev
d4903d460b
Reformat test code to conform checkstyle settings
2017-07-01 15:47:46 +03:00
Alexey Andreev
cdec4560ba
Remove dumb comments containing only @author annotation
2017-07-01 13:13:52 +03:00
Alexey Andreev
59e5c16b31
Update version to 0.6.0-SNAPSHOT
2017-06-19 20:50:19 +03:00
Alexey Andreev
40b29cdfa1
Add support for altMetafactory
2017-06-18 21:22:44 +03:00
Alexey Andreev
45ba247265
When Java class gets exported to JS, generate bridges for its
...
methods so that these bridges perform type conversion
between Java and JS
2017-06-09 00:02:28 +03:00
Alexey Andreev
27bb8fe9ed
Rename object's $id
field to $id$
...
To avoid clash with user-defined fields
2017-06-07 12:46:43 +03:00
Alexey Andreev
ba7f07de4b
Copy default methods from interfaces to implementing classes
2017-06-06 22:42:21 +03:00
Alexey Andreev
2e8e3a65bd
Add IO bufferization
2017-06-01 16:14:24 +03:00
Alexey Andreev
288e3b97fe
Fix recognition of loop tree in a CFG
...
(cherry picked from commit 8f58b924628b87d13cfb8352d032a4932dcba17f)
2017-05-29 23:23:47 +03:00
Alexey Andreev
7019e1ada6
Workaround for bug in ASM which adds java/lang/Synthetic annotation twice. Should fix #278
2017-05-21 00:16:23 +03:00
Alexey Andreev
d882fd14a6
WASM: fix bug in GC
2017-05-15 22:04:30 +03:00
Alexey Andreev
b8b3aa7a53
WASM: fix name section
2017-05-15 00:39:20 +03:00
Alexey Andreev
4b6193baca
Fix bug in escape analysis. See #271
2017-05-08 18:44:58 +03:00
Alexey Andreev
812aa5a682
Fix bugs in textual IR parser and stringifier
2017-05-08 18:17:33 +03:00
Alexey Andreev
2d5f6a81c2
Improve peformance of Long.hashCode
2017-05-07 22:18:10 +03:00
Alexey Andreev
293e82a3c0
In class inference add rules for known types of method parameters
...
and method return value
2017-04-27 00:14:14 +03:00
Alexey Andreev
8d9240df36
When eliminating constant conditions, and removing dead branch,
...
also remove corresponding phi input to avoid clashes with further
optimizations
2017-04-25 22:57:57 +03:00
Alexey Andreev
058566e731
Fix bug in JSO
2017-04-22 14:11:24 +03:00
Alexey Andreev
8e67fe0168
Escape undefined unicode characters in string literal
2017-04-22 00:38:04 +03:00
Alexey Andreev
f347de44a9
WASM: fix metadata intrinsics
2017-04-17 00:09:14 +03:00
Alexey Andreev
9e6061c3f1
WASM: implementing intrinsics to access resources
2017-04-17 00:09:14 +03:00
Alexey Andreev
05d4652c86
WASM: add intrinsic that writes metadata to static binary
2017-04-17 00:09:14 +03:00
Alexey Andreev
f716a4be62
WASM: refactoring resource generator
2017-04-17 00:09:14 +03:00
Alexey Andreev
f1da7a417e
WASM: preparing to implement metadata API
2017-04-17 00:09:14 +03:00
Alexey Andreev
530fe1d277
JS: remove references to window. See #269
2017-04-15 13:40:54 +03:00
Alexey Andreev
54accaff5b
WASM: use signed comparison for lookupswitch
2017-04-15 12:22:35 +03:00
Alexey Andreev
63025a57b7
WASM: fix reverse subtyping relation in exception handling
2017-04-15 12:04:09 +03:00
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
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
Alexey Andreev
3f02cad9e7
Further development of WASM backend
2016-09-17 08:59:02 +03:00
Alexey Andreev
35b59ed916
Add support of Object.hashCode
2016-09-17 08:59:02 +03:00
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
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
Alexey Andreev
85cbb4a75c
Further work on incremental phi updater
2016-09-17 08:42:51 +03:00
Alexey Andreev
6b6c968aea
Make bytecode parser to cache method references to reduce memory consumption
2016-07-28 23:51:39 +03:00
Alexey Andreev
a3f60996e2
Fix https://github.com/konsoletyper/teavm/issues/196
2016-07-28 22:23:39 +03:00
Alexey Andreev
6e2eb8386b
Repair information about variable names in debug tables
2016-06-25 18:58:45 +03:00
Alexey Andreev
18c0ebcd04
Fix code to pass checkstyle. Trying to fix travis configuration
2016-06-24 05:23:41 +03:00
Alexey Andreev
9fc6f02875
Further work on incremental phi updater
2016-06-05 23:06:09 +03:00
Alexey Andreev
d196eb9864
Further work on incremental phi updater
2016-06-05 20:58:23 +03:00
Alexey Andreev
66931401a8
Further work on incremental phi updater
2016-06-05 17:36:43 +03:00
Alexey Andreev
859f428036
Further work on incremental phi updater
2016-06-03 23:57:08 +03:00
Alexey Andreev
ca521f74f0
Further work on incremental phi updater
2016-05-23 22:35:55 +03:00
Alexey Andreev
5ac195df5a
Refactor phi placement
2016-05-14 23:58:48 +03:00
Alexey Andreev
3d69167280
Refactor block mappers. Remove phi placement from loop inversion, since it's easier to make SSATransformer incremental and call it after each application of loop inversion
2016-05-14 23:36:19 +03:00
Alexey Andreev
8abf4797af
Merge remote-tracking branch 'origin/master' into optimizations
2016-05-13 20:47:38 +03:00
Alexey Andreev
02f414b61a
Speed up allocation of objects and arrays
2016-05-12 22:25:31 +03:00
Alexey Andreev
062f30634c
Fix support of SWAP instruction
2016-05-11 22:05:50 +03:00
Alexey Andreev
3f58e3b24f
When name of method parameter is not an identifier, mangle it to contain only Java identifier character
2016-05-11 21:15:36 +03:00
Alexey Andreev
81b2f69225
Fix bugs in loop inversion
2016-05-10 22:51:34 +03:00
Alexey Andreev
3c93b78902
Implementing loop inversion
2016-05-09 18:13:00 +03:00
Alexey Andreev
a57be365b4
Implementing loop inversion
2016-05-07 17:36:38 +03:00
Alexey Andreev
894e39c59f
Move static fields from class scope to global scope
2016-04-17 13:26:29 +03:00
Alexey Andreev
2d79da7b1b
Fix compilation of pop2 instruction when top two entries are values of type 1
2016-04-15 23:07:30 +03:00
Alexey Andreev
f63ec25ed3
Move metaprogramming API implementation into separate module
2016-04-12 22:54:32 +03:00
Alexey Andreev
74a0278881
Merge branch 'metaprogramming' of https://github.com/konsoletyper/teavm into metaprogramming
2016-04-12 22:18:47 +03:00
Alexey Andreev
da42e5e3eb
Add optimizations to metaprogramming implementation
2016-04-12 22:14:15 +03:00
Alexey Andreev
84d9899b3e
Implement metaprogramming proxies
2016-04-06 23:02:15 +03:00
Alexey Andreev
8df8191dae
Fix bug with capturing phi inputs
2016-03-02 23:14:23 +03:00
Alexey Andreev
518e13cf07
Add several tests for metaprogramming
2016-02-29 23:07:20 +03:00
Alexey Andreev
3e562aa08a
Simple metaprogramming test passes
2016-02-27 18:46:27 +03:00
Alexey Andreev
2b3cba69bc
Run JUnit tests via JUnit runner instead of Maven plugin
2016-02-23 18:46:32 +03:00
Alexey Andreev
5e7311d8cc
Start porting metaprogramming API implementation
2016-02-23 13:44:39 +03:00
Alexey Andreev
92dbed2593
Start porting metaprogramming API implementation
2016-02-22 23:59:54 +03:00
Alexey Andreev
1826e04951
Add class handling in dependency checker
2016-02-22 19:29:51 +03:00
Alexey Andreev
8db424809a
Update IDEA configuration. Add metaprogramming API
2016-02-21 23:35:17 +03:00
Alexey Andreev
7d7808bb13
Fix maven build
2016-02-21 22:36:45 +03:00
Alexey Andreev
5706012d0e
Ignore IDEA files
2016-02-19 22:17:57 +03:00
Alexey Andreev
1ee07e89bc
First working version of JPS plugin
2016-02-18 01:17:37 +03:00
Alexey Andreev
863a4b76ff
Struggiling with JAR hell in JPS plugin
2016-02-16 23:51:50 +03:00
Alexey Andreev
5dad013cc7
Migration to IDEA
2016-02-07 14:28:51 +03:00
Alexey Andreev
d718177fe0
Improve resource loading contributed by Jaroslav:
...
* Implement base64 decoder instead of atob, which is not supported
by IE9
* Avoid direct usage of window identifier to prevent global namespace
from spoiling
* Make customizable approach to supply list of resources to write
into JavaScript
2015-12-26 13:26:34 +03:00
Alexey Andreev
5ae384538d
Fix https://github.com/konsoletyper/teavm/issues/167
2015-12-25 18:30:05 +03:00
Alexey Andreev
4c4d236653
Switch all versions to 1.0.0-SNAPSHOT. Prototyping version switch script
2015-12-24 21:26:29 +03:00
Alexey Andreev
b61849ce80
Fix metaprogramming bugs
2015-12-10 23:05:17 +03:00
Alexey Andreev
7b33bb643e
Raise version to 0.4.1
2015-11-30 20:27:01 +03:00
Alexey Andreev
ba54f82dc0
Fix parsing InvokeDynamic method handle
2015-11-29 10:45:29 +03:00
Alexey Andreev
7fd414c84e
Minor bugfixes
2015-11-08 23:52:40 +03:00
Alexey Andreev
6d45f57a39
Add methods to submit class file directly as byte array
2015-10-29 16:13:47 +03:00
Alexey Andreev
e4a83b7d79
Raise version to 0.4.1-SNAPSHOT
2015-10-25 19:27:30 +03:00
Alexey Andreev
b12404ee7e
Fix emit API. Fix several JS wrappers.
2015-10-25 19:22:48 +03:00
Alexey Andreev
f25b2d46e8
Change version to 0.4.0
2015-10-22 08:25:53 +03:00
Alexey Andreev
f3a4d3737b
Allow to submit method during dependency check
2015-10-21 21:35:22 +03:00
Alexey Andreev
8702f7ee33
Repair incremental builder
2015-10-21 20:51:43 +03:00
Alexey Andreev
804b51abf5
Fix bug in method submit API
2015-10-21 18:45:37 +03:00
Alexey Andreev
0340bb9c73
A new API to generate additional methods after dependency checking
2015-10-21 16:03:06 +03:00
Alexey Andreev
2640234391
Rename achieved -> reached. Fix - operator generation in minified mode
2015-10-21 12:08:30 +03:00
Alexey Andreev
84be461a69
Fix async test building. Fix Window.prompt. Fix non-integer JS number to
...
Java primitive conversion
2015-10-19 16:49:27 +03:00
Alexey Andreev
732957cd84
Fix bugs
2015-10-15 16:03:11 +03:00
Alexey Andreev
cf92616a6a
Add pluggable test runner. Add html4j adapter that relaunches test
...
several times if it throws InterruptedException. Attempting to fix
decompilation errors in some CFGs with try/catch statements
2015-10-15 11:03:06 +03:00
Alexey Andreev
f6bc6f2fcf
Fix plugin ordering. Exclude branches from travis
2015-10-12 20:51:46 +03:00
Alexey Andreev
c7026c1299
Add plugin ordering annotations and implementation
2015-10-12 18:39:29 +03:00
Alexey Andreev
5592862c70
More JS API fixes
2015-10-11 18:49:57 +03:00
Alexey Andreev
7c4b4ebe77
Fix bug. Integrate precedence API into JSO
2015-10-11 18:03:46 +03:00
Alexey Andreev
6d23626867
Refactor precedence support
2015-10-11 17:30:28 +03:00
Alexey Andreev
d29339f0b8
Test runner
2015-10-09 22:54:50 +03:00
Alexey Andreev
5522f55c68
Deep refactoring of tooling libraries
2015-10-09 17:56:38 +03:00
Alexey Andreev
90fec4e219
Refactoring test compiler
2015-10-08 18:27:48 +03:00
Alexey Andreev
e83d4106d8
Prototype implementation of selenium test runner
2015-10-08 17:56:16 +03:00