Commit Graph

209 Commits

Author SHA1 Message Date
Alexey Andreev
18eb3ee058 C backend: make more tests pass 2018-04-27 00:47:38 +03:00
Alexey Andreev
8f0320e217 Fix bugs in C backend to make more tests pass 2018-04-21 00:55:43 +03:00
Alexey Andreev
4990dbe8e4 Add support for C backend in TeaVMTestRunner 2018-04-20 22:58:09 +03:00
Alexey Andreev
e77997c93f Implement null check in C backend
Although initial purpose of this comment was null check,
it took much time to complete it and it caused many unrelated changes.
Besides just implementing null check in quite naive fashion
(I could not use the trick with memory protection, since I have to
maintain shadow stack, and support WebAssembly), I had to optimize
things. I relied on my existing nullness analysis to eliminate
as much null checks as possible. However, the whole nullness analysis
was wrong. After some thoughts I came up with solution very
close to range analysis, which required me to introduce extension
to IR sometimes called e-SSA form with so called sigma nodes.
Also, I found some bugs in few different places (by the time write this
message I could only remember escape analysis/scalar replacement and
after-inlining devirtualization) and fixed them.
2018-04-17 00:05:46 +03:00
Alexey Andreev
05d0220dcd C backend: initial commit 2018-03-20 23:18:52 +03:00
Alexey Andreev
52a23fcadd Support '.<digits>' floating literals in Double.parseDouble
See #327
2018-02-16 23:17:17 +03:00
Alexey Andreev
0485930c1f Add AtomicInteger 2018-02-16 23:08:29 +03:00
Alexey Andreev
51d87091cc Fix TimeUnit.convert implementation
See #329
2018-02-16 22:40:56 +03:00
Alexey Andreev
96b2d4e7d6 Support o and x format specifiers in String.format 2018-01-28 19:19:45 +03:00
Alexey Andreev
4ebaf476fe Fix to[Hex/Octal/Binary]String for unsigned values 2018-01-28 18:38:00 +03:00
Alexey Andreev
ff7232ac3e Improvements in reflection:
1. During dependency analysis, propagate class literals from
   Class.forName return node
