Commit Graph

403 Commits

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