Browse Source

#include cleanups

cl-refactor
Paweł Bylica 10 years ago
parent
commit
3365f3f438
  1. 3
      evmjit/libevmjit/Arith256.cpp
  2. 1
      evmjit/libevmjit/Arith256.h
  3. 14
      evmjit/libevmjit/BasicBlock.cpp
  4. 3
      evmjit/libevmjit/BasicBlock.h
  5. 11
      evmjit/libevmjit/Cache.cpp
  6. 4
      evmjit/libevmjit/Cache.h
  7. 1
      evmjit/libevmjit/Common.h
  8. 29
      evmjit/libevmjit/Compiler.cpp
  9. 4
      evmjit/libevmjit/Compiler.h
  10. 98
      evmjit/libevmjit/CompilerHelper.cpp
  11. 153
      evmjit/libevmjit/CompilerHelper.h
  12. 76
      evmjit/libevmjit/Endianness.cpp
  13. 49
      evmjit/libevmjit/Endianness.h
  14. 4
      evmjit/libevmjit/ExecStats.h
  15. 15
      evmjit/libevmjit/ExecutionEngine.cpp
  16. 3
      evmjit/libevmjit/ExecutionEngine.h
  17. 10
      evmjit/libevmjit/Ext.cpp
  18. 4
      evmjit/libevmjit/Ext.h
  19. 12
      evmjit/libevmjit/GasMeter.cpp
  20. 2
      evmjit/libevmjit/GasMeter.h
  21. 4
      evmjit/libevmjit/Instruction.cpp
  22. 1
      evmjit/libevmjit/Instruction.h
  23. 15
      evmjit/libevmjit/Memory.cpp
  24. 1
      evmjit/libevmjit/Memory.h
  25. 6
      evmjit/libevmjit/Runtime.cpp
  26. 4
      evmjit/libevmjit/Runtime.h
  27. 4
      evmjit/libevmjit/RuntimeData.h
  28. 10
      evmjit/libevmjit/RuntimeManager.cpp
  29. 1
      evmjit/libevmjit/RuntimeManager.h
  30. 2
      evmjit/libevmjit/Stack.cpp
  31. 83
      evmjit/libevmjit/Stack.h
  32. 4
      evmjit/libevmjit/Type.cpp
  33. 7
      evmjit/libevmjit/Type.h
  34. 1
      evmjit/libevmjit/Utils.cpp
  35. 1
      evmjit/libevmjit/Utils.h
  36. 1
      evmjit/libevmjit/preprocessor/llvm_includes_start.h

3
evmjit/libevmjit/Arith256.cpp

@ -3,8 +3,9 @@
#include "Type.h" #include "Type.h"
#include "Endianness.h" #include "Endianness.h"
#include <llvm/IR/Function.h> #include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/IntrinsicInst.h> #include <llvm/IR/IntrinsicInst.h>
#include "preprocessor/llvm_includes_end.h"
#include <iostream> #include <iostream>

1
evmjit/libevmjit/Arith256.h

@ -1,5 +1,4 @@
#pragma once #pragma once
#include "CompilerHelper.h" #include "CompilerHelper.h"
namespace dev namespace dev

14
evmjit/libevmjit/BasicBlock.cpp

