瀏覽代碼

Have $hasOwnProperty and $ObjectPrototypeToString in features.

(Aka, no longer generate always, but only if required).
Luca Deltodesco 12 年之前
父節點
當前提交
9b9db195d2
共有 3 個文件被更改,包括 5 次插入5 次删除
  1. 1 1
      genjs.ml
  2. 3 3
      std/js/_std/Reflect.hx
  3. 1 1
      std/js/_std/Std.hx

+ 1 - 1
genjs.ml

@@ -1153,7 +1153,7 @@ let optimize_stdis tctx equal triple o t recurse =
 	let stringt = tctx.Typecore.com.basic.tstring in
 	let boolt = tctx.Typecore.com.basic.tbool in
 	let intt = tctx.Typecore.com.basic.tint in
-	let tostring t = let pstring = mk_local tctx "$ObjectPrototypeToString" t_dynamic pos in
+	let tostring t = let pstring = (Common.add_feature tctx.Typecore.com "Std.is"; mk_local tctx "$ObjectPrototypeToString" t_dynamic pos) in
 					let pstring = mk (TField (pstring, FDynamic ("call"))) (tfun [o.etype] stringt) pos in
 					let psof = mk (TCall (pstring, [o])) stringt pos in
 					mk (TBinop (equal, psof, (mk (TConst (TString t)) stringt pos))) boolt pos

+ 3 - 3
std/js/_std/Reflect.hx

@@ -24,7 +24,7 @@
 class Reflect {
 
 	public static inline function hasField( o : Dynamic, field : String ) : Bool
-		return untyped __js__("$hasOwnProperty").call(o, field);
+		return untyped __define_feature__("hasOwnProperty", $hasOwnProperty).call(o, field);
 
 	public inline static function field( o : Dynamic, field : String ) : Dynamic untyped {
 		var v = null;
@@ -56,7 +56,7 @@ class Reflect {
 		var a = [];
 		if (o != null) untyped {
 			__js__("for( var f in o ) {");
-			if( f != "__id__" && f != "hx__closures__" && __js__("$hasOwnProperty").call(o, f) ) a.push(f);
+			if( f != "__id__" && f != "hx__closures__" && __define_feature__("hasOwnProperty", $hasOwnProperty).call(o, f) ) a.push(f);
 			__js__("}");
 		}
 		return a;
@@ -111,6 +111,6 @@ class Reflect {
 	}
 
 	static function __init__() : Void {
-		untyped __js__("var $hasOwnProperty = Object.prototype.hasOwnProperty");
+		untyped __feature__("hasOwnProperty", __js__("var $hasOwnProperty = Object.prototype.hasOwnProperty"));
 	}
 }

+ 1 - 1
std/js/_std/Std.hx

@@ -110,7 +110,7 @@ import js.Boot;
 					return a;
 				}
 		);
-        __js__("var $ObjectPrototypeToString = Object.prototype.toString");
+        __feature__("Std.is", __js__("var $ObjectPrototypeToString = Object.prototype.toString"));
 	}
 
 }