Commit Graph

2615 Commits

Author SHA1 Message Date
Ilya Matveev 1b4f3536d0 gradle-plugin: Mention several available options in GRADLE_PLUGIN.md 2017-07-28 10:57:08 +07:00
Ilya Matveev 2ed2b262d2 gradle-plugin, tests: Escape windows path separator in konan.home 2017-07-28 10:57:08 +07:00
Ilya Matveev da3be1f04b gradle-plugin: Correct some incremental tests 2017-07-28 10:57:08 +07:00
Ilya Matveev 60c87e890f gradle-plugin: Refactor config containers 2017-07-28 10:57:08 +07:00
Ilya Matveev dc1d24eaa7 gradle-plugin: Don't use a default src path if another one is defined 2017-07-28 10:57:08 +07:00
Ilya Matveev 6534f36dbd gradle-plugin: Fix incremental build for 'manifest' argument 2017-07-28 10:57:08 +07:00
Ilya Matveev 19df1e26e5 gradle-plugin: Add a test for default values 2017-07-28 10:57:08 +07:00
Ilya Matveev 8f56e81831 gradle-plugin: Add path test 2017-07-28 10:57:08 +07:00
Ilya Matveev 5dcbfeb4cf gradle-plugin: Add tests for incremental build 2017-07-28 10:57:08 +07:00
Ilya Matveev 7fbb1fcfc7 gradle-plugin: Make manifest parameter optional 2017-07-28 10:57:08 +07:00
Ilya Matveev 12f815eabb backend: Add a call lowering pass before inlining
Some inlined calls may require additional processing before the
inlining pass. E.g. assert() calls must be removed if assertions are
disabled by compiler flags. This patch adds an additional pass
before inlining and uses it for assertions removal.
2017-07-27 11:49:54 +07:00
Ilya Matveev 0e67fbb7ad tests: Add assert tests 2017-07-27 11:49:54 +07:00
Ilya Matveev a2e9fa324b backend: Use symbols for assertions processing 2017-07-27 11:49:54 +07:00
Ilya Matveev de5bc71ffc backend: Correct assertion in 'for' loop lowering
The frontend uses one of two origins for loop variables:
LOOP_VARIABLE and IMPLICIT_LOOP_VARIABLE. This patch takes
this into account.
2017-07-25 22:26:17 +07:00
Ilya Matveev bef8d6bef1 backend: Set 'origin' property for generated variables in 'for' loops 2017-07-25 22:26:17 +07:00
Ilya Matveev 42c4391654 backend: Process 'until MIN_VALUE' in for loops
This patch takes into account a corner case available for loops
over a progression (see backend.native/tests/external/codegen/box/
ranges/forInUntil/forInUntilMinint.kt test):

for (i in 0 until Int.MIN_VALUE) { ... }

Here we cannot use subtraction to obtain a right bound of the loop
due to an overflow. Instead we consider any loop with MIN_VALUE in
it's right bound as empty loop. Such behaviour is similar to the one
of 'until' method.

So now the empty check for a loops with 'until' call:

for (i in first until bound) { ... }

is as follows:

val last = getProgressionLast(first, bound, step) // Only if step==1
if (first <= last && bound > <Int|Long|Char>.MIN_VALUE) {
    do { ... } while(i != last)
}

Further improvements: We can generate a simpler IR for some simple
frequent cases (e.g. for until calls without steps) and eliminate
loops if we can prove that they are empty.
2017-07-25 22:26:17 +07:00
Ilya Matveev 295ab0a679 [kotlin compiler][update] 1.1-20170724.005554-711 2017-07-24 15:54:16 +07:00
Ilya Matveev 0ddc002b8d backend: Use IrComposite instead of IrBlock in headers of 'for' loops 2017-07-20 10:35:40 +07:00
Daniel c4acdf1b25 Fix humanReadable formatting of bytes.
Previously, Long.humanReadable would display byte unit suffixes as `kB`, `MB`, etc., even though the calculations on byte counts were using base 2 for calculations.

I've revised this to display sizes in the format of `kiB` or `MiB`, for kebibyte, and mebibyte - the base 2 unit equivalents of kilobyte and megabyte respectively.
2017-07-19 10:33:59 +07:00
Ilya Matveev d6e0f67d4e tests: Add test for nested 'for' loops 2017-07-18 17:05:58 +07:00
Ilya Matveev 6ea341be06 tests: Move 'for' loop lowering tests into 'controlflow' directory 2017-07-18 17:05:58 +07:00
Ilya Matveev 745fc711f8 backend: Add caching for unary and binary operation symbols 2017-07-18 17:05:58 +07:00
Ilya Matveev 01f0540fac backend: Don't cast step in 'for' loop lowering 2017-07-18 17:05:58 +07:00
Ilya Matveev 3184ae57c6 backend: Don't calculate last element in 'for' loop if the step is 1 2017-07-18 17:05:58 +07:00
Ilya Matveev a97a310987 tests: Add tests for empty ranges in 'for' loops 2017-07-18 17:05:58 +07:00
Ilya Matveev d474f207e3 backend: Don't create a Progression objects in 'for' loops
This patch optimizes the following pattern:

