Create map FunctionDescriptor to FunctionDeclaration
This commit is contained in:
+14
@@ -1,7 +1,9 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan.ir
|
package org.jetbrains.kotlin.backend.konan.ir
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
@@ -16,6 +18,11 @@ class ModuleIndex(val module: IrModuleFragment) {
|
|||||||
*/
|
*/
|
||||||
val classes: Map<ClassId, IrClass>
|
val classes: Map<ClassId, IrClass>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains all functions declared in [module]
|
||||||
|
*/
|
||||||
|
val functions = mutableMapOf<FunctionDescriptor, IrFunction>()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val map = mutableMapOf<ClassId, IrClass>()
|
val map = mutableMapOf<ClassId, IrClass>()
|
||||||
|
|
||||||
@@ -33,6 +40,13 @@ class ModuleIndex(val module: IrModuleFragment) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitFunction(declaration: IrFunction) {
|
||||||
|
super.visitFunction(declaration)
|
||||||
|
|
||||||
|
val functionDescriptor = declaration.descriptor
|
||||||
|
functions[functionDescriptor] = declaration
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
classes = map
|
classes = map
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
|||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
|
|
||||||
class FunctionInlining(val context: Context) {
|
internal class FunctionInlining(val context: Context) {
|
||||||
fun inline(irFile: IrFile) {
|
fun inline(irFile: IrFile) {
|
||||||
irFile.acceptVoid(object : IrElementVisitorVoid {
|
irFile.acceptVoid(object : IrElementVisitorVoid {
|
||||||
override fun visitElement(element: IrElement) {
|
override fun visitElement(element: IrElement) {
|
||||||
|
|||||||
Reference in New Issue
Block a user