From 6683c2fb2ce19845b505e45bc2ca343cd8c6f91d Mon Sep 17 00:00:00 2001 From: Denis Pikalov Date: Wed, 21 May 2025 17:51:01 +0300 Subject: [PATCH 1/3] Fix RecycledIdRegistry Signed-off-by: Denis Pikalov Change-Id: Iee8e21bff3fcfc88dcda5ad63b5b3e653cc5e9b0 --- .../state_mgmt/src/lib/v2/v2_recycle_pool.ts | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/v2/v2_recycle_pool.ts b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/v2/v2_recycle_pool.ts index fd3b5854ddb..e7c301a3a57 100644 --- a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/v2/v2_recycle_pool.ts +++ b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/v2/v2_recycle_pool.ts @@ -123,13 +123,8 @@ class RecyclePoolV2 { * for recycling purposes. */ class RecycledIdRegistry { - private fwdMap_: Map; - private revMap_: Map; - - constructor() { - this.fwdMap_ = new Map(); - this.revMap_ = new Map(); - } + private fwdMap_: Map = new Map(); + private revMap_: Map = new Map(); /** * @function delete @@ -139,10 +134,10 @@ class RecyclePoolV2 { * @param {number} key - The element ID to be removed from the map. */ delete(key: number): void { - if (!this.fwdMap_[key]) { + if (!this.fwdMap_.has(key)) { return; } - const rev = this.fwdMap_[key]; + const rev = this.fwdMap_.get(key)!; this.fwdMap_.delete(key); this.revMap_.delete(rev); } @@ -156,7 +151,7 @@ class RecyclePoolV2 { * @returns {number | undefined} - The mapped ID or undefined if no mapping exists. */ get(key: number): number | undefined { - return this.fwdMap_[key] || this.revMap_[key]; + return this.fwdMap_.get(key) ?? this.revMap_.get(key); } /** @@ -167,7 +162,7 @@ class RecyclePoolV2 { * @param {Array} pair - A pair of old and new element IDs to be added to the mapping. */ add(pair: [number, number]): void { - this.fwdMap_[pair[0]] = pair[1]; - this.revMap_[pair[1]] = pair[0]; + this.fwdMap_.set(pair[0], pair[1]); + this.revMap_.set(pair[1], pair[0]); } } \ No newline at end of file -- Gitee From 3fe2d5cddba6c97bd8595d1a8ef90a1892386657 Mon Sep 17 00:00:00 2001 From: Denis Pikalov Date: Thu, 22 May 2025 13:36:28 +0300 Subject: [PATCH 2/3] Fix BidirectionalMap (pu_recycle_manager) Signed-off-by: Denis Pikalov Change-Id: Ibe7c6ee3da581389c9df2cb2e1a5519223c14d68 --- .../lib/partial_update/pu_recycle_manager.ts | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_recycle_manager.ts b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_recycle_manager.ts index 31600ac0e7b..73658692760 100644 --- a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_recycle_manager.ts +++ b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_recycle_manager.ts @@ -77,29 +77,24 @@ class RecycleManager { } class BidirectionalMap { - private fwdMap_: Map = undefined; - private revMap_: Map = undefined; - - constructor() { - this.fwdMap_ = new Map(); - this.revMap_ = new Map(); - } + private fwdMap_: Map = new Map(); + private revMap_: Map = new Map(); delete(key: number) { - if (!this.fwdMap_[key]) { + if (!this.fwdMap_.has(key)) { return; } - const rev = this.fwdMap_[key]; + const rev = this.fwdMap_.get(key)!; this.fwdMap_.delete(key); this.revMap_.delete(rev); } get(key: number): number | undefined { - return this.fwdMap_[key] || this.revMap_[key]; + return this.fwdMap_.get(key) ?? this.revMap_.get(key); } add(pair: [number, number]) { - this.fwdMap_[pair[0]] = pair[1]; - this.revMap_[pair[1]] = pair[0]; + this.fwdMap_.set(pair[0], pair[1]); + this.revMap_.set(pair[1], pair[0]); } } -- Gitee From 2aa37a243e29f36c3b5f96bdf09b0fd91a931bca Mon Sep 17 00:00:00 2001 From: Denis Pikalov Date: Fri, 30 May 2025 12:06:29 +0300 Subject: [PATCH 3/3] Add comments Signed-off-by: Denis Pikalov Change-Id: Ic6f3dcf7bc587399e102927c9e87641bf798885a --- .../src/lib/partial_update/pu_recycle_manager.ts | 8 ++++++++ .../state_mgmt/src/lib/v2/v2_recycle_pool.ts | 3 +++ 2 files changed, 11 insertions(+) diff --git a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_recycle_manager.ts b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_recycle_manager.ts index 73658692760..dc09989a321 100644 --- a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_recycle_manager.ts +++ b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_recycle_manager.ts @@ -76,7 +76,15 @@ class RecycleManager { } } +/** + * @class BidirectionalMap + * @description Maintains a two-way mapping between recycled element IDs and new element IDs, + * allowing add, get, and delete operations. + */ class BidirectionalMap { + // Use TypeScript's Map (not objects) to store pairs + // fwdMap_: key -> value + // revMap_: value -> key private fwdMap_: Map = new Map(); private revMap_: Map = new Map(); diff --git a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/v2/v2_recycle_pool.ts b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/v2/v2_recycle_pool.ts index e7c301a3a57..3c49fd2baeb 100644 --- a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/v2/v2_recycle_pool.ts +++ b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/v2/v2_recycle_pool.ts @@ -123,6 +123,9 @@ class RecyclePoolV2 { * for recycling purposes. */ class RecycledIdRegistry { + // Use TypeScript's Map (not objects) to store pairs + // fwdMap_: key -> value + // revMap_: value -> key private fwdMap_: Map = new Map(); private revMap_: Map = new Map(); -- Gitee