/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

  1. // -*- C++ -*-
  2. #ifndef OPCODE_CLOSURE_H_
  3. #define OPCODE_CLOSURE_H_
  4. #ifndef __cplusplus
  5. #error This header expects to be included only in C++ source
  6. #endif
  7. #include "llvm/Support/IRBuilder.h"
  8. #include "llvm/Support/TargetFolder.h"
  9. namespace py {
  10. class LlvmFunctionBuilder;
  11. class LlvmFunctionState;
  12. // This class contains all opcodes related to closures.
  13. class OpcodeClosure
  14. {
  15. public:
  16. OpcodeClosure(LlvmFunctionBuilder *fbuilder);
  17. void LOAD_CLOSURE(int freevar_index);
  18. void MAKE_CLOSURE(int num_defaults);
  19. void LOAD_DEREF(int index);
  20. void STORE_DEREF(int index);
  21. private:
  22. typedef llvm::IRBuilder<true, llvm::TargetFolder> BuilderT;
  23. LlvmFunctionBuilder *fbuilder_;
  24. LlvmFunctionState *state_;
  25. BuilderT &builder_;
  26. PyGlobalLlvmData *const llvm_data_;
  27. };
  28. }
  29. #endif /* OPCODE_CLOSURE_H_ */