Skip to content
Snippets Groups Projects
Commit 2e41efe7 authored by Daniel Plagge's avatar Daniel Plagge
Browse files

added reset

parent f8fa3a58
Branches
No related tags found
No related merge requests found
...@@ -93,6 +93,7 @@ import de.stups.probkodkod.parser.node.ARelInnerformula; ...@@ -93,6 +93,7 @@ import de.stups.probkodkod.parser.node.ARelInnerformula;
import de.stups.probkodkod.parser.node.ARelation; import de.stups.probkodkod.parser.node.ARelation;
import de.stups.probkodkod.parser.node.ARelrefInnerexpression; import de.stups.probkodkod.parser.node.ARelrefInnerexpression;
import de.stups.probkodkod.parser.node.ARequest; import de.stups.probkodkod.parser.node.ARequest;
import de.stups.probkodkod.parser.node.AReset;
import de.stups.probkodkod.parser.node.ASetMultiplicity; import de.stups.probkodkod.parser.node.ASetMultiplicity;
import de.stups.probkodkod.parser.node.ASomeMultiplicity; import de.stups.probkodkod.parser.node.ASomeMultiplicity;
import de.stups.probkodkod.parser.node.AStandardType; import de.stups.probkodkod.parser.node.AStandardType;
...@@ -308,6 +309,11 @@ public class KodkodAnalysis extends DepthFirstAdapter { ...@@ -308,6 +309,11 @@ public class KodkodAnalysis extends DepthFirstAdapter {
session.stop(); session.stop();
} }
@Override
public void outAReset(final AReset node) {
session.reset();
}
private Map<String, TupleSet> extractArguments(final List<PArgument> args, private Map<String, TupleSet> extractArguments(final List<PArgument> args,
final ImmutableProblem problem) { final ImmutableProblem problem) {
final Map<String, TupleSet> result = new HashMap<String, TupleSet>(); final Map<String, TupleSet> result = new HashMap<String, TupleSet>();
......
...@@ -90,6 +90,18 @@ public class KodkodSession { ...@@ -90,6 +90,18 @@ public class KodkodSession {
this.stopped = true; this.stopped = true;
} }
public void reset() {
long before = Runtime.getRuntime().freeMemory();
this.problems.clear();
this.solvers.clear();
this.currentRequests.clear();
System.gc();
long after = Runtime.getRuntime().freeMemory();
logger.info("session reseted (" + before
+ " bytes of free memory before and " + after
+ " bytes after reset (diff: " + (after - before) + " bytes)");
}
private void info(final ImmutableProblem problem, final String info) { private void info(final ImmutableProblem problem, final String info) {
if (logger.isLoggable(Level.INFO)) { if (logger.isLoggable(Level.INFO)) {
logger.info("problem '" + problem.getId() + "': " + info); logger.info("problem '" + problem.getId() + "': " + info);
......
...@@ -59,6 +59,7 @@ Tokens ...@@ -59,6 +59,7 @@ Tokens
keyword_varref = 'varref'; keyword_varref = 'varref';
keyword_request = 'request'; keyword_request = 'request';
keyword_stop = 'stop'; keyword_stop = 'stop';
keyword_reset = 'reset';
keyword_list = 'list'; keyword_list = 'list';
keyword_positive = 'pos'; keyword_positive = 'pos';
keyword_negative = 'neg'; keyword_negative = 'neg';
...@@ -93,6 +94,7 @@ Productions ...@@ -93,6 +94,7 @@ Productions
| {request} request | {request} request
| {list} list | {list} list
| {stop} stop | {stop} stop
| {reset} reset
| {none}; | {none};
problem = keyword_problem [id]:identifier problem = keyword_problem [id]:identifier
...@@ -208,3 +210,6 @@ Productions ...@@ -208,3 +210,6 @@ Productions
list = keyword_list [problem]:identifier [size]:number; list = keyword_list [problem]:identifier [size]:number;
stop = keyword_stop; stop = keyword_stop;
reset = keyword_reset;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment