2
0
Эх сурвалжийг харах

Replace many uses of `heap_allocator()` with `permanent_allocator()`

gingerBill 3 жил өмнө
parent
commit
042dbda47f

+ 1 - 1
src/check_expr.cpp

@@ -4954,7 +4954,7 @@ Entity **populate_proc_parameter_list(CheckerContext *c, Type *proc_type, isize
 		} else {
 			lhs_count = pt->params->Tuple.variables.count;
 		}
-		lhs = gb_alloc_array(heap_allocator(), Entity *, lhs_count);
+		lhs = gb_alloc_array(permanent_allocator(), Entity *, lhs_count);
 		for (isize i = 0; i < lhs_count; i++) {
 			Entity *e = pt->params->Tuple.variables[i];
 			if (!is_type_polymorphic(e->type)) {

+ 6 - 6
src/check_type.cpp

@@ -2233,8 +2233,8 @@ Type *make_soa_struct_internal(CheckerContext *ctx, Ast *array_typ_expr, Ast *el
 		field_count = 0;
 
 		soa_struct = alloc_type_struct();
-		soa_struct->Struct.fields = slice_make<Entity *>(heap_allocator(), field_count+extra_field_count);
-		soa_struct->Struct.tags = gb_alloc_array(heap_allocator(), String, field_count+extra_field_count);
+		soa_struct->Struct.fields = slice_make<Entity *>(permanent_allocator(), field_count+extra_field_count);
+		soa_struct->Struct.tags = gb_alloc_array(permanent_allocator(), String, field_count+extra_field_count);
 		soa_struct->Struct.node = array_typ_expr;
 		soa_struct->Struct.soa_kind = soa_kind;
 		soa_struct->Struct.soa_elem = elem;
@@ -2248,8 +2248,8 @@ Type *make_soa_struct_internal(CheckerContext *ctx, Ast *array_typ_expr, Ast *el
 		field_count = cast(isize)old_array->Array.count;
 
 		soa_struct = alloc_type_struct();
-		soa_struct->Struct.fields = slice_make<Entity *>(heap_allocator(), field_count+extra_field_count);
-		soa_struct->Struct.tags = gb_alloc_array(heap_allocator(), String, field_count+extra_field_count);
+		soa_struct->Struct.fields = slice_make<Entity *>(permanent_allocator(), field_count+extra_field_count);
+		soa_struct->Struct.tags = gb_alloc_array(permanent_allocator(), String, field_count+extra_field_count);
 		soa_struct->Struct.node = array_typ_expr;
 		soa_struct->Struct.soa_kind = soa_kind;
 		soa_struct->Struct.soa_elem = elem;
@@ -2293,8 +2293,8 @@ Type *make_soa_struct_internal(CheckerContext *ctx, Ast *array_typ_expr, Ast *el
 		field_count = old_struct->Struct.fields.count;
 
 		soa_struct = alloc_type_struct();
-		soa_struct->Struct.fields = slice_make<Entity *>(heap_allocator(), field_count+extra_field_count);
-		soa_struct->Struct.tags = gb_alloc_array(heap_allocator(), String, field_count+extra_field_count);
+		soa_struct->Struct.fields = slice_make<Entity *>(permanent_allocator(), field_count+extra_field_count);
+		soa_struct->Struct.tags = gb_alloc_array(permanent_allocator(), String, field_count+extra_field_count);
 		soa_struct->Struct.node = array_typ_expr;
 		soa_struct->Struct.soa_kind = soa_kind;
 		soa_struct->Struct.soa_elem = elem;

+ 1 - 1
src/exact_value.cpp

@@ -832,7 +832,7 @@ ExactValue exact_binary_operator_value(TokenKind op, ExactValue x, ExactValue y)
 		String sx = x.value_string;
 		String sy = y.value_string;
 		isize len = sx.len+sy.len;
-		u8 *data = gb_alloc_array(heap_allocator(), u8, len);
+		u8 *data = gb_alloc_array(permanent_allocator(), u8, len);
 		gb_memmove(data,        sx.text, sx.len);
 		gb_memmove(data+sx.len, sy.text, sy.len);
 		return exact_value_string(make_string(data, len));

+ 6 - 6
src/llvm_abi.cpp

@@ -82,7 +82,7 @@ LLVMTypeRef lb_function_type_to_llvm_ptr(lbFunctionType *ft, bool is_var_arg) {
 	GB_ASSERT_MSG(ret != nullptr, "%d", ft->ret.kind);
 
 	unsigned maximum_arg_count = offset+arg_count;
-	LLVMTypeRef *args = gb_alloc_array(heap_allocator(), LLVMTypeRef, maximum_arg_count);
+	LLVMTypeRef *args = gb_alloc_array(permanent_allocator(), LLVMTypeRef, maximum_arg_count);
 	if (offset == 1) {
 		GB_ASSERT(ft->ret.kind == lbArg_Indirect);
 		args[0] = LLVMPointerType(ft->ret.type, 0);
@@ -300,7 +300,7 @@ namespace lbAbi386 {
 	lbArgType compute_return_type(LLVMContextRef c, LLVMTypeRef return_type, bool return_is_defined);
 
 	LB_ABI_INFO(abi_info) {
-		lbFunctionType *ft = gb_alloc_item(heap_allocator(), lbFunctionType);
+		lbFunctionType *ft = gb_alloc_item(permanent_allocator(), lbFunctionType);
 		ft->ctx = c;
 		ft->args = compute_arg_types(c, arg_types, arg_count);
 		ft->ret = compute_return_type(c, return_type, return_is_defined);
@@ -378,7 +378,7 @@ namespace lbAbiAmd64Win64 {
 
 
 	LB_ABI_INFO(abi_info) {
-		lbFunctionType *ft = gb_alloc_item(heap_allocator(), lbFunctionType);
+		lbFunctionType *ft = gb_alloc_item(permanent_allocator(), lbFunctionType);
 		ft->ctx = c;
 		ft->args = compute_arg_types(c, arg_types, arg_count);
 		ft->ret = lbAbi386::compute_return_type(c, return_type, return_is_defined);
@@ -469,7 +469,7 @@ namespace lbAbiAmd64SysV {
 	LLVMTypeRef llreg(LLVMContextRef c, Array<RegClass> const &reg_classes);
 
 	LB_ABI_INFO(abi_info) {
-		lbFunctionType *ft = gb_alloc_item(heap_allocator(), lbFunctionType);
+		lbFunctionType *ft = gb_alloc_item(permanent_allocator(), lbFunctionType);
 		ft->ctx = c;
 		ft->calling_convention = calling_convention;
 
@@ -849,7 +849,7 @@ namespace lbAbiArm64 {
 	bool is_homogenous_aggregate(LLVMContextRef c, LLVMTypeRef type, LLVMTypeRef *base_type_, unsigned *member_count_);
 
 	LB_ABI_INFO(abi_info) {
-		lbFunctionType *ft = gb_alloc_item(heap_allocator(), lbFunctionType);
+		lbFunctionType *ft = gb_alloc_item(permanent_allocator(), lbFunctionType);
 		ft->ctx = c;
 		ft->ret = compute_return_type(c, return_type, return_is_defined);
 		ft -> args = compute_arg_types(c, arg_types, arg_count);
@@ -1034,7 +1034,7 @@ LB_ABI_INFO(lb_get_abi_info) {
 	case ProcCC_None:
 	case ProcCC_InlineAsm:
 		{
-			lbFunctionType *ft = gb_alloc_item(heap_allocator(), lbFunctionType);
+			lbFunctionType *ft = gb_alloc_item(permanent_allocator(), lbFunctionType);
 			ft->ctx = c;
 			ft->args = array_make<lbArgType>(heap_allocator(), arg_count);
 			for (unsigned i = 0; i < arg_count; i++) {

+ 1 - 1
src/llvm_backend.cpp

@@ -1687,7 +1687,7 @@ void lb_generate_code(lbGenerator *gen) {
 			array_add(&gen->output_object_paths, filepath_obj);
 			array_add(&gen->output_temp_paths, filepath_ll);
 
-			auto *wd = gb_alloc_item(heap_allocator(), lbLLVMEmitWorker);
+			auto *wd = gb_alloc_item(permanent_allocator(), lbLLVMEmitWorker);
 			wd->target_machine = target_machines[j];
 			wd->code_gen_file_type = code_gen_file_type;
 			wd->filepath_obj = filepath_obj;

+ 2 - 2
src/llvm_backend_general.cpp

@@ -1789,7 +1789,7 @@ LLVMTypeRef lb_type_internal(lbModule *m, Type *type) {
 			defer (m->internal_type_level -= 1);
 
 			LLVMTypeRef ret = nullptr;
-			LLVMTypeRef *params = gb_alloc_array(heap_allocator(), LLVMTypeRef, param_count);
+			LLVMTypeRef *params = gb_alloc_array(permanent_allocator(), LLVMTypeRef, param_count);
 			if (type->Proc.result_count != 0) {
 				Type *single_ret = reduce_tuple_to_single_type(type->Proc.results);
 				ret = lb_type(m, single_ret);
@@ -1883,7 +1883,7 @@ LLVMTypeRef lb_type_internal(lbModule *m, Type *type) {
 			LLVMTypeRef base_integer = lb_type_internal(m, type->RelativeSlice.base_integer);
 
 			unsigned field_count = 2;
-			LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count);
+			LLVMTypeRef *fields = gb_alloc_array(permanent_allocator(), LLVMTypeRef, field_count);
 			fields[0] = base_integer;
 			fields[1] = base_integer;
 			return LLVMStructTypeInContext(ctx, fields, field_count, false);

+ 4 - 6
src/parser.cpp

@@ -1196,7 +1196,7 @@ CommentGroup *consume_comment_group(AstFile *f, isize n, isize *end_line_) {
 
 	CommentGroup *comments = nullptr;
 	if (list.count > 0) {
-		comments = gb_alloc_item(heap_allocator(), CommentGroup);
+		comments = gb_alloc_item(permanent_allocator(), CommentGroup);
 		comments->list = slice_from_array(list);
 		array_add(&f->comments, comments);
 	}
@@ -4727,8 +4727,6 @@ void destroy_ast_file(AstFile *f) {
 	array_free(&f->tokens);
 	array_free(&f->comments);
 	array_free(&f->imports);
-	gb_free(heap_allocator(), f->tokenizer.fullpath.text);
-	destroy_tokenizer(&f->tokenizer);
 }
 
 bool init_parser(Parser *p) {
@@ -4795,7 +4793,7 @@ WORKER_TASK_PROC(parser_worker_proc) {
 void parser_add_file_to_process(Parser *p, AstPackage *pkg, FileInfo fi, TokenPos pos) {
 	// TODO(bill): Use a better allocator
 	ImportedFile f = {pkg, fi, pos, p->file_to_process_count++};
-	auto wd = gb_alloc_item(heap_allocator(), ParserWorkerData);
+	auto wd = gb_alloc_item(permanent_allocator(), ParserWorkerData);
 	wd->parser = p;
 	wd->imported_file = f;
 	global_thread_pool_add_task(parser_worker_proc, wd);
@@ -4833,7 +4831,7 @@ WORKER_TASK_PROC(foreign_file_worker_proc) {
 void parser_add_foreign_file_to_process(Parser *p, AstPackage *pkg, AstForeignFileKind kind, FileInfo fi, TokenPos pos) {
 	// TODO(bill): Use a better allocator
 	ImportedFile f = {pkg, fi, pos, p->file_to_process_count++};
-	auto wd = gb_alloc_item(heap_allocator(), ForeignFileWorkerData);
+	auto wd = gb_alloc_item(permanent_allocator(), ForeignFileWorkerData);
 	wd->parser = p;
 	wd->imported_file = f;
 	wd->foreign_kind = kind;
@@ -4854,7 +4852,7 @@ AstPackage *try_add_import_path(Parser *p, String const &path, String const &rel
 	string_set_add(&p->imported_files, path);
 
 
-	AstPackage *pkg = gb_alloc_item(heap_allocator(), AstPackage);
+	AstPackage *pkg = gb_alloc_item(permanent_allocator(), AstPackage);
 	pkg->kind = kind;
 	pkg->fullpath = path;
 	array_init(&pkg->files, heap_allocator());

+ 2 - 8
src/tokenizer.cpp

@@ -371,7 +371,7 @@ void begin_error_block(void) {
 void end_error_block(void) {
 	if (global_error_collector.error_buffer.count > 0) {
 		isize n = global_error_collector.error_buffer.count;
-		u8 *text = gb_alloc_array(heap_allocator(), u8, n+1);
+		u8 *text = gb_alloc_array(permanent_allocator(), u8, n+1);
 		gb_memmove(text, global_error_collector.error_buffer.data, n);
 		text[n] = 0;
 		String s = {text, n};
@@ -404,7 +404,7 @@ ERROR_OUT_PROC(default_error_out_va) {
 	} else {
 		mutex_lock(&global_error_collector.error_out_mutex);
 		{
-			u8 *text = gb_alloc_array(heap_allocator(), u8, n+1);
+			u8 *text = gb_alloc_array(permanent_allocator(), u8, n+1);
 			gb_memmove(text, buf, n);
 			text[n] = 0;
 			array_add(&global_error_collector.errors, make_string(text, n));
@@ -838,12 +838,6 @@ TokenizerInitError init_tokenizer_from_fullpath(Tokenizer *t, String const &full
 	return err;
 }
 
-gb_inline void destroy_tokenizer(Tokenizer *t) {
-	if (t->start != nullptr) {
-		gb_free(heap_allocator(), t->start);
-	}
-}
-
 gb_inline i32 digit_value(Rune r) {
 	switch (r) {
 	case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':