aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/src')
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node.h22
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h31
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_release_listener.h2
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_nodes_cache.h9
-rw-r--r--native/jni/src/suggest/core/result/suggestions_output_utils.cpp1
-rw-r--r--native/jni/src/suggest/core/suggest.cpp2
6 files changed, 20 insertions, 47 deletions
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index 3118cdfa3..258aa9ce3 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -83,14 +83,6 @@ class DicNode {
#if DEBUG_DICT
DicNodeProfiler mProfiler;
#endif
- //////////////////
- // Memory utils //
- //////////////////
- AK_FORCE_INLINE static void managedDelete(DicNode *node) {
- node->remove();
- }
- // end
- /////////////////
AK_FORCE_INLINE DicNode()
:
@@ -158,7 +150,7 @@ class DicNode {
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
}
- AK_FORCE_INLINE void remove() {
+ AK_FORCE_INLINE void finalize() {
mIsUsed = false;
if (mReleaseListener) {
mReleaseListener->onReleased(this);
@@ -478,17 +470,7 @@ class DicNode {
mReleaseListener = releaseListener;
}
- AK_FORCE_INLINE bool compare(const DicNode *right) {
- if (!isUsed() && !right->isUsed()) {
- // Compare pointer values here for stable comparison
- return this > right;
- }
- if (!isUsed()) {
- return true;
- }
- if (!right->isUsed()) {
- return false;
- }
+ AK_FORCE_INLINE bool compare(const DicNode *right) const {
// Promote exact matches to prevent them from being pruned.
const bool leftExactMatch = ErrorTypeUtils::isExactMatch(getContainedErrorTypes());
const bool rightExactMatch = ErrorTypeUtils::isExactMatch(right->getContainedErrorTypes());
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h b/native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h
index 1f02731a5..213b1b968 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h
@@ -68,15 +68,15 @@ class DicNodePriorityQueue : public DicNodeReleaseListener {
}
setMaxSize(maxSize);
for (int i = 0; i < mCapacity + 1; ++i) {
- mDicNodesBuf[i].remove();
+ mDicNodesBuf[i].finalize();
mDicNodesBuf[i].setReleaseListener(this);
- mUnusedNodeIndices[i] = i == mCapacity ? NOT_A_NODE_ID : static_cast<int>(i) + 1;
+ mUnusedNodeIndices[i] = (i == mCapacity) ? NOT_A_NODE_ID : (i + 1);
}
mNextUnusedNodeId = 0;
}
// Copy
- AK_FORCE_INLINE DicNode *copyPush(DicNode *dicNode) {
+ AK_FORCE_INLINE DicNode *copyPush(const DicNode *const dicNode) {
return copyPush(dicNode, mMaxSize);
}
@@ -89,11 +89,11 @@ class DicNodePriorityQueue : public DicNodeReleaseListener {
if (dest) {
DicNodeUtils::initByCopy(node, dest);
}
- node->remove();
+ node->finalize();
mDicNodesQueue.pop();
}
- void onReleased(DicNode *dicNode) {
+ void onReleased(const DicNode *dicNode) {
const int index = static_cast<int>(dicNode - &mDicNodesBuf[0]);
if (mUnusedNodeIndices[index] != NOT_A_NODE_ID) {
// it's already released
@@ -118,7 +118,8 @@ class DicNodePriorityQueue : public DicNodeReleaseListener {
DISALLOW_IMPLICIT_CONSTRUCTORS(DicNodePriorityQueue);
static const int NOT_A_NODE_ID = -1;
- AK_FORCE_INLINE static bool compareDicNode(DicNode *left, DicNode *right) {
+ AK_FORCE_INLINE static bool compareDicNode(const DicNode *const left,
+ const DicNode *const right) {
return left->compare(right);
}
@@ -141,10 +142,10 @@ class DicNodePriorityQueue : public DicNodeReleaseListener {
}
AK_FORCE_INLINE void pop() {
- copyPop(0);
+ copyPop(nullptr);
}
- AK_FORCE_INLINE bool betterThanWorstDicNode(DicNode *dicNode) const {
+ AK_FORCE_INLINE bool betterThanWorstDicNode(const DicNode *const dicNode) const {
DicNode *worstNode = mDicNodesQueue.top();
if (!worstNode) {
return true;
@@ -154,7 +155,7 @@ class DicNodePriorityQueue : public DicNodeReleaseListener {
AK_FORCE_INLINE DicNode *searchEmptyDicNode() {
if (mCapacity == 0) {
- return 0;
+ return nullptr;
}
if (mNextUnusedNodeId == NOT_A_NODE_ID) {
AKLOGI("No unused node found.");
@@ -163,7 +164,7 @@ class DicNodePriorityQueue : public DicNodeReleaseListener {
i, mDicNodesBuf[i].isUsed(), mUnusedNodeIndices[i]);
}
ASSERT(false);
- return 0;
+ return nullptr;
}
DicNode *dicNode = &mDicNodesBuf[mNextUnusedNodeId];
markNodeAsUsed(dicNode);
@@ -179,7 +180,7 @@ class DicNodePriorityQueue : public DicNodeReleaseListener {
AK_FORCE_INLINE DicNode *pushPoolNodeWithMaxSize(DicNode *dicNode, const int maxSize) {
if (!dicNode) {
- return 0;
+ return nullptr;
}
if (!isFull(maxSize)) {
mDicNodesQueue.push(dicNode);
@@ -190,16 +191,16 @@ class DicNodePriorityQueue : public DicNodeReleaseListener {
mDicNodesQueue.push(dicNode);
return dicNode;
}
- dicNode->remove();
- return 0;
+ dicNode->finalize();
+ return nullptr;
}
// Copy
- AK_FORCE_INLINE DicNode *copyPush(DicNode *dicNode, const int maxSize) {
+ AK_FORCE_INLINE DicNode *copyPush(const DicNode *const dicNode, const int maxSize) {
return pushPoolNodeWithMaxSize(newDicNode(dicNode), maxSize);
}
- AK_FORCE_INLINE DicNode *newDicNode(DicNode *dicNode) {
+ AK_FORCE_INLINE DicNode *newDicNode(const DicNode *const dicNode) {
DicNode *newNode = searchEmptyDicNode();
if (newNode) {
DicNodeUtils::initByCopy(dicNode, newNode);
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h b/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h
index 2ca4f21bd..c3f432951 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h
@@ -27,7 +27,7 @@ class DicNodeReleaseListener {
public:
DicNodeReleaseListener() {}
virtual ~DicNodeReleaseListener() {}
- virtual void onReleased(DicNode *dicNode) = 0;
+ virtual void onReleased(const DicNode *dicNode) = 0;
private:
DISALLOW_COPY_AND_ASSIGN(DicNodeReleaseListener);
};
diff --git a/native/jni/src/suggest/core/dicnode/dic_nodes_cache.h b/native/jni/src/suggest/core/dicnode/dic_nodes_cache.h
index d4769e739..6b8dc8c96 100644
--- a/native/jni/src/suggest/core/dicnode/dic_nodes_cache.h
+++ b/native/jni/src/suggest/core/dicnode/dic_nodes_cache.h
@@ -100,14 +100,7 @@ class DicNodesCache {
}
AK_FORCE_INLINE void copyPushNextActive(DicNode *dicNode) {
- DicNode *pushedDicNode = mNextActiveDicNodes->copyPush(dicNode);
- if (!pushedDicNode) {
- if (dicNode->isCached()) {
- dicNode->remove();
- }
- // We simply drop any dic node that was not cached, ignoring the slim chance
- // that one of its children represents what the user really wanted.
- }
+ mNextActiveDicNodes->copyPush(dicNode);
}
void popTerminal(DicNode *dest) {
diff --git a/native/jni/src/suggest/core/result/suggestions_output_utils.cpp b/native/jni/src/suggest/core/result/suggestions_output_utils.cpp
index b40f3226f..d07f5ca41 100644
--- a/native/jni/src/suggest/core/result/suggestions_output_utils.cpp
+++ b/native/jni/src/suggest/core/result/suggestions_output_utils.cpp
@@ -131,7 +131,6 @@ const int SuggestionsOutputUtils::MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT = 16;
true /* forceCommit */, boostExactMatches) : finalScore;
outputShortcuts(&shortcutIt, shortcutBaseScore, sameAsTyped, outSuggestionResults);
}
- DicNode::managedDelete(terminalDicNode);
}
scoringPolicy->getMostProbableString(traverseSession, languageWeight, outSuggestionResults);
}
diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp
index 2ea6452af..303182cf4 100644
--- a/native/jni/src/suggest/core/suggest.cpp
+++ b/native/jni/src/suggest/core/suggest.cpp
@@ -265,7 +265,6 @@ void Suggest::processExpandedDicNode(
traverseSession->getDicTraverseCache()->copyPushNextActive(dicNode);
}
}
- DicNode::managedDelete(dicNode);
}
void Suggest::processDicNodeAsMatch(DicTraverseSession *traverseSession,
@@ -388,7 +387,6 @@ void Suggest::processDicNodeAsTransposition(DicTraverseSession *traverseSession,
processExpandedDicNode(traverseSession, childDicNode2);
}
}
- DicNode::managedDelete(childDicNodes1[i]);
}
}