for (i in first..last step st) { ... }

In this case we need to create a Progression object and then call its
iterator() method causing at least 2 allocation per loop. This change
replaces such loops with the following constuction:

var inductionVar = first
checkProgressionStep(step)  // check if step > 0
last = getProgressionLastElement(first, last, step)
if (first <= last) {
    do {
        i = inductionVar
        inductionVar += step
        ...
    } while(i != last)
}
2017-07-18 17:05:58 +07:00
Nikolay Igotti 06e31939dd WebAssembly effort (#721) 2017-07-14 16:44:46 +03:00
Nikolay Igotti 64e106157f Custom malloc support (#742) 2017-07-14 16:21:42 +03:00
Nikolay Igotti 1565371cda Porting layer (#741) 2017-07-14 14:23:52 +03:00
Svyatoslav Scherbina 747922ce00 Add one more workaround for LLVM bug 33220 2017-07-14 09:16:28 +03:00
Nikolay Igotti dae273099a Centralized memory allocation (#736) 2017-07-13 14:10:26 +03:00
Ilya Matveev e8c1fbe1ff gradle-plugin: Move tests into default 'test' directory 2017-07-13 16:26:21 +07:00
Ilya Matveev f87ae58f7c gradle-plugin: Fix incremental build
The patch makes the plugin to set default input directories
(src/main/kotlin and src/main/c_interop) at task construction
rather than setting them during compiler command line building.
It allows gradle to perform up-to-date checks correctly.
2017-07-13 16:26:21 +07:00
Ilya Matveev e8b1fc3dee gradle-plugin: Add test infrastructure 2017-07-13 16:26:21 +07:00
Alexander Gorshenev 55c4966203 Moved clang flags out of the root build.gardle.
Collected clang args in ClangArgs.kt
Switched dependencies/build.gradle to KonanTarget.
Introduced KonanProperties to take care of target specific properties.
2017-07-12 18:31:09 +03:00
Vasily Levchenko 1d532729a8 [linker] more enhancments (idea inspections) 2017-07-12 06:46:35 -07:00
vvlevchenko 96d5341852 [backend][properties] try suffixied property first and common then (#735)
* [backend][properties]  try suffixied property first and common then

This is temporal version and should be replaced with some unified version shared between interior tool and kaitlin compiler.
2017-07-12 06:43:45 -07:00
Alexander Gorshenev cd9d0ab768 Warn on duplicate library inclusion. 2017-07-12 14:45:29 +03:00
Vasily Levchenko 99316263d5 [samples][csvparser] exclude zopen function on macos
for some resons with -O0 build fails with absence of definition zopen function on macos
nming /usr/lib shows that there're no libraries defining this symbol, drfined by the way
in /usr/include/stdio.h
2017-07-10 07:25:17 -07:00
Vasily Levchenko addb6e08d8 [link][debug] when build debug build, it's better to use -O0 opt flags 2017-07-10 07:25:17 -07:00
Vasily Levchenko 27517b0db1 [codegen][debug] make runtime debug information friendly to generated one.
- inroduced function generation context containing mostly functionality local to function generation
- initial debug location is linked with basic block.
- then on each expression location is tuned.
- removed manual placement of debug location dictations over the place.

- refactoring removed unused declarations
2017-07-10 07:25:17 -07:00
Vasily Levchenko 2a64d2bec5 [kotlin compiler][update] 1.1-20170708.201339-666 2017-07-10 00:17:27 -07:00
Ilya Matveev 224dd0f0fc stdlib: Add util methods for time measurements 2017-07-10 11:32:00 +07:00
Alexander Gorshenev 5b25613e23 Separated Zipped and Unzipped libraries.
Picking up files right from the zip filesystem, if possible.
2017-07-06 12:36:35 +03:00
Vasily Levchenko 56c1f2b07c [codegen][clean up] warnings, inspections and absolete comments
- useless_is_checked
- unreachable_code
- a lot of unneeded string templates
- removed extra curly backets in string templates.
2017-07-05 06:42:37 -07:00
Alexander Gorshenev 33993236de Moved some linkerOpts from build.sh and build.gradle to .def,
where it does not involve any complex intelligence.
2017-07-04 17:58:30 +03:00
Alexander Gorshenev 5effdcb1d2 Pass linkerOpts from .def to klib manifest. 2017-07-04 17:58:30 +03:00
Alexander Gorshenev e2516f42e6 Moved KonanLibrary to use KonanTarget. 2017-07-04 17:58:30 +03:00
Alexander Gorshenev edde21827c A little bit more of utils abstracting us from java api. 2017-07-04 17:58:30 +03:00
Konstantin Anisimov 0582d8f1bd Build function -> file map
Serialize/deserialize file name
Define FileEntryImpl
Provide IrReturnableBlock with information about source file
Move file iteration in NoJavaUtil
Insert future description comments
Move debug info (source file name) from IrFunction to IrDeclaration
2017-07-03 19:54:14 +07:00