You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2019/12/10 09:39:33 UTC
[royale-asjs] branch develop updated: The most significant memory
optimization to date
This is an automated email from the ASF dual-hosted git repository.
harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 6664fb4 The most significant memory optimization to date
6664fb4 is described below
commit 6664fb4bb5308b376ba269635a48e63ba729ba7b
Author: Harbs <ha...@in-tools.com>
AuthorDate: Tue Dec 10 11:29:15 2019 +0200
The most significant memory optimization to date
---
frameworks/projects/XML/src/main/royale/XML.as | 55 ++++++++++++----------
.../projects/XML/src/main/royale/XMLAttribute.as | 6 ++-
frameworks/projects/XML/src/main/royale/XMLText.as | 5 +-
3 files changed, 37 insertions(+), 29 deletions(-)
diff --git a/frameworks/projects/XML/src/main/royale/XML.as b/frameworks/projects/XML/src/main/royale/XML.as
index 3becc31..9df4b14 100644
--- a/frameworks/projects/XML/src/main/royale/XML.as
+++ b/frameworks/projects/XML/src/main/royale/XML.as
@@ -560,7 +560,9 @@ package
private static var _defaultNS:String;
private static var _internal:Boolean;
-
+ /**
+ * @royaleignorecoercion XML
+ */
public function XML(xml:* = null)
{
// _origStr = xml;
@@ -583,24 +585,21 @@ package
_value = '';
}
}
-
- Object.defineProperty(this,"0",
- {
- "get": _zeroIndexGetter,
- "set": _zeroIndexSetter,
- enumerable: true,
- configurable: true
- }
- );
- }
-
- private function _zeroIndexGetter():XML {
- return this;
- }
- private function _zeroIndexSetter():void {
- //do nothing
+ if(!_class_initialized)
+ {
+ Object.defineProperty(XML.prototype,"0",
+ {
+ "get": function():XML{return this as XML},
+ "set": function():void{},
+ enumerable: true,
+ configurable: true
+ }
+ );
+ _class_initialized = true;
+ }
}
-
+
+ private static var _class_initialized:Boolean = false;
private static const xmlRegEx:RegExp = /&(?![\w]+;)/g;
private static const isWhitespace:RegExp = /^\s+$/;
@@ -672,9 +671,8 @@ package
foundCount = 1; //top level root tag wins
if (foundCount != 0) {
- //reset any earlier settings
- delete this._nodeKind;
- delete this._value;
+ //reset any earlier settings\
+ resetNodeKind();
}
_name = getQName(node.localName,node.prefix,node.namespaceURI,false);
_internal = true;
@@ -740,7 +738,11 @@ package
if (foundCount > 1) throw new TypeError('Error #1088: The markup in the document following the root element must be well-formed.');
}
-
+ protected function resetNodeKind():void{
+ delete this._nodeKind;
+ delete this._value;
+ delete this._name;
+ }
protected var _children:Array;
protected var _attributes:Array;
private var _parent:XML;
@@ -898,7 +900,7 @@ package
if (lastChild && lastChild.getNodeRef() == ELEMENT) {
const wrapper:XML = new XML();
- delete wrapper._nodeKind;
+ wrapper.resetNodeKind();
child = new XML(child.toString());
wrapper.setName(lastChild.name());
child.setParent(wrapper);
@@ -1161,9 +1163,12 @@ package
*/
var i:int;
var xml:XML = new XML();
+ xml.resetNodeKind();
xml.setNodeKind(getNodeKindInternal());
xml.setName(name());
- xml.setValue(_value);
+ if(_value){
+ xml.setValue(_value);
+ }
var len:int;
len = namespaceLength();
for(i=0;i<len;i++)
@@ -1743,7 +1748,7 @@ package
return _name? _name.localName : null;
}
- private var _name:QName;
+ protected var _name:QName;
/**
* Gives the qualified name for the XML object.
diff --git a/frameworks/projects/XML/src/main/royale/XMLAttribute.as b/frameworks/projects/XML/src/main/royale/XMLAttribute.as
index 84dcf2e..8a26c1f 100644
--- a/frameworks/projects/XML/src/main/royale/XMLAttribute.as
+++ b/frameworks/projects/XML/src/main/royale/XMLAttribute.as
@@ -22,7 +22,8 @@ package
{
public function XMLAttribute()
{
-
+ super();
+ resetNodeKind();
}
override protected function getNodeRef():String{
return "a";
@@ -32,7 +33,8 @@ package
var i:int;
var xml:XML = new XMLAttribute();
xml.setName(name());
- xml.setValue(_value);
+ if(_value)xml.setValue(_value);
+
var len:int;
len = namespaceLength();
for(i=0;i<len;i++)
diff --git a/frameworks/projects/XML/src/main/royale/XMLText.as b/frameworks/projects/XML/src/main/royale/XMLText.as
index bcbeb6c..a2f47ed 100644
--- a/frameworks/projects/XML/src/main/royale/XMLText.as
+++ b/frameworks/projects/XML/src/main/royale/XMLText.as
@@ -22,7 +22,8 @@ package
{
public function XMLText()
{
-
+ super();
+ resetNodeKind();
}
override protected function getNodeRef():String{
return "t";
@@ -33,7 +34,7 @@ package
var i:int;
var xml:XML = new XMLText();
xml.setName(name());
- xml.setValue(_value);
+ if(_value)xml.setValue(_value);
var len:int;
len = namespaceLength();
for(i=0;i<len;i++)