Browse Source

[php] optimize haxe.io.Bytes.fill

Aleksandr Kuzmenko 5 years ago
parent
commit
0dcb143a2f
2 changed files with 7 additions and 3 deletions
  1. 3 3
      std/php/_std/haxe/io/Bytes.hx
  2. 4 0
      std/php/_std/haxe/io/BytesData.hx

+ 3 - 3
std/php/_std/haxe/io/Bytes.hx

@@ -23,6 +23,7 @@
 package haxe.io;
 
 import php.Global;
+import php.Syntax;
 
 class Bytes {
 	public var length(default, null):Int;
@@ -50,9 +51,8 @@ class Bytes {
 		}
 	}
 
-	public function fill(pos:Int, len:Int, value:Int):Void {
-		for (i in pos...pos + len)
-			b.set(i, value);
+	public inline function fill(pos:Int, len:Int, value:Int):Void {
+		b.fill(pos, len, value);
 	}
 
 	public inline function sub(pos:Int, len:Int):Bytes {

+ 4 - 0
std/php/_std/haxe/io/BytesData.hx

@@ -68,6 +68,10 @@ private abstract BytesDataAbstract(Container) from Container to Container {
 		this.s = Global.substr(this.s, 0, pos).concat(Global.substr(src, srcpos, len)).concat(Global.substr(this.s, pos + len));
 	}
 
+	public inline function fill(pos:Int, len:Int, value:Int):Void {
+		this.s = Global.substr(this.s, 0, pos).concat(Global.str_repeat(Global.chr(value), len)).concat(Global.substr(this.s, pos + len));
+	}
+
 	inline function get_length():Int {
 		return Global.strlen(this.s);
 	}