Convenient Memory::require() overload

This commit is contained in:
Paweł Bylica 2014-10-14 15:19:27 +02:00
parent ab556c638a
commit 0931289287
2 changed files with 12 additions and 3 deletions

View file

@ -173,10 +173,15 @@ void Memory::require(llvm::Value* _size)
m_builder.CreateCall(m_require, _size);
}
void Memory::registerReturnData(llvm::Value* _index, llvm::Value* _size)
void Memory::require(llvm::Value* _offset, llvm::Value* _size)
{
auto sizeRequired = m_builder.CreateAdd(_index, _size, "sizeRequired");
require(sizeRequired); // Make sure that memory is allocated and count gas
auto sizeRequired = m_builder.CreateAdd(_offset, _size, "sizeRequired");
require(sizeRequired);
}
void Memory::registerReturnData(llvm::Value* _index, llvm::Value* _size)
{
require(_index, _size); // Make sure that memory is allocated and count gas
m_builder.CreateStore(_index, m_returnDataOffset);
m_builder.CreateStore(_size, m_returnDataSize);

View file

@ -20,8 +20,12 @@ public:
void storeByte(llvm::Value* _addr, llvm::Value* _byte);
llvm::Value* getSize();
/// Requires this amount of memory. And counts gas fee for that memory.
void require(llvm::Value* _size);
/// Requires the amount of memory to for data defined by offset and size. And counts gas fee for that memory.
void require(llvm::Value* _offset, llvm::Value* _size);
void registerReturnData(llvm::Value* _index, llvm::Value* _size);
static dev::bytesConstRef getReturnData();