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 2024/05/26 21:27:40 UTC

(royale-asjs) branch develop updated: Add index to XMLList prototype instead of instances. This prevents GC thrashing

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 a8fb592a5f Add index to XMLList prototype instead of instances. This prevents GC thrashing
a8fb592a5f is described below

commit a8fb592a5f622356cde9e63f4b944e9cef25baa3
Author: Harbs <ha...@in-tools.com>
AuthorDate: Mon May 27 00:27:33 2024 +0300

    Add index to XMLList prototype instead of instances. This prevents GC thrashing
---
 frameworks/projects/XML/src/main/royale/XMLList.as | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/frameworks/projects/XML/src/main/royale/XMLList.as b/frameworks/projects/XML/src/main/royale/XMLList.as
index 324f53d054..b15d37b708 100644
--- a/frameworks/projects/XML/src/main/royale/XMLList.as
+++ b/frameworks/projects/XML/src/main/royale/XMLList.as
@@ -171,7 +171,7 @@ package
 			return target;
 		}
         
-		private var _xmlArray:Array = [];
+		protected var _xmlArray:Array = [];
 		/*
 			9.2.1.2 [[Put]] (P, V)
 			Overview
@@ -256,14 +256,16 @@ package
 		private function addIndex(idx:int):void
 		{
 			var idxStr:String = "" + idx;
-			Object.defineProperty(this,idxStr,
+			if(idxStr in XMLList.prototype)
+				return;
+			Object.defineProperty(XMLList.prototype,idxStr,
 				{
-					"get": function():* { return _xmlArray[idx]; },
+					"get": function():* { return this._xmlArray[idx]; },
 					"set": function(newValue:*):void {
-						if(idx >= _xmlArray.length)
-							append(newValue);
+						if(idx >= this._xmlArray.length)
+							this.append(newValue);
 						else
-							replaceChildAt(idx,newValue);
+							this.replaceChildAt(idx,newValue);
 					},
 					enumerable: true,
 					configurable: true
@@ -976,7 +978,7 @@ package
 					child.parent().removeChild(child);
 			}
 		}
-		private function replaceChildAt(idx:int,child:*):void
+		protected function replaceChildAt(idx:int,child:*):void
 		{
 			var i:int;
 			var childToReplace:XML = _xmlArray[idx];