mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-09 20:08:11 +00:00
Increase use of temporary_allocator() where possible
This commit is contained in:
@@ -776,16 +776,16 @@ gb_internal void lb_build_nested_proc(lbProcedure *p, AstProcLit *pd, Entity *e)
|
||||
|
||||
|
||||
|
||||
gb_internal Array<lbValue> lb_value_to_array(lbProcedure *p, lbValue value) {
|
||||
gb_internal Array<lbValue> lb_value_to_array(lbProcedure *p, gbAllocator const &allocator, lbValue value) {
|
||||
Array<lbValue> array = {};
|
||||
Type *t = base_type(value.type);
|
||||
if (t == nullptr) {
|
||||
// Do nothing
|
||||
} else if (is_type_tuple(t)) {
|
||||
array = array_make<lbValue>(permanent_allocator(), 0, t->Tuple.variables.count);
|
||||
array = array_make<lbValue>(allocator, 0, t->Tuple.variables.count);
|
||||
lb_append_tuple_values(p, &array, value);
|
||||
} else {
|
||||
array = array_make<lbValue>(permanent_allocator(), 1);
|
||||
array = array_make<lbValue>(allocator, 1);
|
||||
array[0] = value;
|
||||
}
|
||||
return array;
|
||||
@@ -1175,15 +1175,15 @@ gb_internal lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> c
|
||||
case DeferredProcedure_none:
|
||||
break;
|
||||
case DeferredProcedure_in:
|
||||
result_as_args = in_args;
|
||||
result_as_args = array_clone(heap_allocator(), in_args);
|
||||
break;
|
||||
case DeferredProcedure_out:
|
||||
result_as_args = lb_value_to_array(p, result);
|
||||
result_as_args = lb_value_to_array(p, heap_allocator(), result);
|
||||
break;
|
||||
case DeferredProcedure_in_out:
|
||||
{
|
||||
auto out_args = lb_value_to_array(p, result);
|
||||
array_init(&result_as_args, permanent_allocator(), in_args.count + out_args.count);
|
||||
auto out_args = lb_value_to_array(p, heap_allocator(), result);
|
||||
array_init(&result_as_args, heap_allocator(), in_args.count + out_args.count);
|
||||
array_copy(&result_as_args, in_args, 0);
|
||||
array_copy(&result_as_args, out_args, in_args.count);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user