Lines Matching refs:Emitter
23 template <class Emitter> class LabelScope {
28 LabelScope(ByteCodeStmtGen<Emitter> *Ctx) : Ctx(Ctx) {} in LabelScope()
30 ByteCodeStmtGen<Emitter> *Ctx;
34 template <class Emitter> class LoopScope final : public LabelScope<Emitter> {
36 using LabelTy = typename ByteCodeStmtGen<Emitter>::LabelTy;
37 using OptLabelTy = typename ByteCodeStmtGen<Emitter>::OptLabelTy;
39 LoopScope(ByteCodeStmtGen<Emitter> *Ctx, LabelTy BreakLabel, in LoopScope()
41 : LabelScope<Emitter>(Ctx), OldBreakLabel(Ctx->BreakLabel), in LoopScope()
58 template <class Emitter> class SwitchScope final : public LabelScope<Emitter> {
60 using LabelTy = typename ByteCodeStmtGen<Emitter>::LabelTy;
61 using OptLabelTy = typename ByteCodeStmtGen<Emitter>::OptLabelTy;
62 using CaseMap = typename ByteCodeStmtGen<Emitter>::CaseMap;
64 SwitchScope(ByteCodeStmtGen<Emitter> *Ctx, CaseMap &&CaseLabels, in SwitchScope()
66 : LabelScope<Emitter>(Ctx), OldBreakLabel(Ctx->BreakLabel), in SwitchScope()
89 template <class Emitter>
90 bool ByteCodeStmtGen<Emitter>::emitLambdaStaticInvokerBody( in emitLambdaStaticInvokerBody()
140 template <class Emitter>
141 bool ByteCodeStmtGen<Emitter>::visitFunc(const FunctionDecl *F) { in visitFunc()
180 BlockScope<Emitter> Scope(this); in visitFunc()
244 template <class Emitter>
245 bool ByteCodeStmtGen<Emitter>::visitStmt(const Stmt *S) { in visitStmt()
292 template <class Emitter>
293 bool ByteCodeStmtGen<Emitter>::visitLoopBody(const Stmt *S) { in visitLoopBody()
307 template <class Emitter>
308 bool ByteCodeStmtGen<Emitter>::visitCompoundStmt( in visitCompoundStmt()
310 BlockScope<Emitter> Scope(this); in visitCompoundStmt()
317 template <class Emitter>
318 bool ByteCodeStmtGen<Emitter>::visitDeclStmt(const DeclStmt *DS) { in visitDeclStmt()
333 template <class Emitter>
334 bool ByteCodeStmtGen<Emitter>::visitReturnStmt(const ReturnStmt *RS) { in visitReturnStmt()
336 ExprScope<Emitter> RetScope(this); in visitReturnStmt()
365 template <class Emitter>
366 bool ByteCodeStmtGen<Emitter>::visitIfStmt(const IfStmt *IS) { in visitIfStmt()
367 BlockScope<Emitter> IfScope(this); in visitIfStmt()
410 template <class Emitter>
411 bool ByteCodeStmtGen<Emitter>::visitWhileStmt(const WhileStmt *S) { in visitWhileStmt()
417 LoopScope<Emitter> LS(this, EndLabel, CondLabel); in visitWhileStmt()
425 LocalScope<Emitter> Scope(this); in visitWhileStmt()
427 DestructorScope<Emitter> DS(Scope); in visitWhileStmt()
439 template <class Emitter>
440 bool ByteCodeStmtGen<Emitter>::visitDoStmt(const DoStmt *S) { in visitDoStmt()
447 LoopScope<Emitter> LS(this, EndLabel, CondLabel); in visitDoStmt()
448 LocalScope<Emitter> Scope(this); in visitDoStmt()
452 DestructorScope<Emitter> DS(Scope); in visitDoStmt()
467 template <class Emitter>
468 bool ByteCodeStmtGen<Emitter>::visitForStmt(const ForStmt *S) { in visitForStmt()
478 LoopScope<Emitter> LS(this, EndLabel, IncLabel); in visitForStmt()
479 LocalScope<Emitter> Scope(this); in visitForStmt()
492 DestructorScope<Emitter> DS(Scope); in visitForStmt()
507 template <class Emitter>
508 bool ByteCodeStmtGen<Emitter>::visitCXXForRangeStmt(const CXXForRangeStmt *S) { in visitCXXForRangeStmt()
521 LoopScope<Emitter> LS(this, EndLabel, IncLabel); in visitCXXForRangeStmt()
544 LocalScope<Emitter> Scope(this); in visitCXXForRangeStmt()
546 DestructorScope<Emitter> DS(Scope); in visitCXXForRangeStmt()
561 template <class Emitter>
562 bool ByteCodeStmtGen<Emitter>::visitBreakStmt(const BreakStmt *S) { in visitBreakStmt()
570 template <class Emitter>
571 bool ByteCodeStmtGen<Emitter>::visitContinueStmt(const ContinueStmt *S) { in visitContinueStmt()
579 template <class Emitter>
580 bool ByteCodeStmtGen<Emitter>::visitSwitchStmt(const SwitchStmt *S) { in visitSwitchStmt()
638 SwitchScope<Emitter> SS(this, std::move(CaseLabels), EndLabel, DefaultLabel); in visitSwitchStmt()
645 template <class Emitter>
646 bool ByteCodeStmtGen<Emitter>::visitCaseStmt(const CaseStmt *S) { in visitCaseStmt()
651 template <class Emitter>
652 bool ByteCodeStmtGen<Emitter>::visitDefaultStmt(const DefaultStmt *S) { in visitDefaultStmt()
657 template <class Emitter>
658 bool ByteCodeStmtGen<Emitter>::visitAsmStmt(const AsmStmt *S) { in visitAsmStmt()
662 template <class Emitter>
663 bool ByteCodeStmtGen<Emitter>::visitAttributedStmt(const AttributedStmt *S) { in visitAttributedStmt()
668 template <class Emitter>
669 bool ByteCodeStmtGen<Emitter>::visitCXXTryStmt(const CXXTryStmt *S) { in visitCXXTryStmt()