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
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