@ -1,15 +1,15 @@
#include "BasicBlock.h" #include "BasicBlock.h"
#include "Type.h"
#include <iostream> #include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/CFG.h> #include <llvm/IR/CFG.h>
#include <llvm/IR/Function.h> #include <llvm/IR/Function.h>
#include <llvm/IR/Instructions.h> #include <llvm/IR/Instructions.h>
#include <llvm/IR/IRBuilder.h> #include <llvm/IR/IRBuilder.h>
#include <llvm/Support/raw_os_ostream.h> #include <llvm/Support/raw_os_ostream.h>
#include "preprocessor/llvm_includes_end.h"
#include "Type.h" #include <iostream>
namespace dev namespace dev
{ {
@ -141,7 +141,7 @@ void BasicBlock::synchronizeLocalStack(Stack& _evmStack)
auto endIter = m_currentStack.end(); auto endIter = m_currentStack.end();
// Update (emit set()) changed values // Update (emit set()) changed values
for (int idx = m_currentStack.size() - 1 - m_tosOffset; for (int idx = (int)m_currentStack.size() - 1 - m_tosOffset;
currIter < endIter && idx >= 0; currIter < endIter && idx >= 0;
++currIter, --idx) ++currIter, --idx)
{ {
@ -308,7 +308,7 @@ void BasicBlock::linkLocalStacks(std::vector<BasicBlock*> basicBlocks, llvm::IRB
auto& initialStack = bblock.m_initialStack; auto& initialStack = bblock.m_initialStack;
initialStack.erase(initialStack.begin(), initialStack.begin() + info.inputItems); initialStack.erase(initialStack.begin(), initialStack.begin() + info.inputItems);
// Initial stack shrinks, so the size difference grows: // Initial stack shrinks, so the size difference grows:
bblock.m_tosOffset += info.inputItems; bblock.m_tosOffset += (int)info.inputItems;
} }
// We must account for the items that were pushed directly to successor // We must account for the items that were pushed directly to successor
@ -321,7 +321,7 @@ void BasicBlock::linkLocalStacks(std::vector<BasicBlock*> basicBlocks, llvm::IRB
auto& exitStack = bblock.m_currentStack; auto& exitStack = bblock.m_currentStack;
exitStack.erase(exitStack.end() - info.outputItems, exitStack.end()); exitStack.erase(exitStack.end() - info.outputItems, exitStack.end());
bblock.m_tosOffset -= info.outputItems; bblock.m_tosOffset -= (int)info.outputItems; // FIXME: Fix types
} }
} }

3
evmjit/libevmjit/BasicBlock.h

