Mercurial > projects > ldc
diff dmd/statement.h @ 1141:f99a3b393c03
Reorganize EnclosingHandlers to require less changes to the frontend and allow us to
implement the synchronized storage class for functions.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Tue, 24 Mar 2009 21:18:18 +0100 |
parents | b30fe7e1dbb9 |
children | c6d6a68bb5db |
line wrap: on
line diff
--- a/dmd/statement.h Tue Mar 24 14:34:16 2009 +0100 +++ b/dmd/statement.h Tue Mar 24 21:18:18 2009 +0100 @@ -94,35 +94,6 @@ BEany = (BEfallthru | BEthrow | BEreturn | BEgoto | BEhalt), }; -// LDC this is used for tracking try-finally, synchronized and volatile scopes -// definitions in gen/llvmhelpers.cpp -struct EnclosingHandler : Object -{ - virtual void emitCode(IRState* p) = 0; - virtual EnclosingHandler* getEnclosing() = 0; -}; -struct EnclosingTryFinally : EnclosingHandler -{ - TryFinallyStatement* tf; - void emitCode(IRState* p); - EnclosingHandler* getEnclosing(); - EnclosingTryFinally(TryFinallyStatement* _tf) : tf(_tf) {} -}; -struct EnclosingVolatile : EnclosingHandler -{ - VolatileStatement* v; - void emitCode(IRState* p); - EnclosingHandler* getEnclosing(); - EnclosingVolatile(VolatileStatement* _tf) : v(_tf) {} -}; -struct EnclosingSynchro : EnclosingHandler -{ - SynchronizedStatement* s; - void emitCode(IRState* p); - EnclosingHandler* getEnclosing(); - EnclosingSynchro(SynchronizedStatement* _tf) : s(_tf) {} -}; - struct Statement : Object { Loc loc; @@ -255,7 +226,6 @@ struct UnrolledLoopStatement : Statement { Statements *statements; - EnclosingHandler* enclosinghandler; UnrolledLoopStatement(Loc loc, Statements *statements); Statement *syntaxCopy(); @@ -300,7 +270,6 @@ { Expression *condition; Statement *body; - EnclosingHandler* enclosinghandler; WhileStatement(Loc loc, Expression *c, Statement *b); Statement *syntaxCopy(); @@ -322,7 +291,6 @@ { Statement *body; Expression *condition; - EnclosingHandler* enclosinghandler; DoStatement(Loc loc, Statement *b, Expression *c); Statement *syntaxCopy(); @@ -346,7 +314,6 @@ Expression *condition; Expression *increment; Statement *body; - EnclosingHandler* enclosinghandler; ForStatement(Loc loc, Statement *init, Expression *condition, Expression *increment, Statement *body); Statement *syntaxCopy(); @@ -371,7 +338,6 @@ Arguments *arguments; // array of Argument*'s Expression *aggr; Statement *body; - EnclosingHandler* enclosinghandler; VarDeclaration *key; VarDeclaration *value; @@ -499,7 +465,6 @@ Statement *body; DefaultStatement *sdefault; - EnclosingHandler* enclosinghandler; Array gotoCases; // array of unresolved GotoCaseStatement's Array *cases; // array of CaseStatement's @@ -574,7 +539,6 @@ struct GotoDefaultStatement : Statement { SwitchStatement *sw; - EnclosingHandler* enclosinghandler; GotoDefaultStatement(Loc loc); Statement *syntaxCopy(); @@ -590,7 +554,6 @@ { Expression *exp; // NULL, or which case to goto CaseStatement *cs; // case statement it resolves to - EnclosingHandler* enclosinghandler; SwitchStatement *sw; GotoCaseStatement(Loc loc, Expression *exp); @@ -615,7 +578,6 @@ struct ReturnStatement : Statement { Expression *exp; - EnclosingHandler* enclosinghandler; ReturnStatement(Loc loc, Expression *exp); Statement *syntaxCopy(); @@ -636,7 +598,6 @@ struct BreakStatement : Statement { Identifier *ident; - EnclosingHandler* enclosinghandler; BreakStatement(Loc loc, Identifier *ident); Statement *syntaxCopy(); @@ -654,7 +615,6 @@ struct ContinueStatement : Statement { Identifier *ident; - EnclosingHandler* enclosinghandler; ContinueStatement(Loc loc, Identifier *ident); Statement *syntaxCopy(); @@ -673,7 +633,6 @@ { Expression *exp; Statement *body; - EnclosingHandler* enclosinghandler; SynchronizedStatement(Loc loc, Expression *exp, Statement *body); Statement *syntaxCopy(); @@ -749,7 +708,6 @@ { Statement *body; Statement *finalbody; - EnclosingHandler* enclosinghandler; TryFinallyStatement(Loc loc, Statement *body, Statement *finalbody); Statement *syntaxCopy(); @@ -799,7 +757,6 @@ struct VolatileStatement : Statement { Statement *statement; - EnclosingHandler* enclosinghandler; VolatileStatement(Loc loc, Statement *statement); Statement *syntaxCopy(); @@ -817,8 +774,8 @@ { Identifier *ident; LabelDsymbol *label; - TryFinallyStatement *tf; - EnclosingHandler* enclosinghandler; + TryFinallyStatement *enclosingFinally; + Statement* enclosingScopeExit; GotoStatement(Loc loc, Identifier *ident); Statement *syntaxCopy(); @@ -835,8 +792,8 @@ { Identifier *ident; Statement *statement; - TryFinallyStatement *tf; - EnclosingHandler* enclosinghandler; + TryFinallyStatement *enclosingFinally; + Statement* enclosingScopeExit; block *lblock; // back end int isReturnLabel; @@ -895,8 +852,8 @@ struct AsmBlockStatement : CompoundStatement { - EnclosingHandler* enclosinghandler; - TryFinallyStatement* tf; + TryFinallyStatement* enclosingFinally; + Statement* enclosingScopeExit; AsmBlockStatement(Loc loc, Statements *s); Statements *flatten(Scope *sc);