Alexis Laferrière [Thu, 23 Jul 2015 16:52:52 +0000 (12:52 -0400)]
contrib/jwrapper: intro a practical example use of jwrapper
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 24 Jul 2015 13:07:29 +0000 (09:07 -0400)]
contrib/jwrapper: make casting base objects (Integer, Long, etc.) optional
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 21:55:40 +0000 (17:55 -0400)]
contrib/jwrapper: do not remove get_ or replace set_
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 21:52:31 +0000 (17:52 -0400)]
contrib/jwrapper: comment out all primitive arrays
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 21:51:15 +0000 (17:51 -0400)]
contrib/jwrapper: add an option to search for existing wrappers in custom libs
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 21:50:10 +0000 (17:50 -0400)]
contrib/jwrapper: add some top-level methods to the reserved keywords
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 15:10:42 +0000 (11:10 -0400)]
contrib/jwrapper: improve `JavaType::==`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 14:58:56 +0000 (10:58 -0400)]
contrib/jwrapper: remove old naming escape on methods
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 14:04:26 +0000 (10:04 -0400)]
contrib/jwrapper: filter classes from Jar archives with a regex
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 13:35:09 +0000 (09:35 -0400)]
contrib/jwrapper: use the new type conversion system in code gen
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 13:34:08 +0000 (09:34 -0400)]
contrib/jwrapper: remove unused code
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 13:33:29 +0000 (09:33 -0400)]
contrib/jwrapper: revamp conversion from Java to Nit types
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 13:31:57 +0000 (09:31 -0400)]
contrib/jwrapper: revamp and merge extern_name and extern_class_name
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 13:22:35 +0000 (09:22 -0400)]
contrib/jwrapper: intro an option to choose the extern class name prefix
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 13:02:03 +0000 (09:02 -0400)]
contrib/jwrapper: update signatures of the gen_ methods
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 13:27:12 +0000 (09:27 -0400)]
contrib/jwrapper: generate constructors
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 21 Jul 2015 18:53:54 +0000 (14:53 -0400)]
contrib/jwrapper: generate getter and setter to access fields
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 13:11:22 +0000 (09:11 -0400)]
contrib/jwrapper: intro a service to avoid property name conflicts
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 22 Jul 2015 18:37:08 +0000 (14:37 -0400)]
contrib/jwrapper: revamp the search with grep and cache the results
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 22 Jul 2015 18:44:07 +0000 (14:44 -0400)]
contrib/jwrapper: `JavaModel::classes` sort keys by string
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 22 Jul 2015 14:01:04 +0000 (10:01 -0400)]
contrib/jwrapper: add 4 more tests from a javap output
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 22 Jul 2015 13:59:07 +0000 (09:59 -0400)]
contrib/jwrapper: add missing keywords to mangle
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 22 Jul 2015 13:50:20 +0000 (09:50 -0400)]
contrib/jwrapper: big rewrite of the AST visitor
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 21 Jul 2015 19:08:49 +0000 (15:08 -0400)]
contrib/jwrapper: only the `java` module must always be imported
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 21 Jul 2015 18:01:31 +0000 (14:01 -0400)]
contrib/jwrapper: do not try to generate generic extern classes
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 21 Jul 2015 17:56:55 +0000 (13:56 -0400)]
contrib/jwrapper: update constructor and use optional attributes in NitType
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 21 Jul 2015 17:50:15 +0000 (13:50 -0400)]
contrib/jwrapper: remove NitType::arg_id it was unused, only set
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 21 Jul 2015 17:26:35 +0000 (13:26 -0400)]
contrib/jwrapper: use JavaTypeConverter as a singleton
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 17:54:20 +0000 (13:54 -0400)]
ffi/java: pointers are stored as `long` so they grow with the architecture
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 23 Jul 2015 17:53:51 +0000 (13:53 -0400)]
lib/java: fix expected type with JNI's `GetStringUTFChars`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Thu, 23 Jul 2015 17:33:29 +0000 (13:33 -0400)]
Merge: UTF-8 Strings
In regard to #1262, and after many rewritings, here's a fully-functional prototype for UTF-8 compliant Strings !
Many things have changed and now, operations on String will need to be considered differently to avoid bad surprises, namely:
- FlatBuffers are slow as hell when getting chars or modifying in-place (and an in-place modification can degenerate if a single-byte char is modified by a multibyte char)
- Length is now potentially expensive (especially within FlatBuffer where it is not cached)
- Indexed access is now O(n), though it is cached for local accesses (except in FlatBuffer)
Performances, for the user time of `nitc src/nitc.nit -o bin/nitc`, has gone from 4.55s to 4.80s, so +5.5%; we have seen worse.
So a little slowdown, but definitely acceptable when introducing UTF-8 in Strings.
Pull-Request: #1277
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Thu, 23 Jul 2015 17:33:14 +0000 (13:33 -0400)]
Merge: NSieve optimization
The `shootout_nsieve` benchmark has been present in tests for a long time (longer than I can remember actually).
Up until now, its performances have been constant and quite good, since the work was done in less than 15ms.
However, due to its use of `FlatBuffer` and indexed access, it degenerates when using UTF-8 (see #1277) and the run time of `shootout_nsieve` scales from `0m0.011s` to `1m59.870s`.
This PR fixes that.
Pull-Request: #1583
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Jul 2015 17:32:50 +0000 (13:32 -0400)]
Merge: Fix lib/realtime on osx
A lot of googling to solve two related issues on Mac OS X
* `clock_gettime` and cie is not provided, and one should use the more complex clock_get_time (and cie)
* the POSIX `-lrt` is refused by the linker
close #868
Pull-Request: #1586
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 23 Jul 2015 17:32:37 +0000 (13:32 -0400)]
Merge: Improve initial make
Small improvement to make the initial make better.
For the final user perspective, an useless error message is removed and the whole process should be slightly faster.
Before:
* real time with cleared ccache: 4m46s
* user time with cleared ccache: 13m23s
* real time with full ccache: 42.5s
* user time with full ccache: 41.8s
After:
* real time with cleared ccache: 4m30s (-5.6%)
* user time with cleared ccache: 13m23s (-4.6%)
* real time with full ccache: 42.5s (-27.8%)
* user time with full ccache: 41.8s (-24.63)
Pull-Request: #1585
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Thu, 23 Jul 2015 15:14:36 +0000 (11:14 -0400)]
tests: Updated for correct semantics, added new tests for Unicode
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Fri, 10 Jul 2015 20:15:52 +0000 (16:15 -0400)]
src: Compiler, interpreter and parser updates for UTF-8
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 21 Jul 2015 17:46:08 +0000 (13:46 -0400)]
lib/standard: Update libs for the support of UTF-8
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Fri, 10 Jul 2015 20:15:03 +0000 (16:15 -0400)]
lib/standard: Added services on NativeString and Char for the support of UTF-8
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 23 Jul 2015 14:58:47 +0000 (10:58 -0400)]
lib/realtime: add a compatibility layer for OSX
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Jul 2015 14:58:08 +0000 (10:58 -0400)]
compiler: filter out -lrt flaf for OXS
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Jul 2015 13:56:48 +0000 (09:56 -0400)]
Makefile: compile nitc_0 with --semi-global as it make the whole `make` faster
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Jul 2015 13:56:15 +0000 (09:56 -0400)]
Makefile: do not rely in multiple targets as it may cause multiple invocation of the recipe
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Jul 2015 13:55:20 +0000 (09:55 -0400)]
Makefile: remove now useless `rm .nitcompile`
Signed-off-by: Jean Privat <jean@pryen.org>
Lucas Bajolet [Wed, 22 Jul 2015 18:16:23 +0000 (14:16 -0400)]
tests: Shootout_nsieve now uses byte arrays instead of Buffers
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Wed, 22 Jul 2015 17:41:01 +0000 (13:41 -0400)]
lib/c: CByteArray now uses Byte instead of Int
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Wed, 22 Jul 2015 17:37:52 +0000 (13:37 -0400)]
Merge: lib/std: add Path::last_error to aggregate errors on path services.
It it not complete but still a start
Pull-Request: #1571
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Wed, 22 Jul 2015 17:37:48 +0000 (13:37 -0400)]
Merge: Fix nitpick return value
Make that nitpick returns 1 if some errors where detected.
This is more POLA and will helps callers to spot if there was errors in nit files given in arguments.
Pull-Request: #1581
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Wed, 22 Jul 2015 14:21:05 +0000 (10:21 -0400)]
Merge: Conditional importation
First quick and dirty implementation for #1579.
Since the loader is due to a full rewrite (cf #1250), some part were implemented as simple as possible.
It is only a technology preview. A lot of thing are missing including the following:
* do not error if the modules in the rules are not present (eg optional modules not installed). Not an issue currently since all the modules are present in the repository.
* show warnings for useless condition to help the programmer
* implement some visibility rules. `public` is assumed even if it makes no sense and cause issues
* understand qualified modules in the conditions
The last issue might be the more limiting currently as only the conditional module understand qualified names. the potential qualified names in the arguments are accepted but just ignored.
Basically `toto` is ignored in `import foo::bar is conditional(toto::tata)`.
Pull-Request: #1580
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 22 Jul 2015 14:21:00 +0000 (10:21 -0400)]
Merge: Nitj: A compiler to Java code.
Introduce a new compiler `nitj` that takes nit code and produce Java code.
Passes ~700/950 tests from the base*.nit test suite.
Since the commit serie is rather long, I suggest to read it comit by commit.
Some features still missing (maybe later):
* generics
* arrays
* varargs
* strings
Note: There is no concrete motivation beyond this engine. Did it for the lulz.
Pull-Request: #1577
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean-Philippe Caissy <jpcaissy@piji.ca>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 22 Jul 2015 14:19:11 +0000 (10:19 -0400)]
tests: test return value of nitpick
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 22 Jul 2015 14:18:40 +0000 (10:18 -0400)]
nitpick: return 1 if errors occurred
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 22 Jul 2015 12:35:10 +0000 (08:35 -0400)]
tests: update sav/ for new error messages in file access
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Jul 2015 13:20:23 +0000 (09:20 -0400)]
tests: add test_path
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Jul 2015 13:11:48 +0000 (09:11 -0400)]
lib/std: add some cached services on Path
Signed-off-by: Jean Privat <jean@pryen.org>
Alexandre Terrasa [Thu, 16 Jul 2015 21:54:48 +0000 (17:54 -0400)]
nitj: improve Ant cache by not rewritting unchanged file
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 16 Jul 2015 21:52:53 +0000 (17:52 -0400)]
nitj: faster recompilation with Ant
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 13 Jul 2015 21:04:21 +0000 (17:04 -0400)]
nitj: implement ACastExprs
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 13 Jul 2015 17:36:53 +0000 (13:36 -0400)]
nitj: avoid dead code execution
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 18:19:32 +0000 (14:19 -0400)]
nitj: implement bool exprs
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 18:55:16 +0000 (14:55 -0400)]
nitj: factorize frame initialization for method, attribut and init compilation
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 18:18:15 +0000 (14:18 -0400)]
nitj: implement non-generic type tests
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 05:32:01 +0000 (01:32 -0400)]
nitj: implement ADoExpr, AWhileExpr, ALoopExpr
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 06:02:43 +0000 (02:02 -0400)]
nitj: implement ANotExpr
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 06:02:17 +0000 (02:02 -0400)]
nitj: implement AIFExpr
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 03:00:55 +0000 (23:00 -0400)]
nitj: implement AParExpr
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 06:05:31 +0000 (02:05 -0400)]
nitj: implement super calls
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 06:04:07 +0000 (02:04 -0400)]
nitj: implement attributes expressions
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 00:02:05 +0000 (20:02 -0400)]
nitj: implement main call
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 30 Jun 2015 19:08:56 +0000 (15:08 -0400)]
nitj: compile java main function stub
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 00:01:50 +0000 (20:01 -0400)]
nitj: implement instances initialization
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 00:05:06 +0000 (20:05 -0400)]
nitj: compile attributes accesses
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 9 Jul 2015 23:58:53 +0000 (19:58 -0400)]
nitj: compile intern methods bodies
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 14 Jul 2015 05:28:14 +0000 (01:28 -0400)]
typing: also type signature for intern methods
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 9 Jul 2015 23:58:12 +0000 (19:58 -0400)]
nitj: compile concrete methods bodies
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 6 Jul 2015 16:49:20 +0000 (12:49 -0400)]
nitj: implement instance initialization and ANewExprs
Attributes are not handled in this commit.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 13 Jul 2015 21:08:52 +0000 (17:08 -0400)]
nitj: avoid calls to abstract methods
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 10 Jul 2015 05:38:35 +0000 (01:38 -0400)]
nitj: implements AReturnExprs
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 6 Jul 2015 16:50:01 +0000 (12:50 -0400)]
nitj: shortcut calls on primitive instances
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 18:32:17 +0000 (14:32 -0400)]
nitj: implement static and polymorphic sends
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 14 Jul 2015 06:08:08 +0000 (02:08 -0400)]
nitj: implement boxing for Java primitives
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 18:23:12 +0000 (14:23 -0400)]
nitj: implement variable declaration
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 6 Jul 2015 15:33:04 +0000 (11:33 -0400)]
nitj: compile native instances of Int, Byte, Float, Char and Bool
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 9 Jul 2015 23:20:44 +0000 (19:20 -0400)]
nitj: implement `self` accesses
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 18:06:57 +0000 (14:06 -0400)]
nitj: implement aborts
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 9 Jul 2015 23:20:08 +0000 (19:20 -0400)]
nitj: implement static frame to handle calls
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 13 Jul 2015 21:07:32 +0000 (17:07 -0400)]
nitj: prepare node visit of method bodies
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Wed, 1 Jul 2015 00:02:58 +0000 (20:02 -0400)]
nitj: implement variable handling
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 9 Jul 2015 23:55:32 +0000 (19:55 -0400)]
nitj: build naive type tables using Java HashMaps
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 30 Jun 2015 19:48:51 +0000 (15:48 -0400)]
nitj: build naive vfts using Java HashMaps
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 17:44:32 +0000 (13:44 -0400)]
nitj: generate runtime mmethodef structure stubs
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 17:41:05 +0000 (13:41 -0400)]
nitj: generate runtime class structure stubs
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 17:37:50 +0000 (13:37 -0400)]
nitj: introduce JavaRuntimeModel used to represent Nit entities in Java runtime
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 17:31:48 +0000 (13:31 -0400)]
nitj: introduce JavaCompilerVisitor to generate java code
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 20 Jul 2015 17:58:31 +0000 (13:58 -0400)]
nitj: add tests for the nitj engine
Reused tests from `nitg-e`.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 17:16:49 +0000 (13:16 -0400)]
nitj: compile generated Java files using make and Javac
This will be used to compile generated files into an executable jar.
Also introduce a shell script to directly run the generated jar to come like it was a binary.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Fri, 17 Jul 2015 17:06:34 +0000 (13:06 -0400)]
nitj: introduce compiler to Java code
This commit only introduce a stub and a way to test it.
Code generation will be added in next commits.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Tue, 21 Jul 2015 20:42:03 +0000 (16:42 -0400)]
Merge: jwrapper accepts Jar archives
This PR modifies jwrapper to accept Jar archives and fix a bunch of bugs/limitations. This is probably the first of 2 PRs on jwrapper. This one targets the frontend to accept any Java classes (tested on over 25k classes) and to mass produce wrappers. It also ensures that both the generated nit code and jwrapper itself is debuggable.
Although the mass generated Nit code is syntactically valid, more work is needed so it can be usable. We will need to somehow apply Java namespace in generated Nit code, and revamp how new wrappers interact with older/custom wrappers. There is also a few missing features, such as copying the class hierarchy to Nit.
With this PR, jwrapper successfully parses 4 large Jar achives:
* OpenJDK 7 standard library `rt.jar` with 18568 classes.
* OpenJDK 7 tools `tools.jar` with 4144 classes.
* Android lib `android.jar` with 2767 classes.
* SableCC `sablecc-3-beta.3.altgen.
20041114/lib/sablecc.jar` with 495 classes.
Pull-Request: #1578
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Tue, 21 Jul 2015 20:23:52 +0000 (16:23 -0400)]
friendz: rely on conditional importation in platform
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Jul 2015 20:20:16 +0000 (16:20 -0400)]
calculator: rely on conditional importation in the Makefile
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 21 Jul 2015 20:19:16 +0000 (16:19 -0400)]
lib/app: provide conditional importation of app extensions
Signed-off-by: Jean Privat <jean@pryen.org>