浏览代码

added magic identifiers.

Nicolas Cannasse 19 年之前
父节点
当前提交
019468a9fa
共有 1 个文件被更改,包括 17 次插入1 次删除
  1. 17 1
      genswf8.ml

+ 17 - 1
genswf8.ml

@@ -91,7 +91,8 @@ let stack_delta = function
 	| ADeleteObj | AInstanceOf | ACast -> -1
 	| ADeleteObj | AInstanceOf | ACast -> -1
 	| AExtends | AImplements -> -2
 	| AExtends | AImplements -> -2
 	| AEnum2 | ATrace | AThrow -> -1
 	| AEnum2 | ATrace | AThrow -> -1
-	| AIncrement | ADecrement | AChr | AOrd | ARandom | ADelete | AGetTimer | ATypeOf | ATargetPath -> 0
+	| AGetTimer -> 1
+	| AIncrement | ADecrement | AChr | AOrd | ARandom | ADelete | ATypeOf | ATargetPath -> 0
 	| AObjCall | ACall | ANewMethod -> assert false
 	| AObjCall | ACall | ANewMethod -> assert false
 	| AStringPool _ -> 0
 	| AStringPool _ -> 0
 	| op -> failwith ("Unknown stack delta for " ^ (ActionScript.action_string (fun _ -> "") 0 op))
 	| op -> failwith ("Unknown stack delta for " ^ (ActionScript.action_string (fun _ -> "") 0 op))
@@ -753,6 +754,21 @@ and gen_call ctx e el =
 	| TLocal "__typeof__" , [e] ->
 	| TLocal "__typeof__" , [e] ->
 		gen_expr ctx true e;
 		gen_expr ctx true e;
 		write ctx ATypeOf
 		write ctx ATypeOf
+	| TLocal "__random__" , [e] ->
+		gen_expr ctx true e;
+		write ctx ARandom
+	| TLocal "__trace__" , [e] ->
+		gen_expr ctx true e;
+		write ctx ATrace
+	| TLocal "__eval__" , [e] ->
+		gen_expr ctx true e;
+		write ctx AEval
+	| TLocal "__gettimer__", [] ->
+		write ctx AGetTimer
+	| TLocal "__geturl__" , url :: target :: post ->
+		gen_expr ctx true url;
+		gen_expr ctx true target;
+		write ctx (AGetURL2 (match post with [] -> 0 | [{ eexpr = TConst (TString "GET") }] -> 1 | _ -> 2))
 	| TLocal "__new__", e :: el ->
 	| TLocal "__new__", e :: el ->
 		let nargs = List.length el in
 		let nargs = List.length el in
 		List.iter (gen_expr ctx true) el;
 		List.iter (gen_expr ctx true) el;