@ -1,8 +1,7 @@
#pragma once #pragma once
#include <vector>
#include <llvm/IR/BasicBlock.h>
#include "Common.h" #include "Common.h"
#include "Stack.h" #include "Stack.h"
#include <vector>
namespace dev namespace dev
{ {

11
evmjit/libevmjit/Cache.cpp

@ -1,14 +1,17 @@
#include "Cache.h" #include "Cache.h"
#include <unordered_map> #include "ExecutionEngine.h"
#include <cassert>
#include <iostream> #include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/Module.h> #include <llvm/IR/Module.h>
#include <llvm/IR/LLVMContext.h> #include <llvm/IR/LLVMContext.h>
#include <llvm/IR/Instructions.h> #include <llvm/IR/Instructions.h>
#include <llvm/Support/Path.h> #include <llvm/Support/Path.h>
#include <llvm/Support/FileSystem.h> #include <llvm/Support/FileSystem.h>
#include <llvm/Support/raw_os_ostream.h> #include <llvm/Support/raw_os_ostream.h>
#include "ExecutionEngine.h" #include "preprocessor/llvm_includes_end.h"
#include <cassert>
#include <iostream>
namespace dev namespace dev
{ {

4
evmjit/libevmjit/Cache.h

@ -1,8 +1,6 @@
#pragma once #pragma once
#include <memory>
#include <llvm/ExecutionEngine/ObjectCache.h> #include <llvm/ExecutionEngine/ObjectCache.h>
#include <memory>
namespace dev namespace dev
{ {

1
evmjit/libevmjit/Common.h

@ -1,5 +1,4 @@
#pragma once #pragma once
#include <vector> #include <vector>
#include <tuple> #include <tuple>
#include <cstdint> #include <cstdint>

29
evmjit/libevmjit/Compiler.cpp

@ -1,19 +1,4 @@
#include "Compiler.h" #include "Compiler.h"
#include <functional>
#include <fstream>
#include <chrono>
#include <sstream>
#include <llvm/ADT/PostOrderIterator.h>
#include <llvm/IR/CFG.h>
#include <llvm/IR/Module.h>
#include <llvm/IR/IntrinsicInst.h>
#include <llvm/PassManager.h>
#include <llvm/Transforms/Scalar.h>
#include "Instruction.h" #include "Instruction.h"
#include "Type.h" #include "Type.h"
#include "Memory.h" #include "Memory.h"
@ -25,6 +10,20 @@
#include "Arith256.h" #include "Arith256.h"
#include "RuntimeManager.h" #include "RuntimeManager.h"
#include "preprocessor/llvm_includes_start.h"
#include <llvm/ADT/PostOrderIterator.h>
#include <llvm/IR/CFG.h>
#include <llvm/IR/Module.h>
#include <llvm/IR/IntrinsicInst.h>
#include <llvm/PassManager.h>
#include <llvm/Transforms/Scalar.h>
#include "preprocessor/llvm_includes_end.h"
#include <functional>
#include <fstream>
#include <chrono>
#include <sstream>
namespace dev namespace dev
{ {
namespace eth namespace eth

4
evmjit/libevmjit/Compiler.h

@ -1,8 +1,4 @@
#pragma once #pragma once
#include <llvm/IR/IRBuilder.h>
#include "Common.h" #include "Common.h"
#include "BasicBlock.h" #include "BasicBlock.h"

98
evmjit/libevmjit/CompilerHelper.cpp

@ -1,51 +1,47 @@
#include "CompilerHelper.h"
#include "CompilerHelper.h" #include "RuntimeManager.h"
#include <llvm/IR/Module.h>
#include <llvm/IR/Function.h>
#include <llvm/IR/Module.h> namespace dev
{
#include "RuntimeManager.h" namespace eth
{
namespace dev namespace jit
{ {
namespace eth
{ CompilerHelper::CompilerHelper(llvm::IRBuilder<>& _builder) :
namespace jit m_builder(_builder)
{ {}
CompilerHelper::CompilerHelper(llvm::IRBuilder<>& _builder) : llvm::Module* CompilerHelper::getModule()
m_builder(_builder) {
{} assert(m_builder.GetInsertBlock());
assert(m_builder.GetInsertBlock()->getParent()); // BB must be in a function
llvm::Module* CompilerHelper::getModule() return m_builder.GetInsertBlock()->getParent()->getParent();
{ }
assert(m_builder.GetInsertBlock());
assert(m_builder.GetInsertBlock()->getParent()); // BB must be in a function llvm::Function* CompilerHelper::getMainFunction()
return m_builder.GetInsertBlock()->getParent()->getParent(); {
} // TODO: Rename or change semantics of getMainFunction() function
assert(m_builder.GetInsertBlock());
llvm::Function* CompilerHelper::getMainFunction() auto mainFunc = m_builder.GetInsertBlock()->getParent();
{ assert(mainFunc);
// TODO: Rename or change semantics of getMainFunction() function if (mainFunc == &mainFunc->getParent()->getFunctionList().front()) // Main function is the first one in module
assert(m_builder.GetInsertBlock()); return mainFunc;
auto mainFunc = m_builder.GetInsertBlock()->getParent(); return nullptr;
assert(mainFunc); }
if (mainFunc == &mainFunc->getParent()->getFunctionList().front()) // Main function is the first one in module
return mainFunc; llvm::CallInst* CompilerHelper::createCall(llvm::Function* _func, std::initializer_list<llvm::Value*> const& _args)
return nullptr; {
} return getBuilder().CreateCall(_func, {_args.begin(), _args.size()});
}
llvm::CallInst* CompilerHelper::createCall(llvm::Function* _func, std::initializer_list<llvm::Value*> const& _args)
{
return getBuilder().CreateCall(_func, {_args.begin(), _args.size()}); RuntimeHelper::RuntimeHelper(RuntimeManager& _runtimeManager):
} CompilerHelper(_runtimeManager.getBuilder()),
m_runtimeManager(_runtimeManager)
{}
RuntimeHelper::RuntimeHelper(RuntimeManager& _runtimeManager):
CompilerHelper(_runtimeManager.getBuilder()), }
m_runtimeManager(_runtimeManager) }
{} }
}
}
}

153
evmjit/libevmjit/CompilerHelper.h

@ -1,78 +1,79 @@
#pragma once
#pragma once #include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/IRBuilder.h> #include <llvm/IR/IRBuilder.h>
#include "preprocessor/llvm_includes_end.h"
namespace dev
{ namespace dev
namespace eth {
{ namespace eth
namespace jit {
{ namespace jit
class RuntimeManager; {
class RuntimeManager;
/// Base class for compiler helpers like Memory, GasMeter, etc.
class CompilerHelper /// Base class for compiler helpers like Memory, GasMeter, etc.
{ class CompilerHelper
protected: {
CompilerHelper(llvm::IRBuilder<>& _builder); protected:
CompilerHelper(llvm::IRBuilder<>& _builder);
CompilerHelper(const CompilerHelper&) = delete;
void operator=(CompilerHelper) = delete; CompilerHelper(const CompilerHelper&) = delete;
CompilerHelper& operator=(CompilerHelper) = delete;
/// Reference to the IR module being compiled
llvm::Module* getModule(); /// Reference to the IR module being compiled
llvm::Module* getModule();
/// Reference to the main module function
llvm::Function* getMainFunction(); /// Reference to the main module function
llvm::Function* getMainFunction();
/// Reference to parent compiler IR builder
llvm::IRBuilder<>& m_builder; /// Reference to parent compiler IR builder
llvm::IRBuilder<>& getBuilder() { return m_builder; } llvm::IRBuilder<>& m_builder;
llvm::IRBuilder<>& getBuilder() { return m_builder; }
llvm::CallInst* createCall(llvm::Function* _func, std::initializer_list<llvm::Value*> const& _args);
llvm::CallInst* createCall(llvm::Function* _func, std::initializer_list<llvm::Value*> const& _args);
friend class RuntimeHelper;
}; friend class RuntimeHelper;
};
/// Compiler helper that depends on runtime data
class RuntimeHelper : public CompilerHelper /// Compiler helper that depends on runtime data
{ class RuntimeHelper : public CompilerHelper
protected: {
RuntimeHelper(RuntimeManager& _runtimeManager); protected:
RuntimeHelper(RuntimeManager& _runtimeManager);
RuntimeManager& getRuntimeManager() { return m_runtimeManager; }
RuntimeManager& getRuntimeManager() { return m_runtimeManager; }
private:
RuntimeManager& m_runtimeManager; private:
}; RuntimeManager& m_runtimeManager;
};
/// Saves the insert point of the IR builder and restores it when destructed
struct InsertPointGuard /// Saves the insert point of the IR builder and restores it when destructed
{ struct InsertPointGuard
InsertPointGuard(llvm::IRBuilder<>& _builder) : {
m_builder(_builder), InsertPointGuard(llvm::IRBuilder<>& _builder) :
m_insertBB(m_builder.GetInsertBlock()), m_builder(_builder),
m_insertPt(m_builder.GetInsertPoint()) m_insertBB(m_builder.GetInsertBlock()),
{} m_insertPt(m_builder.GetInsertPoint())
{}
InsertPointGuard(const InsertPointGuard&) = delete;
void operator=(InsertPointGuard) = delete; InsertPointGuard(const InsertPointGuard&) = delete;
void operator=(InsertPointGuard) = delete;
~InsertPointGuard()
{ ~InsertPointGuard()
m_builder.SetInsertPoint(m_insertBB, m_insertPt); {
} m_builder.SetInsertPoint(m_insertBB, m_insertPt);
}
private:
llvm::IRBuilder<>& m_builder; private:
llvm::BasicBlock* m_insertBB; llvm::IRBuilder<>& m_builder;
llvm::BasicBlock::iterator m_insertPt; llvm::BasicBlock* m_insertBB;
}; llvm::BasicBlock::iterator m_insertPt;
};
}
} }
} }
}

76
evmjit/libevmjit/Endianness.cpp

@ -1,38 +1,38 @@
#include "Endianness.h"
#include "Endianness.h" #include "Type.h"
#include <llvm/IR/IntrinsicInst.h> #include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/IntrinsicInst.h>
#include "Type.h" #include "preprocessor/llvm_includes_end.h"
namespace dev namespace dev
{ {
namespace eth namespace eth
{ {
namespace jit namespace jit
{ {
llvm::Value* Endianness::bswapIfLE(llvm::IRBuilder<>& _builder, llvm::Value* _word) llvm::Value* Endianness::bswapIfLE(llvm::IRBuilder<>& _builder, llvm::Value* _word)
{ {
union tester union tester
{ {
unsigned int x; unsigned int x;
unsigned char isLE; unsigned char isLE;
}; };
if (tester{1}.isLE) if (tester{1}.isLE)
{ {
// FIXME: Disabled because of problems with BYTE // FIXME: Disabled because of problems with BYTE
//if (auto constant = llvm::dyn_cast<llvm::ConstantInt>(_word)) //if (auto constant = llvm::dyn_cast<llvm::ConstantInt>(_word))
// return _builder.getInt(constant->getValue().byteSwap()); // return _builder.getInt(constant->getValue().byteSwap());
// OPT: Cache func declaration? // OPT: Cache func declaration?
auto bswapFunc = llvm::Intrinsic::getDeclaration(_builder.GetInsertBlock()->getParent()->getParent(), llvm::Intrinsic::bswap, Type::Word); auto bswapFunc = llvm::Intrinsic::getDeclaration(_builder.GetInsertBlock()->getParent()->getParent(), llvm::Intrinsic::bswap, Type::Word);
return _builder.CreateCall(bswapFunc, _word); return _builder.CreateCall(bswapFunc, _word);
} }
return _word; return _word;
} }
} }
} }
} }

49
evmjit/libevmjit/Endianness.h

@ -1,24 +1,25 @@
#pragma once
#pragma once
#include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/IRBuilder.h> #include <llvm/IR/IRBuilder.h>
#include "preprocessor/llvm_includes_end.h"
namespace dev
{ namespace dev
namespace eth {
{ namespace eth
namespace jit {
{ namespace jit
{
struct Endianness
{ struct Endianness
static llvm::Value* toBE(llvm::IRBuilder<>& _builder, llvm::Value* _word) { return bswapIfLE(_builder, _word); } {
static llvm::Value* toNative(llvm::IRBuilder<>& _builder, llvm::Value* _word) { return bswapIfLE(_builder, _word); } static llvm::Value* toBE(llvm::IRBuilder<>& _builder, llvm::Value* _word) { return bswapIfLE(_builder, _word); }
static llvm::Value* toNative(llvm::IRBuilder<>& _builder, llvm::Value* _word) { return bswapIfLE(_builder, _word); }
private:
static llvm::Value* bswapIfLE(llvm::IRBuilder<>& _builder, llvm::Value* _word); private:
}; static llvm::Value* bswapIfLE(llvm::IRBuilder<>& _builder, llvm::Value* _word);
};
}
} }
} }
}

4
evmjit/libevmjit/ExecStats.h

@ -1,8 +1,6 @@
#pragma once #pragma once
#include <string>
#include <chrono>
#include "ExecutionEngine.h" #include "ExecutionEngine.h"
#include <chrono>
namespace dev namespace dev
{ {

15
evmjit/libevmjit/ExecutionEngine.cpp

@ -1,7 +1,10 @@
#include "ExecutionEngine.h" #include "ExecutionEngine.h"
#include "Runtime.h"
#include "Compiler.h"
#include "Cache.h"
#include "ExecStats.h"
#include "BuildInfo.gen.h"
#include <chrono>
#include <cstdlib> // env options
#include "preprocessor/llvm_includes_start.h" #include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/Module.h> #include <llvm/IR/Module.h>
#include <llvm/ADT/Triple.h> #include <llvm/ADT/Triple.h>
@ -12,12 +15,8 @@
#include <llvm/Support/Host.h> #include <llvm/Support/Host.h>
#include "preprocessor/llvm_includes_end.h" #include "preprocessor/llvm_includes_end.h"
#include "Runtime.h" #include <array>
#include "Compiler.h" #include <cstdlib> // env options
#include "Cache.h"
#include "ExecStats.h"
#include "BuildInfo.gen.h"
#include <iostream> #include <iostream>
namespace dev namespace dev

3
evmjit/libevmjit/ExecutionEngine.h

@ -1,7 +1,6 @@
#pragma once #pragma once
#include <memory>
#include "RuntimeData.h" #include "RuntimeData.h"
#include <memory>
namespace dev namespace dev
{ {

10
evmjit/libevmjit/Ext.cpp

@ -1,15 +1,13 @@
#include "Ext.h" #include "Ext.h"
#include <llvm/IR/Function.h>
#include <llvm/IR/TypeBuilder.h>
#include <llvm/IR/IntrinsicInst.h>
#include "RuntimeManager.h" #include "RuntimeManager.h"
#include "Memory.h" #include "Memory.h"
#include "Type.h" #include "Type.h"
#include "Endianness.h" #include "Endianness.h"
#include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/IntrinsicInst.h>
#include "preprocessor/llvm_includes_end.h"
namespace dev namespace dev
{ {
namespace eth namespace eth

4
evmjit/libevmjit/Ext.h

@ -1,8 +1,6 @@
#pragma once #pragma once
#include <array>
#include "CompilerHelper.h" #include "CompilerHelper.h"
#include <array>
namespace dev namespace dev
{ {

12
evmjit/libevmjit/GasMeter.cpp

@ -1,14 +1,12 @@
#include "GasMeter.h" #include "GasMeter.h"
#include <llvm/IR/GlobalVariable.h>
#include <llvm/IR/Function.h>
#include <llvm/IR/IntrinsicInst.h>
#include "Type.h"
#include "Ext.h" #include "Ext.h"
#include "RuntimeManager.h" #include "RuntimeManager.h"
#include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/IntrinsicInst.h>
#include "preprocessor/llvm_includes_end.h"
namespace dev namespace dev
{ {
namespace eth namespace eth

2
evmjit/libevmjit/GasMeter.h

@ -1,6 +1,4 @@
#pragma once #pragma once
#include "CompilerHelper.h" #include "CompilerHelper.h"
#include "Instruction.h" #include "Instruction.h"

4
evmjit/libevmjit/Instruction.cpp

@ -1,6 +1,8 @@
#include "Instruction.h" #include "Instruction.h"
#include "preprocessor/llvm_includes_start.h"
#include <llvm/ADT/APInt.h> #include <llvm/ADT/APInt.h>
#include "preprocessor/llvm_includes_end.h"
namespace dev namespace dev
{ {

1
evmjit/libevmjit/Instruction.h

@ -1,5 +1,4 @@
#pragma once #pragma once
#include "Common.h" #include "Common.h"
namespace llvm namespace llvm

15
evmjit/libevmjit/Memory.cpp

@ -1,21 +1,14 @@
#include "Memory.h" #include "Memory.h"
#include <vector>
#include <iostream>
#include <iomanip>
#include <cstdint>
#include <cassert>
#include <llvm/IR/GlobalVariable.h>
#include <llvm/IR/Function.h>
#include <llvm/IR/IntrinsicInst.h>
#include "Type.h" #include "Type.h"
#include "Runtime.h" #include "Runtime.h"
#include "GasMeter.h" #include "GasMeter.h"
#include "Endianness.h" #include "Endianness.h"
#include "RuntimeManager.h" #include "RuntimeManager.h"
#include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/IntrinsicInst.h>
#include "preprocessor/llvm_includes_end.h"
namespace dev namespace dev
{ {
namespace eth namespace eth

1
evmjit/libevmjit/Memory.h

@ -1,5 +1,4 @@
#pragma once #pragma once
#include "CompilerHelper.h" #include "CompilerHelper.h"
namespace dev namespace dev

6
evmjit/libevmjit/Runtime.cpp

@ -1,9 +1,5 @@
#include "Runtime.h" #include "Runtime.h"
#include <cassert>
#include <llvm/IR/GlobalVariable.h>
#include <llvm/IR/Function.h>
#include <llvm/IR/IntrinsicInst.h>
namespace dev namespace dev
{ {

4
evmjit/libevmjit/Runtime.h

@ -1,8 +1,6 @@
#pragma once #pragma once
#include <csetjmp>
#include "RuntimeData.h" #include "RuntimeData.h"
#include <csetjmp>
namespace dev namespace dev
{ {

4
evmjit/libevmjit/RuntimeData.h

@ -1,7 +1,5 @@
#pragma once #pragma once
#include "Common.h"
#include "Utils.h"
namespace dev namespace dev
{ {

10
evmjit/libevmjit/RuntimeManager.cpp

@ -1,12 +1,8 @@
#include "RuntimeManager.h" #include "RuntimeManager.h"
#include <llvm/IR/GlobalVariable.h> #include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/Function.h> #include <llvm/IR/IntrinsicInst.h>
#include <llvm/IR/IntrinsicInst.h> #include "preprocessor/llvm_includes_end.h"
#include "RuntimeData.h"
#include "Instruction.h"
namespace dev namespace dev
{ {

1
evmjit/libevmjit/RuntimeManager.h

@ -1,5 +1,4 @@
#pragma once #pragma once
#include "CompilerHelper.h" #include "CompilerHelper.h"
#include "Type.h" #include "Type.h"
#include "RuntimeData.h" #include "RuntimeData.h"

2
evmjit/libevmjit/Stack.cpp

@ -1,10 +1,8 @@
#include "Stack.h" #include "Stack.h"
#include "RuntimeManager.h" #include "RuntimeManager.h"
#include "Runtime.h" #include "Runtime.h"
#include "Type.h"
#include <llvm/IR/Function.h> #include <llvm/IR/Function.h>
#include <llvm/IR/TypeBuilder.h>
namespace dev namespace dev
{ {

83
evmjit/libevmjit/Stack.h

@ -1,43 +1,40 @@
#pragma once #pragma once
#include "CompilerHelper.h"
#include "CompilerHelper.h"
namespace dev
#include <llvm/IR/Module.h> {
namespace eth
namespace dev {
{ namespace jit
namespace eth {
{ class RuntimeManager;
namespace jit
{ class Stack : public CompilerHelper
class RuntimeManager; {
public:
class Stack : public CompilerHelper Stack(llvm::IRBuilder<>& builder, RuntimeManager& runtimeManager);
{
public: llvm::Value* get(size_t _index);
Stack(llvm::IRBuilder<>& builder, RuntimeManager& runtimeManager); void set(size_t _index, llvm::Value* _value);
void pop(size_t _count);
llvm::Value* get(size_t _index); void push(llvm::Value* _value);
void set(size_t _index, llvm::Value* _value);
void pop(size_t _count); static size_t maxStackSize;
void push(llvm::Value* _value);
private:
static size_t maxStackSize; RuntimeManager& m_runtimeManager;
private: llvm::Function* m_push;
RuntimeManager& m_runtimeManager; llvm::Function* m_pop;
llvm::Function* m_get;
llvm::Function* m_push; llvm::Function* m_set;
llvm::Function* m_pop;
llvm::Function* m_get; llvm::Value* m_arg;
llvm::Function* m_set; };
llvm::Value* m_arg;
}; }
}
}
}
}
}

4
evmjit/libevmjit/Type.cpp

@ -1,8 +1,4 @@
#include "Type.h" #include "Type.h"
#include <llvm/IR/DerivedTypes.h>
#include "RuntimeManager.h" #include "RuntimeManager.h"
namespace dev namespace dev

7
evmjit/libevmjit/Type.h

@ -1,9 +1,10 @@
#pragma once #pragma once
#include "Common.h"
#include "preprocessor/llvm_includes_start.h"
#include <llvm/IR/Type.h> #include <llvm/IR/Type.h>
#include <llvm/IR/Constants.h> #include <llvm/IR/Constants.h>
#include "Common.h" #include "preprocessor/llvm_includes_end.h"
namespace dev namespace dev
{ {

1
evmjit/libevmjit/Utils.cpp

@ -1,4 +1,3 @@
#include "Utils.h" #include "Utils.h"
namespace dev namespace dev

1
evmjit/libevmjit/Utils.h

@ -1,5 +1,4 @@
#pragma once #pragma once
#include "Common.h" #include "Common.h"
namespace dev namespace dev

1
evmjit/libevmjit/preprocessor/llvm_includes_start.h

@ -1,4 +1,5 @@
#pragma warning(push) #pragma warning(push)
#pragma warning(disable: 4267 4244 4800)
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-parameter"

Loading…
Cancel
Save