From e083edab93520df1c816f4515819fcc5fa09fe9b Mon Sep 17 00:00:00 2001 From: Taku Kudo Date: Tue, 25 Feb 2025 05:36:36 +0000 Subject: [PATCH] Moves shared config and request in setter. This reduces unnecessary reference counting. PiperOrigin-RevId: 730718096 --- src/composer/composer.cc | 23 ++++++++++++----------- src/composer/composer.h | 3 ++- src/composer/composer_test.cc | 2 -- src/composer/internal/char_chunk.cc | 4 ++-- src/composer/internal/composition.cc | 4 ++-- src/composer/internal/composition.h | 3 ++- src/engine/engine_converter.cc | 12 ++++++------ src/session/ime_context.cc | 6 +++--- src/session/session.cc | 6 +++--- 9 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/composer/composer.cc b/src/composer/composer.cc index f6490412e..1ececa6bb 100644 --- a/src/composer/composer.cc +++ b/src/composer/composer.cc @@ -581,7 +581,8 @@ Composer::Composer() Composer::Composer(std::shared_ptr request, std::shared_ptr config) - : Composer(Table::GetSharedDefaultTable(), request, config) {} + : Composer(Table::GetSharedDefaultTable(), std::move(request), + std::move(config)) {} Composer::Composer(commands::Request request, config::Config config) : Composer(Table::GetSharedDefaultTable(), std::move(request), @@ -589,7 +590,7 @@ Composer::Composer(commands::Request request, config::Config config) Composer::Composer(std::shared_ptr table, commands::Request request, config::Config config) - : Composer(table, + : Composer(std::move(table), std::make_shared(std::move(request)), std::make_shared(std::move(config))) {} @@ -602,16 +603,16 @@ Composer::Composer(std::shared_ptr table, comeback_input_mode_(transliteration::HIRAGANA), input_field_type_(commands::Context::NORMAL), shifted_sequence_count_(0), - composition_(table), max_length_(kMaxPreeditLength), - request_(request), - config_(config), - table_(table), + request_(std::move(request)), + config_(std::move(config)), + table_(std::move(table)), + composition_(table_), is_new_input_(true) { DCHECK(request_); DCHECK(config_); - SetInputMode(transliteration::HIRAGANA); DCHECK(table_); + SetInputMode(transliteration::HIRAGANA); Reset(); } @@ -646,19 +647,19 @@ void Composer::ReloadConfig() { bool Composer::Empty() const { return (GetLength() == 0); } void Composer::SetTable(std::shared_ptr table) { - table_ = table; - DCHECK(table_); + DCHECK(table); + table_ = std::move(table); composition_.SetTable(table_); } void Composer::SetRequest(std::shared_ptr request) { DCHECK(request); - request_ = request; + request_ = std::move(request); } void Composer::SetConfig(std::shared_ptr config) { DCHECK(config); - config_ = config; + config_ = std::move(config); } void Composer::SetInputMode(transliteration::TransliterationType mode) { diff --git a/src/composer/composer.h b/src/composer/composer.h index f0c4e3fbd..bbbcb4abf 100644 --- a/src/composer/composer.h +++ b/src/composer/composer.h @@ -395,7 +395,6 @@ class Composer final { commands::Context::InputFieldType input_field_type_; size_t shifted_sequence_count_; - Composition composition_; // The original text for the composition. The value is usually // empty, and used for reverse conversion. @@ -414,6 +413,8 @@ class Composer final { // to use std::shared_ptr for shared object. std::shared_ptr table_; + Composition composition_; + // Timestamp of last modified. int64_t timestamp_msec_ = 0; diff --git a/src/composer/composer_test.cc b/src/composer/composer_test.cc index 7902edceb..f0bb099aa 100644 --- a/src/composer/composer_test.cc +++ b/src/composer/composer_test.cc @@ -116,8 +116,6 @@ class ComposerTest : public ::testing::Test { void TearDown() override { CharacterFormManager::GetCharacterFormManager()->SetDefaultRule(); - composer_.reset(); - table_.reset(); } std::unique_ptr composer_; diff --git a/src/composer/internal/char_chunk.cc b/src/composer/internal/char_chunk.cc index 36e533e3e..d037c6b5d 100644 --- a/src/composer/internal/char_chunk.cc +++ b/src/composer/internal/char_chunk.cc @@ -113,13 +113,13 @@ bool GetFromPending(const Table *table, const absl::string_view key, CharChunk::CharChunk(Transliterators::Transliterator transliterator, std::shared_ptr table) - : table_(table), transliterator_(transliterator) { + : table_(std::move(table)), transliterator_(transliterator) { DCHECK(table_); DCHECK_NE(transliterator, Transliterators::LOCAL); } CharChunk::CharChunk(Transliterators::Transliterator transliterator) - : table_(Table::GetSharedDefaultTable()), transliterator_(transliterator) { + : CharChunk(transliterator, Table::GetSharedDefaultTable()) { DCHECK_NE(transliterator, Transliterators::LOCAL); } diff --git a/src/composer/internal/composition.cc b/src/composer/internal/composition.cc index e0ee51cff..b054a1172 100644 --- a/src/composer/internal/composition.cc +++ b/src/composer/internal/composition.cc @@ -446,8 +446,8 @@ void Composition::SetInputMode(Transliterators::Transliterator transliterator) { } void Composition::SetTable(std::shared_ptr table) { - table_ = table; - DCHECK(table_); + DCHECK(table); + table_ = std::move(table); } bool Composition::IsToggleable(size_t position) const { diff --git a/src/composer/internal/composition.h b/src/composer/internal/composition.h index b0397a9da..1b0b9c93f 100644 --- a/src/composer/internal/composition.h +++ b/src/composer/internal/composition.h @@ -58,7 +58,8 @@ enum TrimMode { class Composition final { public: Composition() = default; - explicit Composition(std::shared_ptr table) : table_(table) { + explicit Composition(std::shared_ptr table) + : table_(std::move(table)) { DCHECK(table_); } diff --git a/src/engine/engine_converter.cc b/src/engine/engine_converter.cc index 67909620a..e6a21e556 100644 --- a/src/engine/engine_converter.cc +++ b/src/engine/engine_converter.cc @@ -121,17 +121,17 @@ EngineConverter::EngineConverter( segment_index_(0), result_(), candidate_list_(true), - request_(request), + request_(std::move(request)), state_(COMPOSITION), request_type_(ConversionRequest::CONVERSION), client_revision_(0), candidate_list_visible_(false) { - DCHECK(request); + DCHECK(request_); DCHECK(config); conversion_preferences_.use_history = true; conversion_preferences_.request_suggestion = true; - candidate_list_.set_page_size(request->candidate_page_size()); - SetConfig(config); + candidate_list_.set_page_size(request_->candidate_page_size()); + SetConfig(std::move(config)); } bool EngineConverter::CheckState( @@ -1639,13 +1639,13 @@ void EngineConverter::FillIncognitoCandidateWords( void EngineConverter::SetRequest( std::shared_ptr request) { DCHECK(request); - request_ = request; + request_ = std::move(request); candidate_list_.set_page_size(request_->candidate_page_size()); } void EngineConverter::SetConfig(std::shared_ptr config) { DCHECK(config); - config_ = config; + config_ = std::move(config); updated_command_ = Segment::Candidate::DEFAULT_COMMAND; selection_shortcut_ = config_->selection_shortcut(); use_cascading_window_ = config_->use_cascading_window(); diff --git a/src/session/ime_context.cc b/src/session/ime_context.cc index 1190a4544..a834c0340 100644 --- a/src/session/ime_context.cc +++ b/src/session/ime_context.cc @@ -84,7 +84,7 @@ ImeContext::ImeContext(const ImeContext &src) : data_(src.data_) { void ImeContext::SetRequest(std::shared_ptr request) { DCHECK(request); - data_.request = request; + data_.request = std::move(request); if (converter_) { converter_->SetRequest(data_.request); } @@ -97,7 +97,7 @@ const commands::Request &ImeContext::GetRequest() const { void ImeContext::SetConfig(std::shared_ptr config) { DCHECK(config); - data_.config = config; + data_.config = std::move(config); if (converter_) { converter_->SetConfig(data_.config); @@ -112,7 +112,7 @@ const config::Config &ImeContext::GetConfig() const { return *data_.config; } void ImeContext::SetKeyMapManager( std::shared_ptr key_map_manager) { DCHECK(key_map_manager); - data_.key_map_manager = key_map_manager; + data_.key_map_manager = std::move(key_map_manager); } const keymap::KeyMapManager &ImeContext::GetKeyMapManager() const { diff --git a/src/session/session.cc b/src/session/session.cc index 6f492317d..d7a283f84 100644 --- a/src/session/session.cc +++ b/src/session/session.cc @@ -1154,19 +1154,19 @@ void Session::SetTable(std::shared_ptr table) { return; } ClearUndoContext(); - context_->mutable_composer()->SetTable(table); + context_->mutable_composer()->SetTable(std::move(table)); } void Session::SetConfig(std::shared_ptr config) { DCHECK(config); ClearUndoContext(); - context_->SetConfig(config); + context_->SetConfig(std::move(config)); } void Session::SetRequest(std::shared_ptr request) { DCHECK(request); ClearUndoContext(); - context_->SetRequest(request); + context_->SetRequest(std::move(request)); } void Session::SetKeyMapManager(