Skip to content

Commit

Permalink
Removed polyanalysis from ast2ram internals.
Browse files Browse the repository at this point in the history
  • Loading branch information
Abdul Zreika committed Nov 26, 2020
1 parent 26e8f2e commit 6be0ec1
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
17 changes: 9 additions & 8 deletions src/ast2ram/AstToRamTranslator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -461,13 +461,13 @@ Own<ram::Statement> AstToRamTranslator::generateRecursiveStratum(
return mk<ram::Sequence>(std::move(result));
}

bool AstToRamTranslator::removeADTs(ast::TranslationUnit& translationUnit) {
bool AstToRamTranslator::removeADTs(ast::TranslationUnit& tu) {
struct ADTsFuneral : public ast::NodeMapper {
mutable bool changed{false};
const ast::analysis::SumTypeBranchesAnalysis& sumTypesBranches;

ADTsFuneral(const ast::TranslationUnit& tu)
: sumTypesBranches(*tu.getAnalysis<ast::analysis::SumTypeBranchesAnalysis>()) {}
ADTsFuneral(const ast::TranslationUnit& translationUnit)
: sumTypesBranches(*translationUnit.getAnalysis<ast::analysis::SumTypeBranchesAnalysis>()) {}

Own<ast::Node> operator()(Own<ast::Node> node) const override {
// Rewrite sub-expressions first
Expand Down Expand Up @@ -527,8 +527,8 @@ bool AstToRamTranslator::removeADTs(ast::TranslationUnit& translationUnit) {
}
};

ADTsFuneral mapper(translationUnit);
translationUnit.getProgram().apply(mapper);
ADTsFuneral mapper(tu);
tu.getProgram().apply(mapper);
return mapper.changed;
}

Expand Down Expand Up @@ -619,7 +619,9 @@ VecOwn<ram::Relation> AstToRamTranslator::createRamRelations(const std::vector<s
return ramRelations;
}

void AstToRamTranslator::finaliseAstTypes(ast::Program& program) {
void AstToRamTranslator::finaliseAstTypes(ast::TranslationUnit& tu) {
auto& program = tu.getProgram();
const auto* polyAnalysis = tu.getAnalysis<ast::analysis::PolymorphicObjectsAnalysis>();
visitDepthFirst(program, [&](const ast::NumericConstant& nc) {
const_cast<ast::NumericConstant&>(nc).setFinalType(polyAnalysis->getInferredType(&nc));
});
Expand Down Expand Up @@ -679,7 +681,7 @@ Own<ram::Sequence> AstToRamTranslator::generateProgram(const ast::TranslationUni

void AstToRamTranslator::preprocessAstProgram(ast::TranslationUnit& tu) {
// Finalise polymorphic types in the AST
finaliseAstTypes(tu.getProgram());
finaliseAstTypes(tu);

// Replace ADTs with record representatives
removeADTs(tu);
Expand All @@ -696,7 +698,6 @@ Own<ram::TranslationUnit> AstToRamTranslator::translateUnit(ast::TranslationUnit

// Grab all relevant analyses
typeEnv = &tu.getAnalysis<ast::analysis::TypeEnvironmentAnalysis>()->getTypeEnvironment();
polyAnalysis = tu.getAnalysis<ast::analysis::PolymorphicObjectsAnalysis>();

// Run the AST preprocessor
preprocessAstProgram(tu);
Expand Down
6 changes: 2 additions & 4 deletions src/ast2ram/AstToRamTranslator.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ class TranslationUnit;
} // namespace souffle::ast

namespace souffle::ast::analysis {
class PolymorphicObjectsAnalysis;
class TypeEnvironment;
} // namespace souffle::ast::analysis

Expand Down Expand Up @@ -62,7 +61,6 @@ class AstToRamTranslator {
Own<SymbolTable> symbolTable;

/** Analyses needed */
const ast::analysis::PolymorphicObjectsAnalysis* polyAnalysis = nullptr;
const ast::analysis::TypeEnvironment* typeEnv = nullptr;

void addRamSubroutine(std::string subroutineID, Own<ram::Statement> subroutine);
Expand Down Expand Up @@ -108,11 +106,11 @@ class AstToRamTranslator {
virtual void preprocessAstProgram(ast::TranslationUnit& tu);

/** Replace ADTs with special records */
bool removeADTs(ast::TranslationUnit& translationUnit);
bool removeADTs(ast::TranslationUnit& tu);

/** Finalise the types of polymorphic objects */
// TODO (azreika): should be removed once the translator is refactored to avoid cloning
void finaliseAstTypes(ast::Program& program);
void finaliseAstTypes(ast::TranslationUnit& tu);

private:
std::map<std::string, Own<ram::Statement>> ramSubroutines;
Expand Down

0 comments on commit 6be0ec1

Please sign in to comment.