2. Use original class source to generate reflection metadata
3. Link classes when they appear in signature of reflectable methods
4. Turn Class.forName(string_literal) into class literal.
2018-01-27 00:21:50 +03:00
Alexey Andreev
5ec05b9446 Fix lock on overflow/underflow in ArrayBlockingQueue 2018-01-23 22:08:44 +03:00
Alexey Andreev
28e17af500 Implement ArrayBlockingQueue 2018-01-22 23:32:10 +03:00
Alexey Andreev
ec3724b2bc Perform HTTP request as late as possible 2018-01-14 22:51:02 +03:00
Alexey Andreev
ac236f1ff8 When HTTP response invalid, return -1 as a responseCode 2018-01-09 22:15:37 +03:00
Alexey Andreev
a9beef3a15 Fix behaviour of HttpUrlConnection responseCode/responseMessage 2018-01-07 18:45:00 +03:00
Alexey Andreev
477f491b25 Fix HttpUrlConnection responseCode/responseMessage properties 2018-01-07 14:20:08 +03:00
Alexey Andreev
c46bfbc93c Fix bugs in URL implementation 2018-01-03 19:47:00 +03:00
Alexey Andreev
422cb0462a Add java.net.URL implementation 2018-01-01 14:53:44 +03:00
Alexey Andreev
7a03bf795f Add some Java classes that aren't used by TeaVM, but are necessary for javac 2017-12-03 20:05:50 +03:00
Alexey Andreev
7b989a4c1c Fix bug in EnumSet.of 2017-12-03 17:46:35 +03:00
Alexey Andreev
8256302c03 Fix ClassLoader.getResourceAsStream 2017-12-03 13:08:08 +03:00
Alexey Andreev
f14990eaeb Fix bug in base64 encoder 2017-11-26 20:18:39 +03:00
Alexey Andreev
a39e6eb47e Get rid of Base64 class in TeaVM compiler 2017-11-26 19:56:23 +03:00
Alexey Andreev
8fbf62ebac Fix infinite lock when overriding Thread.run and then joining it 2017-11-26 17:32:09 +03:00
Alexey Andreev
cc04c3446d Add support for several JDK classes and functions 2017-11-26 17:10:56 +03:00
Alexey Andreev
cc0f7583b0 Minor performance improvement 2017-11-26 14:53:56 +03:00
Alexey Andreev
c246bb6e1e Fix code that represents doubles as text in bootstrap mode 2017-11-26 13:14:02 +03:00
Alexey Andreev
ff19dc15c9 Further bootstrapping 2017-11-26 13:14:02 +03:00
Alexey Andreev
42be95959b Minor fixes for bootstrapping TeaVM 2017-11-26 13:14:02 +03:00
Alexey Andreev
cb355a85f5 Add BufferedOutputStream implementation 2017-11-26 13:14:02 +03:00
Alexey Andreev
5fa48c089a Add several unimplemented collection methods 2017-11-26 13:14:00 +03:00
Alexey Andreev
608e62ae3b Add support of stream API 2017-11-26 13:13:33 +03:00
Alexey Andreev
2fb6ca7001 Fix bug in LambdaMetafactory 2017-11-26 13:05:34 +03:00
Alexey Andreev
fc4425d7f4 Add missing method to Properties 2017-11-26 13:05:34 +03:00
Alexey Andreev
980a2d9e97 Add Optional implementation 2017-11-19 14:36:19 +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
2f73272ed7 Fix compiler crash when service enumerated in META-INF/service does not exist 2017-11-16 16:16:10 +03:00
Alexey Andreev
07f946e710 Add some useful JDK classes 2017-11-16 15:47:10 +03:00
Alexey Andreev
e96df3ef7e Add java.util.jar.* classes 2017-11-16 15:11:58 +03:00
Alexey Andreev
aa48a097d2 Fix bug in File.createTempFile 2017-11-16 15:11:58 +03:00
Alexey Andreev
0e5b1a97c1 Add PipedInputStream and PipedOutputStream 2017-11-16 15:11:58 +03:00
Alexey Andreev
82b96da215 Add StreamTokenizer 2017-11-16 15:11:58 +03:00
Alexey Andreev
7f152c0137 Add FileReader and FileWriter 2017-11-16 15:11:58 +03:00
Alexey Andreev
30da395304 Add BufferedWriter 2017-11-16 13:43:31 +03:00
Alexey Andreev
c9485ccbdc Add tests for FileInputStream and FileOutputStream 2017-11-16 00:19:00 +03:00
Alexey Andreev
a96b5912c7 Uncomment previously failing File tests and fix bugs in File implementation 2017-11-16 00:19:00 +03:00
Alexey Andreev
23c25c5d6e Add tests for java.io.File. Improve its implementation to pass tests 2017-11-15 00:13:07 +03:00
Alexey Andreev
c048b2ac6c Implement java.io.RandomAccessFile 2017-11-14 00:08:49 +03:00
Alexey Andreev
9ca09093a6 Improve virtual FS API 2017-11-13 23:22:54 +03:00
Alexey Andreev
99812d1bfa Call <clinit> from native System.currentTimeMillis 2017-11-13 00:37:20 +03:00
Alexey Andreev
e1c7acd8a1 Fix ResourceBundle.getBundle in case of .properties resource 2017-11-10 15:49:09 +03:00
Alexey Andreev
e2225941f8 Add java.lang.InternalError 2017-11-10 01:02:36 +03:00
Alexey Andreev
76590d759c Add preliminary support of file I/O 2017-11-10 01:02:21 +03:00
Alexey Andreev
86d151d953 Add support for more java.util.zip 2017-11-10 00:47:48 +03:00
Alexey Andreev
2a07e67423 Cache CLDRReader data between builds 2017-11-05 14:51:24 +03:00
Alexey Andreev
840b9dfe8b Fix message format tests 2017-11-03 21:59:21 +03:00
Alexey Andreev
90cc2c4677 Add implementation of java.text.MessageFormat 2017-11-03 00:32:16 +03:00
Alexey Andreev
6145afcbf8 Fix compact() operation on NIO buffers 2017-11-02 23:30:03 +03:00
Alexey Andreev
389b55be91 Implement AtomicBoolean and String.toLowerCase/toUpperCase(Locale) 2017-11-02 20:26:02 +03:00
Alexey Andreev
6d5b4a67e5 Implement String.format 2017-10-30 00:06:25 +03:00
Alexey Andreev
5109691a8d Implement java.util.Formatter for subset of available specifiers 2017-10-30 00:03:30 +03:00
Alexey Andreev
ffbfd7df79 Add minor stuff to classlib 2017-10-26 20:17:09 +03:00
Alexey Andreev
74be67038d Implement ResourceBundle 2017-10-26 20:11:24 +03:00
Alexey Andreev
a22eb43bde Fix Enum.getDeclaringClass 2017-10-26 16:16:27 +03:00
Alexey Andreev
f61567dfde Implement StringWriter and PrintWriter 2017-10-26 15:51:01 +03:00
Alexey Andreev
6848984a10 Provide independent implementation for ArrayList.add(E).
To improve performance. Also, see #310
2017-10-24 23:06:43 +03:00
Jaroslav Tulach
ba5342f860 Basic implementation of two basic JavaBeans classes 2017-10-24 22:56:22 +03:00
Jaroslav Tulach
8c7905e9cc Adjusting TeaVM to forthcoming release of Apache HTML/Java API version 1.5 2017-10-24 22:56:22 +03:00
Alexey Andreev
daf0f03634 Fix Boolean.getBoolean(String). Fix various minor issues with system properties
See #306
2017-10-13 16:06:10 +03:00
Alexey Andreev
0b985b95d1 Implementing java.util.EnumMap 2017-10-12 15:13:55 +03:00
adamjryan
8d2e468f44 TArrayDeque fix for .remove(Object) (#302)
* TArrayDeque fix for .remove(Object)

ArrayDeque removes items by shifting the existing items to overwrite
the removed item. It did not update the head/tail pointers once the
operation was complete leaving a null item at the head/tail of the
collection. This change updates the pointers so that the null element is
excluded and the correct size is returned.
2017-10-10 22:39:06 +03:00
Alexey Andreev
26824f1399 Add some properties-related methods to System class 2017-10-10 12:56:51 +03:00
Alexey Andreev
c057c7b78f Fix compilation 2017-10-08 21:50:41 +03:00
Alexey Andreev
dfaeb46c5e Implementing EnumSet 2017-10-08 21:40:45 +03:00
Alexey Andreev
669594fc9c JS: add reflection support for methods 2017-07-17 22:21:17 +03:00
Alexey Andreev
12dded73f6 JS: add support for Class.getModifiers 2017-07-17 22:21:17 +03:00
Alexey Andreev
4171d468d4 JS: add reflection support for constructors 2017-07-17 22:21:17 +03:00
Alexey Andreev
c4c5635f88 Add reflection support for constructors 2017-07-17 22:21:16 +03:00
Alexey Andreev
31f9ca57ce Add reflection support for fields 2017-07-17 22:21:16 +03:00
Alexey Andreev
248d62ff12 Reformat classlib according to checkstyle rules 2017-07-01 14:08:29 +03:00
Alexey Andreev
cdec4560ba Remove dumb comments containing only @author annotation 2017-07-01 13:13:52 +03:00
Alexey Andreev
b477a7dcad Fix capacity calculation in ArrayList and StringBuilder.
See #289 and #290
2017-06-25 13:37:15 +03:00
Alexey Andreev
d982f89ab6 Add missing folder to CLDR archive. Fix tests WRT changes in CLDR. 2017-06-25 13:36:35 +03:00
Alexey Andreev
daa5384e97 Upgrade versions of dependencies. Upgrade tzdata, CLDR and UnicodeData 2017-06-18 22:33:27 +03:00
Alexey Andreev
40b29cdfa1 Add support for altMetafactory 2017-06-18 21:22:44 +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
87f7ee4b72 Remove unnecessary @author comment from classes 2017-06-01 16:14:25 +03:00
Alexey Andreev
2e8e3a65bd Add IO bufferization 2017-06-01 16:14:24 +03:00
Alexey Andreev
c0ed3d54d7 Fix base64 support
(cherry picked from commit 5da32e3a6583493a36c87bc02c8177a7740faaf7)

# Conflicts:
#	tests/src/test/java/org/teavm/classlib/java/lang/TestResourcesSupplier.java
2017-05-29 23:26:34 +03:00
Alexey Andreev
b1b98097ee Improve ResourceSupplier API
(cherry picked from commit 539a12227f79abdb4ce22aac2dbc647f1c09f083)

# Conflicts:
#	classlib/src/main/java/org/teavm/classlib/java/lang/ClassLoaderNativeGenerator.java
#	tests/src/test/java/org/teavm/classlib/java/lang/TestResourcesSupplier.java
2017-05-29 23:22:59 +03:00
Alexey Andreev
25b298b1d0 JS: fix ClassLoader.getResourceBundle for non-existent resources 2017-05-29 23:19:07 +03:00
Alexey Andreev
b8b3aa7a53 WASM: fix name section 2017-05-15 00:39:20 +03:00
Alexey Andreev
2d5f6a81c2 Improve peformance of Long.hashCode 2017-05-07 22:18:10 +03:00
Alexey Andreev
48d14570b2 Make Long/Float/Double/Integer compare/hashCode methods cross-platform 2017-05-07 22:06:44 +03:00
Alexey Andreev
e884bb35c9 Fix System.setErr/setOut methods 2017-05-07 21:32:35 +03:00
Alexey Andreev
653caa00b3 Fixes for html4j/ko4j
1. Replace Class.forName(cls.getName) with class initializer
2. Reduce set of compiled annotations to classes that actually
   get called getAnnotations()
2017-04-18 00:08:09 +03:00
Alexey Andreev
f347de44a9 WASM: fix metadata intrinsics 2017-04-17 00:09:14 +03:00
sertic
78a3aa29ec Added more WASM imports to Classlib for Double and Random class 2017-04-12 20:57:33 +03:00
Alexey Andreev
3ad16e80c7 WASM: add support for Enum.valueOf and Class.isEnum 2017-04-10 22:27:24 +03:00