Repository: flex-asjs Updated Branches: refs/heads/develop b00b22470 -> 28457a58f
improved efficiency of ObjectMap Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/28457a58 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/28457a58 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/28457a58 Branch: refs/heads/develop Commit: 28457a58f652ae32b1bbcac4555230a31a50c63c Parents: b00b224 Author: Harbs <[email protected]> Authored: Mon Feb 13 11:28:30 2017 +0200 Committer: Harbs <[email protected]> Committed: Mon Feb 13 11:28:30 2017 +0200 ---------------------------------------------------------------------- .../flex/org/apache/flex/utils/ObjectMap.as | 100 +++++++++++-------- 1 file changed, 57 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/28457a58/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ObjectMap.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ObjectMap.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ObjectMap.as index 917ac47..0091535 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ObjectMap.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/ObjectMap.as @@ -43,10 +43,14 @@ package org.apache.flex.utils if(weak) { if(typeof WeakMap == "function") + { _map = new WeakMap(); + assignFunctions(); + } else if(typeof Map == "function")//Map is supported, fall back to that { _map = new Map(); + assignFunctions(); _weak = false; } else @@ -56,11 +60,15 @@ package org.apache.flex.utils } } else if(typeof Map == "function") + { _map = new Map(); + assignFunctions(); + } else { _map = {}; _usesObjects = true; + assignFunctions(); } } @@ -68,6 +76,7 @@ package org.apache.flex.utils private var _weak:Boolean; private var _map:Object; private var _usesObjects:Boolean = false; + COMPILE::SWF public function delete(key:Object):void { @@ -96,65 +105,64 @@ package org.apache.flex.utils } COMPILE::JS - public function delete(key:Object):void { - if(_usesObjects) - delete _map[key]; - else { - _map.delete(key); - } + public var get:Function = objectGet; + public var set:Function = objectSet; + public var has:Function = objectHas; + public var delete:Function = objectDelete; } COMPILE::JS - public function get(key:Object):* + private function assignFunctions():void { - if(_usesObjects) + this.get = _map.get; + this.has = _map.has; + this.set = _map.set; + this.delete = _map.delete; + } + + COMPILE::JS + private function objectDelete(key:Object):void + { + delete _map[key]; + } + COMPILE::JS + private function objectGet(key:Object):* + { + switch(key.constructor) { - switch(key.constructor) - { - case Number: - case String: - return _map[key]; - case Object: - if(key.object_map_uid) - return _map[key["object_map_uid"]]; - else - return undefined; - default: + case Number: + case String: + return _map[key]; + case Object: + if(key.object_map_uid) + return _map[key["object_map_uid"]]; + else return undefined; - } + default: + return undefined; } - else - return _map.get(key); } COMPILE::JS - public function has(key:Object):Boolean + private function objectHas(key:Object):Boolean { - if(_usesObjects) - return _map[key] === undefined; - else - return _map.has(key); + return _map[key] === undefined; } COMPILE::JS - public function set(key:Object,value:*):void + private function objectSet(key:Object,value:*):void { - if(_usesObjects) + switch(key.constructor) { - switch(key.constructor) - { - case Number: - case String: - _map[key] = value; - case Object: - if(!key.object_map_uid) - key.object_map_uid = UIDUtil.createUID(); - _map[key["object_map_uid"]] = value; - default: - return; - } + case Number: + case String: + _map[key] = value; + case Object: + if(!key.object_map_uid) + key.object_map_uid = UIDUtil.createUID(); + _map[key["object_map_uid"]] = value; + default: + return; } - else - _map.set(key,value); } COMPILE::JS public function clear():void @@ -162,9 +170,15 @@ package org.apache.flex.utils if(_usesObjects) _map = {}; else if(_weak) + { _map = new WeakMap(); + assignFunctions(); + } else + { _map = new Map(); + assignFunctions(); + } } }
