Switch to unrelated ObjHeader and ArrayHeader. (#160)

This commit is contained in:
Nikolay Igotti
2016-12-26 11:27:27 +02:00
committed by GitHub
parent 221540a579
commit dbc1cb1919
7 changed files with 112 additions and 72 deletions
@@ -857,7 +857,7 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid
if (it is IrSpreadElement) {
val exp = evaluateExpression(it.expression)!!
val array = codegen.bitcast(codegen.kArrayHeaderPtr, exp)
val sizePtr = LLVMBuildStructGEP(codegen.builder, array, 1, "")
val sizePtr = LLVMBuildStructGEP(codegen.builder, array, 2, "")
return@map Element(exp, codegen.load(sizePtr!!), true)
}
val exp = evaluateExpression(it)!!
@@ -18,8 +18,7 @@ private fun StaticData.objHeader(containerOffsetNegative: Int, typeInfo: ConstPo
private fun StaticData.arrayHeader(containerOffsetNegative: Int, typeInfo: ConstPointer, length: Int): Struct {
assert (length >= 0)
val objHeader = objHeader(containerOffsetNegative, typeInfo)
return Struct(runtime.arrayHeaderType, objHeader, Int32(length))
return Struct(runtime.arrayHeaderType, typeInfo, Int32(containerOffsetNegative), Int32(length))
}
private fun requiredPadding(size: Int, align: Int): Int {