Преглед на файлове

optimize empty array allocation (singleton)

Nicolas Cannasse преди 3 години
родител
ревизия
498b92c2b7
променени са 1 файла, в които са добавени 4 реда и са изтрити 0 реда
  1. 4 0
      src/std/array.c

+ 4 - 0
src/std/array.c

@@ -22,6 +22,10 @@
 #include <hl.h>
 
 HL_PRIM varray *hl_alloc_array( hl_type *at, int size ) {
+	if( size == 0 && at->kind == HDYN ) {
+		static varray empty_array = { &hlt_array, &hlt_dyn };
+		return &empty_array;
+	}
 	int esize = hl_type_size(at);
 	varray *a;
 	if( size < 0 ) hl_error("Invalid array size");