Commit Graph

869 Commits

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