Fabcoin Core  0.16.2
P2P Digital Currency
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
dev::eth::jit::Compiler Class Reference

#include <Compiler.h>

Collaboration diagram for dev::eth::jit::Compiler:
[legend]

Classes

struct  Options
 

Public Member Functions

 Compiler (Options const &_options, evm_mode _mode, llvm::LLVMContext &_llvmContext)
 
std::unique_ptr< llvm::Module > compile (code_iterator _begin, code_iterator _end, std::string const &_id)
 

Private Member Functions

std::vector< BasicBlockcreateBasicBlocks (code_iterator _begin, code_iterator _end)
 
void compileBasicBlock (BasicBlock &_basicBlock, class RuntimeManager &_runtimeManager, class Arith256 &_arith, class Memory &_memory, class Ext &_ext, class GasMeter &_gasMeter)
 
void resolveJumps ()
 

Private Attributes

Options const & m_options
 Compiler options. More...
 
evm_mode m_mode
 EVM compatibility mode. More...
 
IRBuilder m_builder
 Helper class for generating IR. More...
 
llvm::BasicBlock * m_jumpTableBB = nullptr
 Block with a jump table. More...
 
llvm::Function * m_mainFunc = nullptr
 Main program function. More...
 

Detailed Description

Definition at line 13 of file Compiler.h.

Constructor & Destructor Documentation

dev::eth::jit::Compiler::Compiler ( Options const &  _options,
evm_mode  _mode,
llvm::LLVMContext &  _llvmContext 
)

Definition at line 33 of file Compiler.cpp.

Here is the call graph for this function:

Member Function Documentation

std::unique_ptr< llvm::Module > dev::eth::jit::Compiler::compile ( code_iterator  _begin,
code_iterator  _end,
std::string const &  _id 
)

Definition at line 149 of file Compiler.cpp.

Here is the call graph for this function:

void dev::eth::jit::Compiler::compileBasicBlock ( BasicBlock _basicBlock,
class RuntimeManager _runtimeManager,
class Arith256 _arith,
class Memory _memory,
class Ext _ext,
class GasMeter _gasMeter 
)
private

Definition at line 213 of file Compiler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

std::vector< BasicBlock > dev::eth::jit::Compiler::createBasicBlocks ( code_iterator  _begin,
code_iterator  _end 
)
private

Helper function that skips push data and finds next iterator (can be the end)

Definition at line 41 of file Compiler.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void dev::eth::jit::Compiler::resolveJumps ( )
private

Definition at line 104 of file Compiler.cpp.

Here is the caller graph for this function:

Member Data Documentation

IRBuilder dev::eth::jit::Compiler::m_builder
private

Helper class for generating IR.

Definition at line 45 of file Compiler.h.

llvm::BasicBlock* dev::eth::jit::Compiler::m_jumpTableBB = nullptr
private

Block with a jump table.

Definition at line 48 of file Compiler.h.

llvm::Function* dev::eth::jit::Compiler::m_mainFunc = nullptr
private

Main program function.

Definition at line 51 of file Compiler.h.

evm_mode dev::eth::jit::Compiler::m_mode
private

EVM compatibility mode.

Definition at line 42 of file Compiler.h.

Options const& dev::eth::jit::Compiler::m_options
private

Compiler options.

Definition at line 39 of file Compiler.h.


The documentation for this class was generated from the following files: