authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-08-04 18:26:37-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-08-04 18:26:37-04:00
log042914de75f7ccf520fb2058372cc3f255ccfecb
treecbed26ee42e2ee0934c153df2f51614aeb9b7201
parentfa30ebfbe5949fc63aee9853d66932facfd1d168
signature Commit is signed but in an unrecognized format.

move state from ZigFn to CodeGen to save memory


2 files changed, 4 insertions(+), 4 deletions(-)

src/all_types.hpp+1-1
...@@ -1399,7 +1399,6 @@ struct ZigFn {...@@ -1399,7 +1399,6 @@ struct ZigFn {
1399 ZigList<IrInstructionCallGen *> call_list;1399 ZigList<IrInstructionCallGen *> call_list;
14001400
1401 LLVMValueRef valgrind_client_request_array;1401 LLVMValueRef valgrind_client_request_array;
1402 LLVMBasicBlockRef preamble_llvm_block;
14031402
1404 FnInline fn_inline;1403 FnInline fn_inline;
1405 FnAnalState anal_state;1404 FnAnalState anal_state;
...@@ -1719,6 +1718,7 @@ struct CodeGen {...@@ -1719,6 +1718,7 @@ struct CodeGen {
1719 LLVMValueRef cur_async_switch_instr;1718 LLVMValueRef cur_async_switch_instr;
1720 LLVMValueRef cur_async_resume_index_ptr;1719 LLVMValueRef cur_async_resume_index_ptr;
1721 LLVMValueRef cur_async_awaiter_ptr;1720 LLVMValueRef cur_async_awaiter_ptr;
1721 LLVMBasicBlockRef cur_preamble_llvm_block;
1722 LLVMValueRef cur_err_ret_trace_val_arg;1722 LLVMValueRef cur_err_ret_trace_val_arg;
1723 LLVMValueRef cur_err_ret_trace_val_stack;1723 LLVMValueRef cur_err_ret_trace_val_stack;
1724 LLVMValueRef memcpy_fn_val;1724 LLVMValueRef memcpy_fn_val;
src/codegen.cpp+3-3
...@@ -5221,7 +5221,7 @@ static LLVMValueRef ir_render_await(CodeGen *g, IrExecutable *executable, IrInst...@@ -5221,7 +5221,7 @@ static LLVMValueRef ir_render_await(CodeGen *g, IrExecutable *executable, IrInst
5221 // We either got here from Entry (function call) or from the switch above5221 // We either got here from Entry (function call) or from the switch above
5222 LLVMValueRef spilled_result_ptr = LLVMBuildPhi(g->builder, usize_type_ref, "");5222 LLVMValueRef spilled_result_ptr = LLVMBuildPhi(g->builder, usize_type_ref, "");
5223 LLVMValueRef incoming_values[] = { LLVMGetParam(g->cur_fn_val, 1), result_ptr_as_usize };5223 LLVMValueRef incoming_values[] = { LLVMGetParam(g->cur_fn_val, 1), result_ptr_as_usize };
5224 LLVMBasicBlockRef incoming_blocks[] = { g->cur_fn->preamble_llvm_block, predecessor_bb };5224 LLVMBasicBlockRef incoming_blocks[] = { g->cur_preamble_llvm_block, predecessor_bb };
5225 LLVMAddIncoming(spilled_result_ptr, incoming_values, incoming_blocks, 2);5225 LLVMAddIncoming(spilled_result_ptr, incoming_values, incoming_blocks, 2);
52265226
5227 if (ir_want_runtime_safety(g, &instruction->base)) {5227 if (ir_want_runtime_safety(g, &instruction->base)) {
...@@ -6428,7 +6428,7 @@ static void build_all_basic_blocks(CodeGen *g, ZigFn *fn) {...@@ -6428,7 +6428,7 @@ static void build_all_basic_blocks(CodeGen *g, ZigFn *fn) {
6428 LLVMBasicBlockRef first_bb = nullptr;6428 LLVMBasicBlockRef first_bb = nullptr;
6429 if (fn_is_async(fn)) {6429 if (fn_is_async(fn)) {
6430 first_bb = LLVMAppendBasicBlock(fn_val, "AsyncSwitch");6430 first_bb = LLVMAppendBasicBlock(fn_val, "AsyncSwitch");
6431 fn->preamble_llvm_block = first_bb;6431 g->cur_preamble_llvm_block = first_bb;
6432 }6432 }
6433 for (size_t block_i = 0; block_i < executable->basic_block_list.length; block_i += 1) {6433 for (size_t block_i = 0; block_i < executable->basic_block_list.length; block_i += 1) {
6434 IrBasicBlock *bb = executable->basic_block_list.at(block_i);6434 IrBasicBlock *bb = executable->basic_block_list.at(block_i);
...@@ -6771,7 +6771,7 @@ static void do_code_gen(CodeGen *g) {...@@ -6771,7 +6771,7 @@ static void do_code_gen(CodeGen *g) {
6771 LLVMPositionBuilderAtEnd(g->builder, bad_resume_block);6771 LLVMPositionBuilderAtEnd(g->builder, bad_resume_block);
6772 gen_assertion_scope(g, PanicMsgIdBadResume, fn_table_entry->child_scope);6772 gen_assertion_scope(g, PanicMsgIdBadResume, fn_table_entry->child_scope);
67736773
6774 LLVMPositionBuilderAtEnd(g->builder, fn_table_entry->preamble_llvm_block);6774 LLVMPositionBuilderAtEnd(g->builder, g->cur_preamble_llvm_block);
6775 render_async_spills(g);6775 render_async_spills(g);
6776 g->cur_async_awaiter_ptr = LLVMBuildStructGEP(g->builder, g->cur_ret_ptr, coro_awaiter_index, "");6776 g->cur_async_awaiter_ptr = LLVMBuildStructGEP(g->builder, g->cur_ret_ptr, coro_awaiter_index, "");
6777 LLVMValueRef resume_index_ptr = LLVMBuildStructGEP(g->builder, g->cur_ret_ptr, coro_resume_index, "");6777 LLVMValueRef resume_index_ptr = LLVMBuildStructGEP(g->builder, g->cur_ret_ptr, coro_resume_index, "");