Removed double evaluation of enum's args
This commit is contained in:
+8
-7
@@ -1636,6 +1636,14 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map<IrE
|
||||
val arg = expression.getValueArgument(0) as IrConst<String>
|
||||
return context.llvm.staticData.createImmutableBinaryBlob(arg)
|
||||
}
|
||||
|
||||
context.ir.symbols.initInstance.descriptor -> {
|
||||
val callee = expression as IrCall
|
||||
val initializer = callee.getValueArgument(1) as IrCall
|
||||
val thiz = evaluateExpression(callee.getValueArgument(0)!!)
|
||||
evaluateSimpleFunctionCall(initializer.descriptor, listOf(thiz) + evaluateExplicitArgs(initializer), lifetimes[initializer]!!)
|
||||
return codegen.theUnitInstanceRef.llvm
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2063,13 +2071,6 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map<IrE
|
||||
functionGenerationContext.allocInstance(typeInfoForAllocation(enumClassDescriptor), lifetimes[callee]!!)
|
||||
}
|
||||
|
||||
context.ir.symbols.initInstance.descriptor -> {
|
||||
val initializer = callee.getValueArgument(1) as IrCall
|
||||
val thiz = evaluateExpression(callee.getValueArgument(0)!!)
|
||||
evaluateSimpleFunctionCall(initializer.descriptor, listOf(thiz) + evaluateExplicitArgs(initializer), lifetimes[initializer]!!)
|
||||
codegen.theUnitInstanceRef.llvm
|
||||
}
|
||||
|
||||
else -> TODO(callee.descriptor.original.toString())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user