Alexander Udalov
2995be8bd2
Move usages of createPhaseConfig up to cli & test modules
2019-03-21 23:32:25 +03:00
Alexander Udalov
ddad3034da
Extract createPhaseConfig from PhaseConfig
...
To remove dependency of PhaseConfig on CLI-dependent concepts such as
CompilerConfiguration
2019-03-21 23:32:25 +03:00
Roman Artemev
538512fa2a
[JS IR BE] Fix unbound symbols after deserialization
...
* restore broken psi2ir invariant
2019-03-21 16:26:51 +03:00
Dmitry Petrov
f9119c001e
JVM_IR: generate file class without members if it has metadata
2019-03-21 11:23:51 +03:00
Dmitry Petrov
a5c95275f0
IR: get rid of descriptors in DumpIrTree
2019-03-21 11:23:51 +03:00
Dmitry Petrov
9a82f926a1
IR: descriptor-less rendering of IR elements (work in progress)
2019-03-21 11:23:51 +03:00
Dmitry Petrov
cd138bc022
IR: IrSymbolVisitor
2019-03-21 11:23:51 +03:00
Dmitry Petrov
110a15d395
IR: drop IrFile.fileAnnotations (it already has annotations anyway)
2019-03-21 11:23:51 +03:00
Dmitry Petrov
b42aa39033
IR: drop IrTypeAlias
2019-03-21 11:23:51 +03:00
Dmitry Petrov
e49eae528c
IR: don't use descriptors in rendering (work in progress)
...
There's some descriptor-based code remaining. Need some more work on IR.
2019-03-21 11:23:51 +03:00
Roman Artemev
698594b14d
[IR] Fix classifier equality for Local classes
2019-03-20 23:45:03 +03:00
Ting-Yuan Huang
79fcaae991
Implement constant folding in the IR backend for JVM
...
The newly added pass folds the set of constant functions of the
current backend, plus IrBuiltIns.
2019-03-20 21:02:55 +01:00
Ting-Yuan Huang
f352a4dcd4
IrBuiltIns: factoring out operator names
...
so that they can be used in other contexts.
2019-03-20 21:02:55 +01:00
Dmitry Petrov
21dbe2e7e7
IR: symbolName mangling for IrTypeParameter
...
(original author: Alexander Gorshenev)
2019-03-20 11:57:57 +03:00
Roman Artemev
206e5d30d9
Regenerate protobuf
2019-03-20 11:57:57 +03:00
romanart
5b5f3a7468
[IR] Fix classes TypeParameter [de]serialization
2019-03-20 11:57:57 +03:00
Dmitry Petrov
9f48695dde
psi2ir: no unbound field symbols in delegated property references
...
#KT-30323 Fixed
2019-03-20 11:57:57 +03:00
Dmitry Petrov
15918fc475
IR: deprecations
2019-03-20 11:57:57 +03:00
Dmitry Petrov
bd9c5645cd
IR: fix property reference symbol binding for generic properties
2019-03-20 11:57:57 +03:00
Dmitry Petrov
8b4dab7c25
JS_IR: fix property name generation
2019-03-20 11:57:57 +03:00
Dmitry Petrov
04fad012a0
IR: IrPropertySymbol introduced, some code cleaned up
...
#KT-30304
2019-03-20 11:57:57 +03:00
Ting-Yuan Huang
f6cf434650
when: emit switch for String if possible
...
Effectively, the following when structure:
when (s) {
s1, s2 -> e1,
s3 -> e2,
s4 -> e3,
...
else -> e
}
is implemented as:
when (s.hashCode()) {
h1 -> {
if (s == s1)
e1
else if (s == s2)
e1
else if (s == s3)
e2
else
e
}
h2 -> if (s == s3) e2 else e,
...
else -> e
}
where s1.hashCode() == s2.hashCode() == s3.hashCode() == h1,
s4.hashCode() == h2.
A tableswitch or lookupswitch is used for the hash code lookup.
Change-Id: I087bf623dbb4a41d3cc64399a1b42342a50757a6
2019-03-20 09:13:51 +01:00
Roman Artemev
2ed29d8869
[IR BE] Use pure IrType instead of KotlinType
...
* clean up code
2019-03-19 20:09:07 +03:00
pyos
39adfcced1
Add more comments to PropertyReferenceLowering
2019-03-19 12:00:29 +01:00
pyos
6c68474489
JVM_IR: use correct signatures for local delegated property references
...
Which is `<v#N>` where N is the index of that property in the containing
class.
2019-03-19 12:00:29 +01:00
pyos
330c4648cb
Implement property references in JVM_IR
2019-03-19 12:00:29 +01:00
pyos
82ccf81da8
Fix this remapping in inner class constructors
...
Inner class constructors should use the argument instead of reading
outer `this` from a field because if such an access happens before a
delegating constructor call, e.g. when evaluating an argument, a JVM
bytecode validation error will be thrown. (The only operation on `this`
allowed before a delegating constructor call is SETFIELD, and only if
the field in question is declared in the same class.)
2019-03-19 09:20:41 +01:00
pyos
7e8db4cc4a
Refactor InnerClassesLowering
2019-03-19 09:20:41 +01:00
Svyatoslav Kuzmich
1d6cd90043
[JS IR BE] Clean up compiler driver api
...
This is a preparation step for JS-IR CLI:
- CompiledModule was overused. Split it into KlibModuleRef and TranslationResult
- Deserialize klib dependencies from klibs itself
2019-03-18 14:13:28 +03:00
Svyatoslav Kuzmich
e302f63d9a
[JS IR BE] Remove generateModuleInGlobalScope for code generator
...
This method used to be a workaround for test speedup.
Now we use proper close world module with runtime+stdlib module
as pre-serialized klib.
2019-03-18 14:13:28 +03:00
Alexander Gorshenev
51e862e793
Fix file descriptor unlimited growth.
2019-03-16 13:45:45 +03:00
Alexander Udalov
2539873492
Remove CommonBackendContext.getClass
...
This function is unused in backend.common (and actually throws exception
in Native), therefore it makes sense to move it down to subtypes
2019-03-15 19:27:48 +01:00
Alexander Udalov
e13b8eb039
Remove CommonBackendContext.getInternalFunctions
...
Similarly to getInternalClass, move to subclasses
2019-03-15 19:27:48 +01:00
Alexander Udalov
bd694105e9
Remove CommonBackendContext.getInternalClass
...
Move to subclasses: getJvmInternalClass, getJsInternalClass and
getKonanInternalClass (in Kotlin/Native). The advantage of this is that
this API need not be shared between backends any longer, which makes
sense because implementation details differ across platforms
2019-03-15 19:27:48 +01:00
Alexander Udalov
4ab1916ebf
Cleanup Symbols and JvmIr.JvmSymbols
2019-03-15 19:27:47 +01:00
Alexander Udalov
e9c2bc81aa
Remove lateinitIsInitializedPropertyGetter, introduce static check function
...
This will be helpful in JVM IR tests without stdlib where it's not
necessary to have 'isInitialized' in dependencies
2019-03-15 19:27:47 +01:00
Alexander Udalov
c730de13df
Minor, add missing copyright to compiler modules
2019-03-15 19:27:46 +01:00
Alexander Udalov
9ca7719d1f
Minor, inline obsolete and deprecated createFunctionSymbol
...
Also undeprecate 'createSymbolForScopeOwner' and make it private
2019-03-15 19:07:16 +01:00
Alexander Udalov
0c8e58936c
Remove DeepCopyIrTree and most "Creates unbound symbol" deprecated members
2019-03-15 19:05:19 +01:00
Roman Artemev
a2d65e8a60
[IR] Code clean up
2019-03-15 19:21:38 +03:00
Roman Artemev
95821313e3
[IR BE] Get rid of usages of descriptor-based IrType utils
2019-03-15 19:21:38 +03:00
Roman Artemev
238f1b2b06
[IR] * Implement isSubtypeOfClass and commonSuperclass based on pure Ir
...
* Implement type strict equality check
* Move type checkers into Ir
* Implement strict Fqn-based classifier equality checker
2019-03-15 19:21:38 +03:00
Anton Bannykh
a4c693ec29
[JS IR BE] updated inliner to the most recent version
...
FunctionInlining.kt commit 364b7ae72a :
https://github.com/JetBrains/kotlin-native/blob/364b7ae72a49c2a1716c83c1bab0866dfe46fa25/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionInlining.kt
2019-03-15 14:56:33 +03:00
Anton Bannykh
0249e33f3e
IR: add skipExternalProperties flag to PropertiesLowering
...
Same problem as in deafult argument lowering: JVM and JS semantics differ.
Same solution: skip in common lowerings, process if needed in platform ones.
2019-03-15 14:56:31 +03:00
Anton Bannykh
9a56b0e6d6
[JS IR BE] Reorder phases in order to extract a common prefix
2019-03-15 14:56:31 +03:00
Anton Bannykh
017cd3a0f6
IR: more verbose unsatisfied phase requirement reporting
2019-03-15 14:55:10 +03:00
Anton Bannykh
9dd9ef1cf0
IR: Make Phaser complain about duplicate phase names
...
(instead of silently throwing away all but the last phase
with the same name)
2019-03-15 14:55:10 +03:00
Svyatoslav Kuzmich
41bbd4d2d6
[JS IR BE] Support property accessors with @JsName
2019-03-15 13:53:21 +03:00
Svyatoslav Kuzmich
9230b70294
[JS IR BE] Minor dynamic refactoring
2019-03-15 13:53:20 +03:00
Svyatoslav Kuzmich
4005b5ce10
[JS IR BE] Fix fqNames in moveBodilessDeclarationsToSeparatePlace
2019-03-15 13:53:20 +03:00