Commit Graph

1026 Commits

Author SHA1 Message Date
Alexander Gorshenev 4afc7be7b7 'native' is a java keyword, so javac doesn't allow it as a package name component.
Renamed 'native' to 'konan'.
Moved BinaryMetadata.proto to konan/llvm where it belongs for now.
2016-11-07 18:16:00 +03:00
Alexander Gorshenev 56f574684a Code style and nullables fixes 2016-11-07 18:16:00 +03:00
Alexander Gorshenev 26e3101014 Now we can add metadata nodes to bitcode module.
We just put in the names of functions for now.
2016-11-07 18:14:50 +03:00
Alexander Gorshenev f76a4f6dc9 A simple protobuf description for bitcode metadata 2016-11-07 18:14:50 +03:00
Alexander Gorshenev 62f8b31cf0 Google protobuf has been added to the build 2016-11-07 18:14:50 +03:00
Konstantin Anisimov d4c3d6dabd plus'n'minus_eq operation: support for integer comparison operations
for code (plus_eq):

--------------8<------------------
> cat ../backend.native/tests/codegen/function/plus_eq.kt
fun plus_eq(a: Int): Int {
  var b = 11
  b += a
  return b
}
--------------8<------------------

generator produces:

--------------8<------------------
> llvm-dis-mp-3.8 ../backend.native/tests/codegen/function/plus_eq.kt.bc -o -
; ModuleID = '../backend.native/tests/codegen/function/plus_eq.kt.bc'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0"
....
define i32 @"kfun:plus_eq"(i32) {
entry:
  %a = alloca i32
  store i32 %0, i32* %a
  %b = alloca i32
  store i32 11, i32* %b
  %tmp1 = load i32, i32* %b
  %tmp2 = load i32, i32* %a
  %tmp0 = add i32 %tmp1, %tmp2
  store i32 %tmp0, i32* %b
  %tmp3 = load i32, i32* %b
  ret i32 %tmp3
}
--------------8<------------------

and for (minus_eq):

--------------8<------------------
> cat ../backend.native/tests/codegen/function/minus_eq.kt
fun minus_eq(a: Int): Int {
  var b = 11
  b -= a
  return b
}

--------------8<------------------

generator produces:

--------------8<------------------
> llvm-dis-mp-3.8 ../backend.native/tests/codegen/function/minus_eq.kt.bc -o -
; ModuleID = '../backend.native/tests/codegen/function/minus_eq.kt.bc'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0"
...
define i32 @"kfun:minus_eq"(i32) {
entry:
  %a = alloca i32
  store i32 %0, i32* %a
  %b = alloca i32
  store i32 11, i32* %b
  %tmp1 = load i32, i32* %b
  %tmp2 = load i32, i32* %a
  %tmp0 = sub i32 %tmp1, %tmp2
  store i32 %tmp0, i32* %b
  %tmp3 = load i32, i32* %b
  ret i32 %tmp3
}
--------------8<------------------
2016-11-07 18:00:30 +03:00
Konstantin Anisimov ea149fab4e Tests for "PLUSEQ" and "MINUSEQ" 2016-11-07 18:00:30 +03:00
Nikolay Igotti a022b7d1ab Char constants. 2016-11-07 17:42:29 +03:00
Konstantin Anisimov 3c68ee4ce5 testsuite updated to reflect recent changes in codegen: branch support 2016-11-07 17:34:01 +03:00
Vasily Levchenko 76ee79adc0 branching: branch suppport introduced
--------------8<----------------
> cat if_else.kt
fun if_else(b: Boolean): Int {
  if (b) return 42
  else   return 24
}
--------------8<----------------
we've got following bitcode:
--------------8<----------------
; ModuleID = '../backend.native/tests/codegen/branching/if_else.kt.bc'
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0"
...

define i32 @"kfun:if_else"(i1) {
entry:
  %b = alloca i1
  store i1 %0, i1* %b
  %tmp0 = load i1, i1* %b
  br i1 %tmp0, label %label_0, label %label_1

label_0:                                          ; preds = %entry
  ret i32 42

label_1:                                          ; preds = %entry
  ret i32 24
}
...
--------------8<----------------
2016-11-07 17:34:01 +03:00
Vasily Levchenko 147de5d3ad added .usr/bin path to tools chain to take right variants of binutils from our system archieve 2016-11-07 17:25:08 +03:00
Nikolay Igotti f06aeef9ce Some work for string concatenation. (#40) 2016-11-07 15:58:11 +03:00
Svyatoslav Scherbina 451ac00087 backend/tests: enable hello0 2016-11-07 17:42:47 +07:00
Svyatoslav Scherbina 674713f429 backend: instantiate string literals statically
also improve other code for static instantiation
2016-11-07 17:42:47 +07:00
vvlevchenko fddaea5624 Merge pull request #34 from JetBrains/ir-processing-refactoring
Ir processing refactoring
2016-11-03 20:42:32 +03:00
Vasily Levchenko 8880a8b7a9 disable object initialization test 2016-11-03 18:34:35 +03:00
Konstantin Anisimov fb1652a1d5 refactoring: refactoring: reordering, splitting.
(cherry picked from commit 89fc5d6416a6e7075901ac19dea44475f7184fd3)
2016-11-03 18:34:35 +03:00
Nikolay Igotti 922cb1f35d Fix problems with kotlin.Number 2016-11-03 18:28:02 +03:00
Nikolay Igotti 96dfcba997 Generate interface RTTI properly. 2016-11-03 18:13:55 +03:00
vvlevchenko 152b8752d0 Merge pull request #32 from JetBrains/ir-processing-enchancements
ir-enchancement:support operations with variables and block processing
2016-11-03 17:15:52 +03:00
Konstantin Anisimov 4078e4004c tests for local variables 2016-11-03 16:19:03 +03:00
Vasily Levchenko 8de943bb8a ir-enchancement:support operations with variables and block processing 2016-11-03 16:19:03 +03:00
Nikolay Igotti a2e4f0f467 Move compiler to new version, add primitive types. (#33) 2016-11-03 15:31:33 +03:00
Vasily Levchenko c6a5ec26d9 stash conflict occsionaly commited removed 2016-11-03 06:29:41 +03:00
Vasily Levchenko 09fb11fbc9 linux run test fix (except RTTI linking problems) 2016-11-03 06:19:26 +03:00
Nikolay Igotti 1f90f32397 Fix backend.native:run 2016-11-03 00:22:04 +03:00
Svyatoslav Scherbina 58e8ed1850 backend/tests/build: fix compiler native library path 2016-11-02 17:02:14 +07:00
Svyatoslav Scherbina e7558f9ddc build: add target native SDK as downloadable dependency
also improve Gradle native toolchains configuration
2016-11-02 17:02:14 +07:00
Svyatoslav Scherbina db1853f627 runtime: remove unused test
to simplify build configuration
2016-11-02 17:02:14 +07:00
Nikolay Igotti 5966f69928 Add Base64 encoding for printable hashes (SHA1 hash is 30 bytes, City is 14). (#30) 2016-11-02 12:44:36 +03:00
Vasily Levchenko b3fb82da07 unwanted print 2016-11-01 21:58:02 +03:00
Vasily Levchenko ac761e0cbf unit tests and run tests are splitted
run tests can use golden value and test data to process and compare results
2016-11-01 21:49:20 +03:00
Nikolay Igotti 283303210f Rename kotlin_native -> kotlin. 2016-11-01 16:13:46 +03:00
Nikolay Igotti 7eeb2d3046 Various fixes for HelloWorld. (#27) 2016-11-01 15:33:41 +03:00
Nikolay Igotti b142d39dbc Merge pull request #28 from JetBrains/fix_void
Fix void calls.
2016-11-01 13:12:47 +03:00
Nikolay Igotti 7cf38d9501 Fix void calls. 2016-11-01 13:11:39 +03:00
Vasily Levchenko 08bfdb652c processing Call IR expressions and void functions (crash expected) 2016-11-01 12:48:46 +03:00
Vasily Levchenko ecdac4190c added processing of the BLOCK_BODY, for Unit function IR doesn't contein RETURN:
FUN public fun bar(i: kotlin.Int): kotlin.Unit
      BLOCK_BODY
for code:
fun bar(i:Int):Unit {}
2016-10-31 21:31:32 +03:00
Vasily Levchenko df9bf60c30 g/c: unused vars 2016-10-31 20:56:58 +03:00
Vasily Levchenko ae3fbfcc67 g/c: line balance 2016-10-31 20:56:58 +03:00
Vasily Levchenko 90883b6ced g/c: -linq 2016-10-31 20:56:58 +03:00
Nikolay Igotti 3bb20d2874 Merge pull request #25 from JetBrains/drop-kotlin-build
Use kotlin-compiler.jar from repo to get rid of building the Big Kotlin
2016-10-31 17:07:22 +03:00
Svyatoslav Scherbina 941f3b9bc5 remove backend.native/kotlin-ir submodule 2016-10-31 19:51:08 +07:00
Svyatoslav Scherbina 644add92e5 build: download dependencies from the bintray repo
which is accessible from the outside
2016-10-31 17:59:39 +07:00
Svyatoslav Scherbina 18ae8b2311 build: switch to Sonatype snapshots repo for kotlin-compiler
it is updated automatically by every successful build
2016-10-31 17:39:15 +07:00
Svyatoslav Scherbina 1b624ac88f backend: fix building against latest kotlin-compiler.jar 2016-10-31 16:01:24 +07:00
Svyatoslav Scherbina 394b4ce6ec backend/build: depend on kotlin-compiler.jar from repo
instead of the jars from backend.native/kotlin-ir
2016-10-31 13:32:02 +07:00
Svyatoslav Scherbina 74ab1503c3 Interop: make gradle plugin more friendly to complex dependency management
when representing dependencies as file collection
some meta information gets lost
2016-10-31 13:32:02 +07:00
Nikolay Igotti 8d2c0edd6b Implement instanceof checks. (#23) 2016-10-31 08:14:04 +03:00
KonstantinAnisimov e4d1557300 Merge pull request #18 from JetBrains/K2Native-minor-improvements
minor refactoring in native to frontend interface
2016-10-28 16:59:32 +03:00