Debugger: Disable code interpreting by default in evaluator

Provide the compiled bytecode to debugger instead of interpreting the expression by default.
This significantly increases evaluation speed in numerous cases, e.g. `(1..10000).map { it.toString() }.count()`.
Leave interpreter mode as a fallback.

Android does not provide decent in-memory class loading support.
Moreover, we need to run dex on the compiled classes, and it required significant time.
So for now compiling evaluator for Android is available only in Android O, and only if there're any local classes or non-inline lambdas (evaluator didn't work for them before so we may consider this change as an improvement).
This commit is contained in:
Yan Zhulanow
2017-04-19 02:17:28 +03:00
committed by Yan Zhulanow
parent 4851a83a83
commit 069579fd79
16 changed files with 626 additions and 105 deletions
+1
View File
@@ -24,5 +24,6 @@
<orderEntry type="library" name="uast-java" level="project" />
<orderEntry type="library" name="kotlin-reflect" level="project" />
<orderEntry type="module" module-name="light-classes" />
<orderEntry type="library" scope="PROVIDED" name="dx-android" level="project" />
</component>
</module>