IndexedAbstractHeap::IndexedAbstractHeap(LContext context, AbstractHeap* parent, const char* heapName, ptrdiff_t offset, size_t elementSize) : m_heapForAnyIndex(parent, heapName) , m_heapNameLength(strlen(heapName)) , m_offset(offset) , m_elementSize(elementSize) , m_scaleTerm(0) , m_canShift(false) { #if FTL_USES_B3 UNUSED_PARAM(context); #else // See if there is a common shift amount we could use instead of multiplying. Don't // try too hard. This is just a speculative optimization to reduce load on LLVM. for (unsigned i = 0; i < 4; ++i) { if (1U << i == m_elementSize) { if (i) m_scaleTerm = constInt(intPtrType(context), i, ZeroExtend); m_canShift = true; break; } } if (!m_canShift) m_scaleTerm = constInt(intPtrType(context), m_elementSize, ZeroExtend); #endif }
CommonValues::CommonValues(LContext context) : voidType(FTL::voidType(context)) , boolean(int1Type(context)) , int8(int8Type(context)) , int16(int16Type(context)) , int32(int32Type(context)) , int64(int64Type(context)) , intPtr(intPtrType(context)) , floatType(FTL::floatType(context)) , doubleType(FTL::doubleType(context)) , ref8(pointerType(int8)) , ref16(pointerType(int16)) , ref32(pointerType(int32)) , ref64(pointerType(int64)) , refPtr(pointerType(intPtr)) , refFloat(pointerType(floatType)) , refDouble(pointerType(doubleType)) , booleanTrue(constInt(boolean, true, ZeroExtend)) , booleanFalse(constInt(boolean, false, ZeroExtend)) , int8Zero(constInt(int8, 0, SignExtend)) , int32Zero(constInt(int32, 0, SignExtend)) , int32One(constInt(int32, 1, SignExtend)) , int64Zero(constInt(int64, 0, SignExtend)) , intPtrZero(constInt(intPtr, 0, SignExtend)) , intPtrOne(constInt(intPtr, 1, SignExtend)) , intPtrTwo(constInt(intPtr, 2, SignExtend)) , intPtrThree(constInt(intPtr, 3, SignExtend)) , intPtrFour(constInt(intPtr, 4, SignExtend)) , intPtrEight(constInt(intPtr, 8, SignExtend)) , intPtrPtr(constInt(intPtr, sizeof(void*), SignExtend)) , doubleZero(constReal(doubleType, 0)) , rangeKind(mdKindID(context, "range")) , profKind(mdKindID(context, "prof")) , branchWeights(mdString(context, "branch_weights")) , nonNegativeInt32(constInt(int32, 0, SignExtend), constInt(int32, 1ll << 31, SignExtend)) , m_context(context) , m_module(0) { }