浏览代码

[hxb] only write annd once

Rudy Ges 2 年之前
父节点
当前提交
27613e494d
共有 1 个文件被更改,包括 4 次插入4 次删除
  1. 4 4
      src/compiler/hxb/hxbWriter.ml

+ 4 - 4
src/compiler/hxb/hxbWriter.ml

@@ -1523,15 +1523,15 @@ class ['a] hxb_writer
 			(* TODO clean this... currently loops until writing anons doesn't register any new anon *)
 			(* TODO clean this... currently loops until writing anons doesn't register any new anon *)
 			let rec loop written al =
 			let rec loop written al =
 				let len = List.length al in
 				let len = List.length al in
-				(* Printf.eprintf "Write ANND - %d anons registered for %s\n" len (s_type_path current_module.m_path); *)
-
-				self#start_chunk ANND;
-				(* TODO this is wasteful... *)
+				let temp_chunk = new chunk ANND cp in
+				chunk <- temp_chunk;
 				chunk#write_list al (fun an -> self#write_anon m an);
 				chunk#write_list al (fun an -> self#write_anon m an);
 
 
 				let al = anons#to_list in
 				let al = anons#to_list in
 				let new_len = List.length al in
 				let new_len = List.length al in
 				if len = new_len then begin
 				if len = new_len then begin
+					DynArray.add chunks temp_chunk;
+
 					self#start_chunk ANNR;
 					self#start_chunk ANNR;
 					chunk#write_uleb128 len;
 					chunk#write_uleb128 len;
 				end else loop len al;
 				end else loop len al;