Skip to content

Commit

Permalink
Moved inconsistent analysis out of method signatures.
Browse files Browse the repository at this point in the history
  • Loading branch information
azreika committed Nov 12, 2020
1 parent 38c4b48 commit 69547dc
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 21 deletions.
16 changes: 7 additions & 9 deletions src/ast2ram/AstToRamTranslator.cpp
Expand Up @@ -270,8 +270,7 @@ Own<ram::Expression> AstToRamTranslator::translateConstant(ast::Constant const&
}

/** generate RAM code for a non-recursive relation */
Own<ram::Statement> AstToRamTranslator::translateNonRecursiveRelation(
const ast::Relation& rel, const ast::analysis::RecursiveClausesAnalysis* recursiveClauses) {
Own<ram::Statement> AstToRamTranslator::translateNonRecursiveRelation(const ast::Relation& rel) {
/* start with an empty sequence */
VecOwn<ram::Statement> res;

Expand Down Expand Up @@ -372,8 +371,8 @@ std::string AstToRamTranslator::getRelationName(const ast::QualifiedName& id) {
}

/** generate RAM code for recursive relations in a strongly-connected component */
Own<ram::Statement> AstToRamTranslator::translateRecursiveRelation(const std::set<const ast::Relation*>& scc,
const ast::analysis::RecursiveClausesAnalysis* recursiveClauses) {
Own<ram::Statement> AstToRamTranslator::translateRecursiveRelation(
const std::set<const ast::Relation*>& scc) {
// initialize sections
VecOwn<ram::Statement> preamble;
VecOwn<ram::Statement> updateTable;
Expand Down Expand Up @@ -420,7 +419,7 @@ Own<ram::Statement> AstToRamTranslator::translateRecursiveRelation(const std::se

/* Generate code for non-recursive part of relation */
/* Generate merge operation for temp tables */
appendStmt(preamble, translateNonRecursiveRelation(*rel, recursiveClauses));
appendStmt(preamble, translateNonRecursiveRelation(*rel));
appendStmt(preamble, genMerge(rel, getDeltaRelationName(rel), getConcreteRelationName(rel)));

/* Add update operations of relations to parallel statements */
Expand Down Expand Up @@ -947,11 +946,11 @@ void AstToRamTranslator::translateProgram(const ast::TranslationUnit& translatio
// keep track of relevant analyses
ioType = translationUnit.getAnalysis<ast::analysis::IOTypeAnalysis>();
typeEnv = &translationUnit.getAnalysis<ast::analysis::TypeEnvironmentAnalysis>()->getTypeEnvironment();
const auto* recursiveClauses = translationUnit.getAnalysis<ast::analysis::RecursiveClausesAnalysis>();
const auto& sccGraph = *translationUnit.getAnalysis<ast::analysis::SCCGraphAnalysis>();
const auto& sccOrder = *translationUnit.getAnalysis<ast::analysis::TopologicallySortedSCCGraphAnalysis>();
const auto& expirySchedule =
translationUnit.getAnalysis<ast::analysis::RelationScheduleAnalysis>()->schedule();
recursiveClauses = translationUnit.getAnalysis<ast::analysis::RecursiveClausesAnalysis>();
auxArityAnalysis = translationUnit.getAnalysis<ast::analysis::AuxiliaryArityAnalysis>();
functorAnalysis = translationUnit.getAnalysis<ast::analysis::FunctorAnalysis>();
relDetail = translationUnit.getAnalysis<ast::analysis::RelationDetailCacheAnalysis>();
Expand Down Expand Up @@ -1084,9 +1083,8 @@ void AstToRamTranslator::translateProgram(const ast::TranslationUnit& translatio

// compute the relations themselves
Own<ram::Statement> bodyStatement =
(!isRecursive) ? translateNonRecursiveRelation(
*((const ast::Relation*)*allInterns.begin()), recursiveClauses)
: translateRecursiveRelation(allInterns, recursiveClauses);
(!isRecursive) ? translateNonRecursiveRelation(*((const ast::Relation*)*allInterns.begin()))
: translateRecursiveRelation(allInterns);
appendStmt(current, std::move(bodyStatement));

// store all internal output relations to the output dir with a .csv extension
Expand Down
21 changes: 9 additions & 12 deletions src/ast2ram/AstToRamTranslator.h
Expand Up @@ -126,16 +126,19 @@ class AstToRamTranslator {
/** IO Type */
const ast::analysis::IOTypeAnalysis* ioType = nullptr;

/** Functors' analysis */
/** Functor analysis */
const ast::analysis::FunctorAnalysis* functorAnalysis = nullptr;

/** Auxiliary Arity Analysis */
/** Recursive clauses analysis */
const ast::analysis::RecursiveClausesAnalysis* recursiveClauses = nullptr;

/** Auxiliary arity analysis */
const ast::analysis::AuxiliaryArityAnalysis* auxArityAnalysis = nullptr;

/** Relation detail cache analysis */
const ast::analysis::RelationDetailCacheAnalysis* relDetail = nullptr;

/** Polymorphic Objects Analysis */
/** Polymorphic objects analysis */
const ast::analysis::PolymorphicObjectsAnalysis* polyAnalysis = nullptr;

/** SIPS metric for reordering */
Expand Down Expand Up @@ -183,17 +186,11 @@ class AstToRamTranslator {
/** Get ram representation of constant */
RamDomain getConstantRamRepresentation(const ast::Constant& constant);

/**
* translate RAM code for the non-recursive clauses of the given relation.
*
* @return a corresponding statement or null if there are no non-recursive clauses.
*/
Own<ram::Statement> translateNonRecursiveRelation(
const ast::Relation& rel, const ast::analysis::RecursiveClausesAnalysis* recursiveClauses);
/** translate RAM code for the non-recursive clauses of the given relation */
Own<ram::Statement> translateNonRecursiveRelation(const ast::Relation& rel);

/** translate RAM code for recursive relations in a strongly-connected component */
Own<ram::Statement> translateRecursiveRelation(const std::set<const ast::Relation*>& scc,
const ast::analysis::RecursiveClausesAnalysis* recursiveClauses);
Own<ram::Statement> translateRecursiveRelation(const std::set<const ast::Relation*>& scc);

/** translate RAM code for subroutine to get subproofs */
Own<ram::Statement> makeSubproofSubroutine(const ast::Clause& clause);
Expand Down

0 comments on commit 69547dc

Please sign in to comment.