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
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
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
b61849ce80
Fix metaprogramming bugs
2015-12-10 23:05:17 +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
b12404ee7e
Fix emit API. Fix several JS wrappers.
2015-10-25 19:22:48 +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
Alexey Andreev
6f173003b3
Developing selenium JUnit test runner
2015-10-07 19:16:11 +03:00
Alexey Andreev
3341df3668
Change directory structure
2015-10-04 11:49:20 +03:00