#include "Runtime.h" #include #include #include namespace dev { namespace eth { namespace jit { Runtime::Runtime(RuntimeData* _data, Env* _env) : m_data(*_data), m_env(*_env), m_currJmpBuf(m_jmpBuf) {} bytes Runtime::getReturnData() const // FIXME: Reconsider returning by copy { // TODO: Handle large indexes auto offset = static_cast(llvm2eth(m_data.elems[RuntimeData::ReturnDataOffset])); auto size = static_cast(llvm2eth(m_data.elems[RuntimeData::ReturnDataSize])); assert(offset + size <= m_memory.size() || size == 0); if (offset + size > m_memory.size()) return {}; auto dataBeg = m_memory.begin() + offset; return {dataBeg, dataBeg + size}; } } } }