Introducing RuntimeHelper - a compiler helper that depends on runtime data [#81470252]

This commit is contained in:
Paweł Bylica 2014-10-27 12:42:32 +01:00
parent 9ca2663297
commit 2b898fc06a
2 changed files with 25 additions and 0 deletions

View file

@ -3,6 +3,8 @@
#include <llvm/IR/Function.h> #include <llvm/IR/Function.h>
#include "Runtime.h"
namespace dev namespace dev
{ {
namespace eth namespace eth
@ -29,6 +31,12 @@ llvm::Function* CompilerHelper::getMainFunction()
return mainFunc; return mainFunc;
} }
RuntimeHelper::RuntimeHelper(RuntimeManager& _runtimeManager):
CompilerHelper(_runtimeManager.getBuilder()),
m_runtimeManager(_runtimeManager)
{}
} }
} }
} }

View file

@ -10,6 +10,7 @@ namespace eth
{ {
namespace jit namespace jit
{ {
class RuntimeManager;
/// Base class for compiler helpers like Memory, GasMeter, etc. /// Base class for compiler helpers like Memory, GasMeter, etc.
class CompilerHelper class CompilerHelper
@ -28,6 +29,22 @@ protected:
/// Reference to parent compiler IR builder /// Reference to parent compiler IR builder
llvm::IRBuilder<>& m_builder; llvm::IRBuilder<>& m_builder;
llvm::IRBuilder<>& getBuilder() { return m_builder; }
friend class RuntimeHelper;
};
/// Compiler helper that depends on runtime data
class RuntimeHelper : public CompilerHelper
{
protected:
RuntimeHelper(RuntimeManager& _runtimeManager);
RuntimeManager& getRuntimeManager() { return m_runtimeManager; }
private:
RuntimeManager& m_runtimeManager;
}; };