/// FIXME: document
///
-GenericValue ExecutionEngine::LoadValueFromMemory(GenericValue *Ptr,
+void ExecutionEngine::LoadValueFromMemory(GenericValue &Result,
+ GenericValue *Ptr,
const Type *Ty) {
- GenericValue Result;
if (getTargetData()->isLittleEndian()) {
switch (Ty->getTypeID()) {
case Type::IntegerTyID: {
((uint64_t)Ptr->Untyped[6] << 48) |
((uint64_t)Ptr->Untyped[7] << 56);
} else
- Result.APIntVal = new APInt(BitWidth, BitWidth/64, (uint64_t*)Ptr);
+ *(Result.APIntVal) = APInt(BitWidth, BitWidth/64, (uint64_t*)Ptr);
break;
}
Load4BytesLittleEndian:
((uint64_t)Ptr->Untyped[1] << 48) |
((uint64_t)Ptr->Untyped[0] << 56);
} else
- Result.APIntVal = new APInt(BitWidth, BitWidth/64, (uint64_t*)Ptr);
+ *(Result.APIntVal) = APInt(BitWidth, BitWidth/64, (uint64_t*)Ptr);
break;
}
Load4BytesBigEndian:
abort();
}
}
- return Result;
}
// InitializeMemory - Recursive function to apply a Constant value into the