From 0d401efd086ba503e5d2300b8838fad7fb95ded7 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Tue, 23 Jul 2019 14:01:25 +0200 Subject: As evaluation if now fully left to right and lazy and short ciruited, no need for special eager leftmost node. --- .../java/com/yahoo/document/select/ResultList.java | 6 +++--- .../java/com/yahoo/document/select/rule/LogicNode.java | 18 ++---------------- 2 files changed, 5 insertions(+), 19 deletions(-) (limited to 'document/src/main/java/com') diff --git a/document/src/main/java/com/yahoo/document/select/ResultList.java b/document/src/main/java/com/yahoo/document/select/ResultList.java index 432e86a6c78..35b4a1ef5be 100644 --- a/document/src/main/java/com/yahoo/document/select/ResultList.java +++ b/document/src/main/java/com/yahoo/document/select/ResultList.java @@ -116,11 +116,11 @@ public class ResultList { return true; } - public interface GetResultList { + public interface LazyResultList { ResultList getResult(); } - public ResultList combineAND(GetResultList other) + public ResultList combineAND(LazyResultList other) { if (Result.FALSE == toResult()) return ResultList.toResultList(false); @@ -150,7 +150,7 @@ public class ResultList { return Result.INVALID; } - public ResultList combineOR(GetResultList other) + public ResultList combineOR(LazyResultList other) { if (Result.TRUE == toResult()) return ResultList.toResultList(true); diff --git a/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java b/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java index e22a56f6e9a..804dda5741d 100644 --- a/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java +++ b/document/src/main/java/com/yahoo/document/select/rule/LogicNode.java @@ -169,8 +169,7 @@ public class LogicNode implements ExpressionNode { combineValues(buf); } } - ValueItem next = new LazyValueItem(item, context); - buf.push(buf.empty() ? new EagerValueItem(next.getOperator(), next.getResult()) : next); + buf.push(new LazyValueItem(item, context)); } while (buf.size() > 1) { combineValues(buf); @@ -247,7 +246,7 @@ public class LogicNode implements ExpressionNode { /** * Private class to store results in a stack. */ - private abstract class ValueItem implements ResultList.GetResultList { + private abstract class ValueItem implements ResultList.LazyResultList { private final int operator; ValueItem(int operator) { this.operator = operator; @@ -302,19 +301,6 @@ public class LogicNode implements ExpressionNode { } } - private final class EagerValueItem extends ValueItem { - private final ResultList value; - - EagerValueItem(int operator, ResultList value) { - super(operator); - this.value = value; - } - @Override - public ResultList getResult() { - return value; - } - } - /** * Private class to store bucket sets in a stack. */ -- cgit v1.2.3