Commit Graph

226 Commits

Author SHA1 Message Date
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