Paweł Bylica
10 years ago
4 changed files with 82 additions and 0 deletions
@ -0,0 +1,52 @@ |
|||
|
|||
#include "Ext.h" |
|||
|
|||
#include <llvm/IR/Function.h> |
|||
#include <llvm/IR/TypeBuilder.h> |
|||
|
|||
#ifdef _MSC_VER |
|||
#define EXPORT __declspec(dllexport) |
|||
#else |
|||
#define EXPORT |
|||
#endif |
|||
|
|||
using namespace llvm; |
|||
using llvm::types::i; |
|||
using Linkage = llvm::GlobalValue::LinkageTypes; |
|||
|
|||
namespace evmcc |
|||
{ |
|||
|
|||
std::unique_ptr<dev::eth::ExtVMFace> g_ext; |
|||
|
|||
void Ext::init(std::unique_ptr<dev::eth::ExtVMFace> _ext) |
|||
{ |
|||
g_ext = std::move(_ext); |
|||
} |
|||
|
|||
Ext::Ext(llvm::IRBuilder<>& _builder) |
|||
: m_builder(_builder) |
|||
{ |
|||
auto module = m_builder.GetInsertBlock()->getParent()->getParent(); |
|||
auto&& ctx = _builder.getContext(); |
|||
|
|||
Function::Create(TypeBuilder<void(i<256>*, i<256>*), true>::get(ctx), Linkage::ExternalLinkage, "ext_store", module); |
|||
Function::Create(TypeBuilder<void(i<256>*, i<256>*), true>::get(ctx), Linkage::ExternalLinkage, "ext_setStore", module); |
|||
} |
|||
|
|||
extern "C" |
|||
{ |
|||
|
|||
EXPORT void ext_store(void* _index, void* _value) |
|||
{ |
|||
|
|||
} |
|||
|
|||
EXPORT void ext_setStore(void* _index, void* _value) |
|||
{ |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
} |
@ -0,0 +1,22 @@ |
|||
|
|||
#include <llvm/IR/IRBuilder.h> |
|||
|
|||
#include <libevm/ExtVMFace.h> |
|||
|
|||
namespace evmcc |
|||
{ |
|||
|
|||
|
|||
|
|||
class Ext |
|||
{ |
|||
public: |
|||
Ext(llvm::IRBuilder<>& _builder); |
|||
static void init(std::unique_ptr<dev::eth::ExtVMFace> _ext); |
|||
|
|||
private: |
|||
llvm::IRBuilder<>& m_builder; |
|||
}; |
|||
|
|||
|
|||
} |
Loading…
Reference in new issue