hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Public Member Functions | Private Member Functions | Private Attributes | List of all members
hobbes::compileExpF Class Reference
Inheritance diagram for hobbes::compileExpF:
Inheritance graph
Collaboration diagram for hobbes::compileExpF:
Collaboration graph

Public Member Functions

 compileExpF (const std::string &vname, jitcc *c)
 
llvm::Value * with (const Unit *) const
 
llvm::Value * with (const Bool *v) const
 
llvm::Value * with (const Char *v) const
 
llvm::Value * with (const Byte *v) const
 
llvm::Value * with (const Short *v) const
 
llvm::Value * with (const Int *v) const
 
llvm::Value * with (const Long *v) const
 
llvm::Value * with (const Float *v) const
 
llvm::Value * with (const Double *v) const
 
llvm::Value * with (const Var *v) const
 
llvm::Value * with (const Let *v) const
 
llvm::Value * with (const LetRec *v) const
 
llvm::Value * with (const Fn *v) const
 
llvm::Value * with (const App *v) const
 
llvm::Value * with (const Assign *v) const
 
llvm::Value * with (const MkArray *v) const
 
llvm::Value * with (const MkVariant *v) const
 
llvm::Value * with (const MkRecord *v) const
 
llvm::Value * with (const AIndex *v) const
 
void resolveCaseDefault (const Variant *vty, Case *v) const
 
llvm::Value * with (const Case *v) const
 
llvm::Value * with (const Switch *v) const
 
llvm::Value * with (const Proj *v) const
 
llvm::Value * with (const Assump *v) const
 
llvm::Value * with (const Pack *v) const
 
llvm::Value * with (const Unpack *v) const
 

Private Member Functions

llvm::Value * compileConstArray (const MonoTypePtr &ty, const Values &vs) const
 
llvm::Value * compileConstRecord (const RecordValue &vs, const Record *rty) const
 
llvm::Value * compile (const ExprPtr &e) const
 
llvm::IRBuilder * builder () const
 
oplookupOp (const std::string &fname) const
 
llvm::Function * compileFunction (const std::string &name, const str::seq &argns, const MonoTypes &argtys, const ExprPtr &exp) const
 
llvm::Value * compileAllocStmt (unsigned int sz, llvm::Type *mty) const
 
void beginScope (const std::string &vname, llvm::Value *v) const
 
void endScope () const
 
llvm::Value * structFieldPtr (llvm::Value *r, unsigned int i) const
 
RecordValue compileRecordFields (const MkRecord::FieldDefs &fs) const
 
llvm::Value * compileRef (const ExprPtr &ae) const
 

Private Attributes

jitccc
 
std::string vname
 

Constructor & Destructor Documentation

◆ compileExpF()

hobbes::compileExpF::compileExpF ( const std::string &  vname,
jitcc c 
)
inline

Member Function Documentation

◆ beginScope()

void hobbes::compileExpF::beginScope ( const std::string &  vname,
llvm::Value *  v 
) const
inlineprivate

◆ builder()

llvm::IRBuilder* hobbes::compileExpF::builder ( ) const
inlineprivate

◆ compile()

llvm::Value* hobbes::compileExpF::compile ( const ExprPtr e) const
inlineprivate

◆ compileAllocStmt()

llvm::Value* hobbes::compileExpF::compileAllocStmt ( unsigned int  sz,
llvm::Type *  mty 
) const
inlineprivate

◆ compileConstArray()

llvm::Value* hobbes::compileExpF::compileConstArray ( const MonoTypePtr ty,
const Values vs 
) const
inlineprivate

◆ compileConstRecord()

llvm::Value* hobbes::compileExpF::compileConstRecord ( const RecordValue vs,
const Record rty 
) const
inlineprivate

◆ compileFunction()

llvm::Function* hobbes::compileExpF::compileFunction ( const std::string &  name,
const str::seq argns,
const MonoTypes argtys,
const ExprPtr exp 
) const
inlineprivate

◆ compileRecordFields()

RecordValue hobbes::compileExpF::compileRecordFields ( const MkRecord::FieldDefs fs) const
inlineprivate

◆ compileRef()

llvm::Value* hobbes::compileExpF::compileRef ( const ExprPtr ae) const
inlineprivate

◆ endScope()

void hobbes::compileExpF::endScope ( ) const
inlineprivate

◆ lookupOp()

op* hobbes::compileExpF::lookupOp ( const std::string &  fname) const
inlineprivate

◆ resolveCaseDefault()

void hobbes::compileExpF::resolveCaseDefault ( const Variant vty,
Case v 
) const
inline

◆ structFieldPtr()

llvm::Value* hobbes::compileExpF::structFieldPtr ( llvm::Value *  r,
unsigned int  i 
) const
inlineprivate

◆ with() [1/25]

llvm::Value* hobbes::compileExpF::with ( const Unit ) const
inlinevirtual

◆ with() [2/25]

llvm::Value* hobbes::compileExpF::with ( const Bool v) const
inlinevirtual

◆ with() [3/25]

llvm::Value* hobbes::compileExpF::with ( const Char v) const
inlinevirtual

◆ with() [4/25]

llvm::Value* hobbes::compileExpF::with ( const Byte v) const
inlinevirtual

◆ with() [5/25]

llvm::Value* hobbes::compileExpF::with ( const Short v) const
inlinevirtual

◆ with() [6/25]

llvm::Value* hobbes::compileExpF::with ( const Int v) const
inlinevirtual

◆ with() [7/25]

llvm::Value* hobbes::compileExpF::with ( const Long v) const
inlinevirtual

◆ with() [8/25]

llvm::Value* hobbes::compileExpF::with ( const Float v) const
inlinevirtual

◆ with() [9/25]

llvm::Value* hobbes::compileExpF::with ( const Double v) const
inlinevirtual

◆ with() [10/25]

llvm::Value* hobbes::compileExpF::with ( const Var v) const
inlinevirtual

◆ with() [11/25]

llvm::Value* hobbes::compileExpF::with ( const Let v) const
inlinevirtual

◆ with() [12/25]

llvm::Value* hobbes::compileExpF::with ( const LetRec v) const
inlinevirtual

◆ with() [13/25]

llvm::Value* hobbes::compileExpF::with ( const Fn v) const
inlinevirtual

◆ with() [14/25]

llvm::Value* hobbes::compileExpF::with ( const App v) const
inlinevirtual

◆ with() [15/25]

llvm::Value* hobbes::compileExpF::with ( const Assign v) const
inlinevirtual

◆ with() [16/25]

llvm::Value* hobbes::compileExpF::with ( const MkArray v) const
inlinevirtual

◆ with() [17/25]

llvm::Value* hobbes::compileExpF::with ( const MkVariant v) const
inlinevirtual

◆ with() [18/25]

llvm::Value* hobbes::compileExpF::with ( const MkRecord v) const
inlinevirtual

◆ with() [19/25]

llvm::Value* hobbes::compileExpF::with ( const AIndex v) const
inlinevirtual

◆ with() [20/25]

llvm::Value* hobbes::compileExpF::with ( const Case v) const
inlinevirtual

◆ with() [21/25]

llvm::Value* hobbes::compileExpF::with ( const Switch v) const
inlinevirtual

◆ with() [22/25]

llvm::Value* hobbes::compileExpF::with ( const Proj v) const
inlinevirtual

◆ with() [23/25]

llvm::Value* hobbes::compileExpF::with ( const Assump v) const
inlinevirtual

◆ with() [24/25]

llvm::Value* hobbes::compileExpF::with ( const Pack v) const
inlinevirtual

◆ with() [25/25]

llvm::Value* hobbes::compileExpF::with ( const Unpack v) const
inlinevirtual

Member Data Documentation

◆ c

jitcc* hobbes::compileExpF::c
private

◆ vname

std::string hobbes::compileExpF::vname
private

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