/JIT/opcodes/closure.h
http://unladen-swallow.googlecode.com/ · C Header · 39 lines · 27 code · 10 blank · 2 comment · 0 complexity · 39d917ddf424628e64ef5ca639fa047d MD5 · raw file
- // -*- C++ -*-
- #ifndef OPCODE_CLOSURE_H_
- #define OPCODE_CLOSURE_H_
- #ifndef __cplusplus
- #error This header expects to be included only in C++ source
- #endif
- #include "llvm/Support/IRBuilder.h"
- #include "llvm/Support/TargetFolder.h"
- namespace py {
- class LlvmFunctionBuilder;
- class LlvmFunctionState;
- // This class contains all opcodes related to closures.
- class OpcodeClosure
- {
- public:
- OpcodeClosure(LlvmFunctionBuilder *fbuilder);
- void LOAD_CLOSURE(int freevar_index);
- void MAKE_CLOSURE(int num_defaults);
- void LOAD_DEREF(int index);
- void STORE_DEREF(int index);
- private:
- typedef llvm::IRBuilder<true, llvm::TargetFolder> BuilderT;
- LlvmFunctionBuilder *fbuilder_;
- LlvmFunctionState *state_;
- BuilderT &builder_;
- PyGlobalLlvmData *const llvm_data_;
- };
- }
- #endif /* OPCODE_CLOSURE_H_ */