Selaa lähdekoodia

optimize static calls

Simon Krajewski 1 vuosi sitten
vanhempi
commit
ced9eb1e13
2 muutettua tiedostoa jossa 12 lisäystä ja 0 poistoa
  1. 7 0
      src/compiler/hxb/hxbReader.ml
  2. 5 0
      src/compiler/hxb/hxbWriter.ml

+ 7 - 0
src/compiler/hxb/hxbReader.ml

@@ -1129,6 +1129,13 @@ class hxb_reader
 						let s = self#read_string in
 						TField(e1,FDynamic s)
 
+					| 110 ->
+						let p = self#read_pos in
+						let c = self#read_class_ref in
+						let cf = self#read_field_ref in
+						let e1 = Texpr.Builder.make_static_this c p in
+						TField(e1,FStatic(c,cf))
+
 					(* module types 120-139 *)
 					| 120 -> TTypeExpr (TClassDecl self#read_class_ref)
 					| 121 -> TTypeExpr (TEnumDecl self#read_enum_ref)

+ 5 - 0
src/compiler/hxb/hxbWriter.ml

@@ -1420,6 +1420,11 @@ class hxb_writer
 				self#write_class_ref c;
 				self#write_types tl;
 				self#write_field_ref c CfrMember cf;
+			| TField({eexpr = TTypeExpr (TClassDecl c'); epos = p1},FStatic(c,cf)) when c == c' ->
+				self#write_texpr_byte 110;
+				self#write_pos p1;
+				self#write_class_ref c;
+				self#write_field_ref c CfrStatic cf;
 			| TField(e1,FStatic(c,cf)) ->
 				self#write_texpr_byte 103;
 				loop e1;