소스 검색

Fix size overflow when tracking alloc

TothBenoit 2 주 전
부모
커밋
123b20cdcc
1개의 변경된 파일7개의 추가작업 그리고 7개의 파일을 삭제
  1. 7 7
      h3d/impl/MemoryManager.hx

+ 7 - 7
h3d/impl/MemoryManager.hx

@@ -4,20 +4,20 @@ typedef StackStats = {
 	var stats: Array<TextureStat>;
 	var stats: Array<TextureStat>;
 	var stack : String;
 	var stack : String;
 	var count : Int;
 	var count : Int;
-	var size : Int;
+	var size : Float;
 }
 }
 
 
 typedef AllocStats = {
 typedef AllocStats = {
 	var position : String;
 	var position : String;
 	var count : Int;
 	var count : Int;
 	var tex : Bool;
 	var tex : Bool;
-	var size : Int;
+	var size : Float;
 	var stacks : Array<StackStats>;
 	var stacks : Array<StackStats>;
 }
 }
 
 
 typedef TextureStat = {
 typedef TextureStat = {
 	var name: String;
 	var name: String;
-	var size: Int;
+	var size: Float;
 }
 }
 
 
 class MemoryManager {
 class MemoryManager {
@@ -263,7 +263,7 @@ class MemoryManager {
 	public function allocStats() : Array<AllocStats> {
 	public function allocStats() : Array<AllocStats> {
 		var h = new Map();
 		var h = new Map();
 		var all = [];
 		var all = [];
-		inline function addStack( name: String, a : hxd.impl.AllocPos, stacks : Array<StackStats>, size : Int ) {
+		inline function addStack( name: String, a : hxd.impl.AllocPos, stacks : Array<StackStats>, size : Float ) {
 			var stackStr = a.stack.join("\n");
 			var stackStr = a.stack.join("\n");
 			for( s in stacks )
 			for( s in stacks )
 				if( s.stack == stackStr ) {
 				if( s.stack == stackStr ) {
@@ -281,7 +281,7 @@ class MemoryManager {
 			var key = "$"+t.allocPos.position;
 			var key = "$"+t.allocPos.position;
 			var inf = h.get(key);
 			var inf = h.get(key);
 			if( inf == null ) {
 			if( inf == null ) {
-				inf = { position : t.allocPos.position, count : 0, size : 0, tex : true, stacks : [] };
+				inf = { position : t.allocPos.position, count : 0, size : 0.0, tex : true, stacks : [] };
 				h.set(key, inf);
 				h.set(key, inf);
 				all.push(inf);
 				all.push(inf);
 			}
 			}
@@ -296,7 +296,7 @@ class MemoryManager {
 			var key = b.allocPos.position;
 			var key = b.allocPos.position;
 			var inf = h.get(key);
 			var inf = h.get(key);
 			if( inf == null ) {
 			if( inf == null ) {
-				inf = { position : key, count : 0, size : 0, tex : false, stacks : [] };
+				inf = { position : key, count : 0, size : 0.0, tex : false, stacks : [] };
 				h.set(key, inf);
 				h.set(key, inf);
 				all.push(inf);
 				all.push(inf);
 			}
 			}
@@ -305,7 +305,7 @@ class MemoryManager {
 			inf.size += size;
 			inf.size += size;
 			addStack("buffer", b.allocPos, inf.stacks, size);
 			addStack("buffer", b.allocPos, inf.stacks, size);
 		}
 		}
-		all.sort(function(a, b) return b.size - a.size);
+		all.sort(function(a, b) return a.size > b.size ? 1 : ( a.size < b.size ? -1 : 0 ));
 		return all;
 		return all;
 	}
 	}
 }
 }