You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
790 B
40 lines
790 B
#pragma once
|
|
|
|
#include "RuntimeData.h"
|
|
|
|
namespace dev
|
|
{
|
|
namespace eth
|
|
{
|
|
namespace jit
|
|
{
|
|
|
|
using StackImpl = std::vector<i256>;
|
|
using MemoryImpl = bytes;
|
|
|
|
class Runtime
|
|
{
|
|
public:
|
|
Runtime(RuntimeData* _data, Env* _env);
|
|
|
|
Runtime(const Runtime&) = delete;
|
|
Runtime& operator=(const Runtime&) = delete;
|
|
|
|
StackImpl& getStack() { return m_stack; }
|
|
MemoryImpl& getMemory() { return m_memory; }
|
|
|
|
bytes_ref getReturnData() const;
|
|
|
|
private:
|
|
RuntimeData& m_data; ///< Pointer to data. Expected by compiled contract.
|
|
Env& m_env; ///< Pointer to environment proxy. Expected by compiled contract.
|
|
void* m_currJmpBuf = nullptr; ///< Pointer to jump buffer. Expected by compiled contract.
|
|
byte* m_memoryData = nullptr;
|
|
i256 m_memorySize;
|
|
StackImpl m_stack;
|
|
MemoryImpl m_memory;
|
|
};
|
|
|
|
}
|
|
}
|
|
}
|
|
|