mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-21 20:26:41 +00:00
Convenient Memory::require() overload
This commit is contained in:
parent
ab556c638a
commit
0931289287
2 changed files with 12 additions and 3 deletions
|
|
@ -173,10 +173,15 @@ void Memory::require(llvm::Value* _size)
|
||||||
m_builder.CreateCall(m_require, _size);
|
m_builder.CreateCall(m_require, _size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Memory::require(llvm::Value* _offset, llvm::Value* _size)
|
||||||
|
{
|
||||||
|
auto sizeRequired = m_builder.CreateAdd(_offset, _size, "sizeRequired");
|
||||||
|
require(sizeRequired);
|
||||||
|
}
|
||||||
|
|
||||||
void Memory::registerReturnData(llvm::Value* _index, llvm::Value* _size)
|
void Memory::registerReturnData(llvm::Value* _index, llvm::Value* _size)
|
||||||
{
|
{
|
||||||
auto sizeRequired = m_builder.CreateAdd(_index, _size, "sizeRequired");
|
require(_index, _size); // Make sure that memory is allocated and count gas
|
||||||
require(sizeRequired); // Make sure that memory is allocated and count gas
|
|
||||||
|
|
||||||
m_builder.CreateStore(_index, m_returnDataOffset);
|
m_builder.CreateStore(_index, m_returnDataOffset);
|
||||||
m_builder.CreateStore(_size, m_returnDataSize);
|
m_builder.CreateStore(_size, m_returnDataSize);
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,12 @@ public:
|
||||||
void storeByte(llvm::Value* _addr, llvm::Value* _byte);
|
void storeByte(llvm::Value* _addr, llvm::Value* _byte);
|
||||||
llvm::Value* getSize();
|
llvm::Value* getSize();
|
||||||
|
|
||||||
|
/// Requires this amount of memory. And counts gas fee for that memory.
|
||||||
void require(llvm::Value* _size);
|
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);
|
void registerReturnData(llvm::Value* _index, llvm::Value* _size);
|
||||||
static dev::bytesConstRef getReturnData();
|
static dev::bytesConstRef getReturnData();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue