| Index: src/data-flow.h
|
| ===================================================================
|
| --- src/data-flow.h (revision 4098)
|
| +++ src/data-flow.h (working copy)
|
| @@ -486,6 +486,41 @@
|
| };
|
|
|
|
|
| +// Computes the set of assigned variables and annotates variables proxies
|
| +// that are trivial sub-expressions and for-loops where the loop variable
|
| +// is guaranteed to be a smi.
|
| +class AssignedVariablesAnalyzer : public AstVisitor {
|
| + public:
|
| + explicit AssignedVariablesAnalyzer(FunctionLiteral* fun);
|
| +
|
| + void Analyze();
|
| +
|
| + private:
|
| + Variable* FindSmiLoopVariable(ForStatement* stmt);
|
| +
|
| + int BitIndex(Variable* var);
|
| +
|
| + void RecordAssignedVar(Variable* var);
|
| +
|
| + void MarkIfTrivial(Expression* expr);
|
| +
|
| + // Visits an expression saving the accumulator before, clearing
|
| + // it before visting and restoring it after visiting.
|
| + void ProcessExpression(Expression* expr);
|
| +
|
| + // AST node visit functions.
|
| +#define DECLARE_VISIT(type) virtual void Visit##type(type* node);
|
| + AST_NODE_LIST(DECLARE_VISIT)
|
| +#undef DECLARE_VISIT
|
| +
|
| + FunctionLiteral* fun_;
|
| +
|
| + // Accumulator for assigned variables set.
|
| + BitVector av_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(AssignedVariablesAnalyzer);
|
| +};
|
| +
|
| } } // namespace v8::internal
|
|
|
|
|
|
|