int CodeGenerator::createNewLocalId(ConstructPtr ar) { if (m_wrappedExpression[m_curStream]) { return m_localId[m_curStream]++; } FunctionScopePtr func = ar->getFunctionScope(); if (func) { return func->nextInlineIndex(); } FileScopePtr fs = ar->getFileScope(); if (fs) { return createNewId(fs->getName()); } return createNewId(""); }
bool ClosureExpression::hasStaticLocalsImpl(ConstructPtr root) { if (!root) { return false; } if (root->getFunctionScope() != m_func->getFunctionScope()) { // new scope, new statics return false; } for (int i = 0; i < root->getKidCount(); i++) { ConstructPtr cons = root->getNthKid(i); if (StatementPtr s = dynamic_pointer_cast<Statement>(cons)) { if (s->is(Statement::KindOfStaticStatement)) { return true; } } if (hasStaticLocalsImpl(cons)) { return true; } } return false; }