diff options
author | Kristóf Marussy <kristof@marussy.com> | 2023-04-07 19:49:23 +0200 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2023-04-07 19:53:43 +0200 |
commit | 6ae4346b6248198cb687a9cbbeba3bfb9c37c4b5 (patch) | |
tree | af42f0e78812057f5730ba86838aad58bb5686a7 /subprojects/store-reasoning/src | |
parent | Merge pull request #24 from kris7t/partial-interpretation (diff) | |
download | refinery-6ae4346b6248198cb687a9cbbeba3bfb9c37c4b5.tar.gz refinery-6ae4346b6248198cb687a9cbbeba3bfb9c37c4b5.tar.zst refinery-6ae4346b6248198cb687a9cbbeba3bfb9c37c4b5.zip |
refactor: remove TupleLike
* Directly transform VIATRA tuples into Refinery tuples, since creating
the additional wrapper object doesn't save any memory.
* Adds static arity Tuple3 and Tuple4 implementations to be more
aligned with VIATRA internals and save memory for queries with up to
4 parameters.
* Makes sure no new objects are allocated (for varargs handling) when a
static arity tuple is hashed.
Diffstat (limited to 'subprojects/store-reasoning/src')
2 files changed, 6 insertions, 5 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java index 80bfa6f8..7c51e3df 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java | |||
@@ -1,9 +1,9 @@ | |||
1 | package tools.refinery.store.reasoning.rule; | 1 | package tools.refinery.store.reasoning.rule; |
2 | 2 | ||
3 | import tools.refinery.store.reasoning.MergeResult; | 3 | import tools.refinery.store.reasoning.MergeResult; |
4 | import tools.refinery.store.tuple.TupleLike; | 4 | import tools.refinery.store.tuple.Tuple; |
5 | 5 | ||
6 | @FunctionalInterface | 6 | @FunctionalInterface |
7 | public interface RuleActionExecutor { | 7 | public interface RuleActionExecutor { |
8 | MergeResult execute(TupleLike activationTuple); | 8 | MergeResult execute(Tuple activationTuple); |
9 | } | 9 | } |
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java index 1e5322b4..c20645fc 100644 --- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java | |||
@@ -1,8 +1,8 @@ | |||
1 | package tools.refinery.store.reasoning.rule; | 1 | package tools.refinery.store.reasoning.rule; |
2 | 2 | ||
3 | import tools.refinery.store.reasoning.MergeResult; | ||
4 | import tools.refinery.store.model.Model; | 3 | import tools.refinery.store.model.Model; |
5 | import tools.refinery.store.tuple.TupleLike; | 4 | import tools.refinery.store.reasoning.MergeResult; |
5 | import tools.refinery.store.tuple.Tuple; | ||
6 | 6 | ||
7 | import java.util.List; | 7 | import java.util.List; |
8 | 8 | ||
@@ -24,7 +24,8 @@ public final class RuleExecutor { | |||
24 | public Model getModel() { | 24 | public Model getModel() { |
25 | return model; | 25 | return model; |
26 | } | 26 | } |
27 | public MergeResult execute(TupleLike activationTuple) { | 27 | |
28 | public MergeResult execute(Tuple activationTuple) { | ||
28 | MergeResult mergeResult = MergeResult.UNCHANGED; | 29 | MergeResult mergeResult = MergeResult.UNCHANGED; |
29 | for (var actionExecutor : actionExecutors) { | 30 | for (var actionExecutor : actionExecutors) { |
30 | mergeResult = mergeResult.andAlso(actionExecutor.execute(activationTuple)); | 31 | mergeResult = mergeResult.andAlso(actionExecutor.execute(activationTuple)); |