Commit Graph

28 Commits

Author SHA1 Message Date
Alexander Udalov 7febd846e8 Export 'intellij-core' in module 'frontend'
Remove intellij-core from dependencies of modules which already depend
on frontend or any module that exports frontend (such as frontend.java)
2017-06-06 14:29:26 +03:00
Alexander Udalov 2ed027219c Remove dependency of module 'frontend' on 'plugin-api'
This breaks the circular dependency between them
2017-06-06 14:29:25 +03:00
Alexander Udalov 1273ac9647 Remove dependency of module 'descriptors' on 'deserialization' 2017-06-06 14:29:21 +03:00
Ilya Chernikov ea71d57808 Use script-runtime properly in IDEA project:
use it from the installed plugin for dependent modules (frontend)
use it from bootstrap in the plugin being built
also drop unused daemon-client from the plugin

This makes it consistent with ant build and allow building idea project
without prior ant dist
2017-04-19 15:22:15 +02:00
Zalim Bashorov 51e84f7ce4 Move some script related part of frontend to separate module to avoid using kotlin-reflect.jar in frontend module
Main goal is get rid of kotlin-reflect.jar from modules what required for minimal compiler.jar which can compile Kotlin only to JS to make it smaller.
2017-04-17 18:18:35 +03:00
Zalim Bashorov 05c3e7e81d Don't export kotlin-reflect form util module and add it explicitly where it's required.
Also, remove kotlin-reflect form container module.

Main goal is get rid of kotlin-reflect.jar from modules what required for minimal compiler.jar which can compile Kotlin only to JS to make it smaller.
2017-04-17 18:18:31 +03:00
Denis Zharkov 5e449fdc02 Optimize control-flow analysis by use of persistent maps
The case that it's worth to optimize is functions
with a lot of variables.

After debugging it's recovered that control-flow works nearly
O(n * m) where n is pseudocode size and m is a number of variables:
the algorithm performs O(n) copies of hashmap of size O(m)

Persistent maps should help because we don't need to perform a
copy of them, so the expected performance after the change is applied
is O(n log m)

We've tried pcollections and javaslang, and the latter one has demonstrated
better results

See results before and after optimizations
before:
https://github.com/dzharkov/kotlin-compiler-benchmarks/blob/3da7ba45a704969653d70b50995f730e968540d8/reports/benchmarks-many-vars-2017-03-14.txt

after with pcollections:
https://github.com/dzharkov/kotlin-compiler-benchmarks/blob/3da7ba45a704969653d70b50995f730e968540d8/reports/benchmarks-many-vars-persistent-optimizations-2017-03-17.txt

after with javaslang:
https://github.com/dzharkov/kotlin-compiler-benchmarks/blob/d22a871b175b291fb337b51ef6465ba70bbfd96c/reports/benchmarks-many-vars-javaslang-2017-04-07.txt
2017-04-11 11:26:11 +03:00
Ilya Chernikov 88652154c9 Port compiler to the script-runtime with script base classes 2017-04-06 10:02:45 +02:00
Ilya Chernikov 846797ff61 Switch to templates in the separate script runtime 2016-10-12 15:38:52 +02:00
Stanislav Erokhin 5bb1f3b2ea Create resolution module. 2016-02-26 00:39:37 +03:00
Sergey Mashkov 790524e391 Add library kotlin-test to IDEA project 2015-12-18 22:17:47 +03:00
Pavel V. Talanov 7130e9f881 "container" module exports "javax.inject" dependency 2015-08-19 21:18:34 +03:00
Ilya Ryzhenkov 5db541ee24 Add container module with implementation of di based on java reflection
Initial implementation by Ilya Ryzhenkov
Renovation, optimization, integration and removal of unused features by Pavel Talanov
2015-06-26 15:21:39 +03:00
Alexander Udalov 32c3bb8c7f Extract module 'deserialization' out of 'serialization'
'deserialization' stays in core because it's needed both in compiler and
reflection, but 'serialization' is used only in the compiler
2015-03-30 19:44:17 +03:00
Andrey Breslav dca186e94d plugin-api module introduced 2015-02-26 15:25:38 +03:00
Alexander Udalov 5903b8c4a7 Reorder and optimize dependencies between modules and libraries
- drop 'kotlin-runtime' and other dependencies which are exported by
  other modules ('util' and 'util.runtime' in case of 'kotlin-runtime')
- make all Kotlin modules from the compiler depend on 'util' for clarity
- put 'util' and 'util.runtime' to the bottom of the list everywhere: when
  kotlin-runtime gets reflection, classes from core/ should have higher
  priority than their previous versions from kotlin-runtime.jar
2015-01-28 19:58:35 +03:00
Alexander Udalov e46c54f514 Serialize built-ins on 'ant dist'
Don't store binary data in the repository anymore. From now on any test on the
compiler requires that 'ant dist' was executed at least once since the last
update of the built-ins
2014-01-27 18:33:49 +04:00
Alexander Udalov 5119afae52 Extract 'descriptors' module 2013-09-18 18:45:34 +04:00
Andrey Breslav b7966179f5 Deserialize built-ins 2013-08-23 17:39:04 +04:00
Andrey Breslav 0b65b8c4d3 (Circular) dependency between frontend and serialization 2013-08-23 17:39:01 +04:00
Andrey Breslav ab18b12165 DFS utility class factored out of CommonSupertypes 2012-09-11 20:52:10 +04:00
Andrey Breslav 98887a09d1 Generating Kotlin sources for functions and tuples 2012-03-28 13:15:13 +04:00
Andrey Breslav 93fcd7d1f2 Dependency Injection: GUICE replaced by custom code generation 2012-03-13 19:44:35 +04:00
Stepan Koltsov 997fbb60a3 using guice to wire TopDownAnalyzer beans
attempt 2
2012-03-10 00:54:16 +04:00
Andrey Breslav a94b77ffc9 Revert GUICE introduction 2012-03-07 12:58:37 +04:00
Stepan Koltsov c3e2fc947d using guice to wire TopDownAnalyzer beans 2012-03-07 04:09:12 +04:00
Maxim Shafirov f541cce098 Get full/core versions of IDEA using update_dependencies.xml. Don't use plugin SDK anymore. 2012-01-20 19:17:32 +04:00
Andrey Breslav 116f35c650 "compiler" folder created 2011-09-09 21:47:22 +04:00