@@ -51,67 +51,67 @@ pub mut:
5151 type_size_stack map [int ]bool
5252 type_align_stack map [int ]bool
5353 // Lookup caches for O(1) name resolution
54- func_by_name map [string ]int // function name → index in g.mod.funcs
55- global_by_name map [string ]int // global name → index in g.mod.globals
54+ func_by_name map [string ]int // function name → index in g.mod.funcs
55+ global_by_name map [string ]int // global name → index in g.mod.globals
5656 // Per-function cache for alloca pointer analysis (cleared per function)
5757 alloca_ptr_cache map [int ]u8 // alloca_id → 1=has_ptrs, 2=no_ptrs
5858 // Cached environment variables for debug tracing (read once at init)
59- env_dump_funcrefs string
60- env_trace_skip_dead string
61- env_dump_stackmap string
62- env_dump_blocks string
63- env_trace_paramspill string
64- env_trace_val string
65- env_trace_instr string
66- env_trace_cmp string
67- env_trace_store string
68- env_trace_load string
69- env_trace_call string
70- env_trace_ret string
71- env_trace_bitcast string
72- env_trace_assign string
73- env_trace_extract string
59+ env_dump_funcrefs string
60+ env_trace_skip_dead string
61+ env_dump_stackmap string
62+ env_dump_blocks string
63+ env_trace_paramspill string
64+ env_trace_val string
65+ env_trace_instr string
66+ env_trace_cmp string
67+ env_trace_store string
68+ env_trace_load string
69+ env_trace_call string
70+ env_trace_ret string
71+ env_trace_bitcast string
72+ env_trace_assign string
73+ env_trace_extract string
7474 env_trace_struct_init string
75- env_trace_agg_copy string
76- env_trace_insert string
77- env_trace_callcount string
78- env_trace_callarg string
75+ env_trace_agg_copy string
76+ env_trace_insert string
77+ env_trace_callcount string
78+ env_trace_callarg string
7979 env_trace_struct_addr string
80- env_trace_strlit string
81- env_trace_storeval string
80+ env_trace_strlit string
81+ env_trace_storeval string
8282}
8383
8484pub fn Gen .new (mod & mir.Module) & Gen {
8585 return & Gen{
86- mod: mod
87- macho: MachOObject.new ()
88- type_size_cache: map [int ]int {}
89- type_align_cache: map [int ]int {}
90- type_size_stack: map [int ]bool {}
91- type_align_stack: map [int ]bool {}
92- env_dump_funcrefs: os.getenv ('V2_ARM64_DUMP_FUNCREFS' )
93- env_trace_skip_dead: os.getenv ('V2_ARM64_TRACE_SKIP_DEAD' )
94- env_dump_stackmap: os.getenv ('V2_ARM64_DUMP_STACKMAP' )
95- env_dump_blocks: os.getenv ('V2_ARM64_DUMP_BLOCKS' )
96- env_trace_paramspill: os.getenv ('V2_ARM64_TRACE_PARAMSPILL' )
97- env_trace_val: os.getenv ('V2_ARM64_TRACE_VAL' )
98- env_trace_instr: os.getenv ('V2_ARM64_TRACE_INSTR' )
99- env_trace_cmp: os.getenv ('V2_ARM64_TRACE_CMP' )
100- env_trace_store: os.getenv ('V2_ARM64_TRACE_STORE' )
101- env_trace_load: os.getenv ('V2_ARM64_TRACE_LOAD' )
102- env_trace_call: os.getenv ('V2_ARM64_TRACE_CALL' )
103- env_trace_ret: os.getenv ('V2_ARM64_TRACE_RET' )
104- env_trace_bitcast: os.getenv ('V2_ARM64_TRACE_BITCAST' )
105- env_trace_assign: os.getenv ('V2_ARM64_TRACE_ASSIGN' )
106- env_trace_extract: os.getenv ('V2_ARM64_TRACE_EXTRACT' )
86+ mod: mod
87+ macho: MachOObject.new ()
88+ type_size_cache: map [int ]int {}
89+ type_align_cache: map [int ]int {}
90+ type_size_stack: map [int ]bool {}
91+ type_align_stack: map [int ]bool {}
92+ env_dump_funcrefs: os.getenv ('V2_ARM64_DUMP_FUNCREFS' )
93+ env_trace_skip_dead: os.getenv ('V2_ARM64_TRACE_SKIP_DEAD' )
94+ env_dump_stackmap: os.getenv ('V2_ARM64_DUMP_STACKMAP' )
95+ env_dump_blocks: os.getenv ('V2_ARM64_DUMP_BLOCKS' )
96+ env_trace_paramspill: os.getenv ('V2_ARM64_TRACE_PARAMSPILL' )
97+ env_trace_val: os.getenv ('V2_ARM64_TRACE_VAL' )
98+ env_trace_instr: os.getenv ('V2_ARM64_TRACE_INSTR' )
99+ env_trace_cmp: os.getenv ('V2_ARM64_TRACE_CMP' )
100+ env_trace_store: os.getenv ('V2_ARM64_TRACE_STORE' )
101+ env_trace_load: os.getenv ('V2_ARM64_TRACE_LOAD' )
102+ env_trace_call: os.getenv ('V2_ARM64_TRACE_CALL' )
103+ env_trace_ret: os.getenv ('V2_ARM64_TRACE_RET' )
104+ env_trace_bitcast: os.getenv ('V2_ARM64_TRACE_BITCAST' )
105+ env_trace_assign: os.getenv ('V2_ARM64_TRACE_ASSIGN' )
106+ env_trace_extract: os.getenv ('V2_ARM64_TRACE_EXTRACT' )
107107 env_trace_struct_init: os.getenv ('V2_ARM64_TRACE_STRUCT_INIT' )
108- env_trace_agg_copy: os.getenv ('V2_ARM64_TRACE_AGG_COPY' )
109- env_trace_insert: os.getenv ('V2_ARM64_TRACE_INSERT' )
110- env_trace_callcount: os.getenv ('V2_ARM64_TRACE_CALLCOUNT' )
111- env_trace_callarg: os.getenv ('V2_ARM64_TRACE_CALLARG' )
108+ env_trace_agg_copy: os.getenv ('V2_ARM64_TRACE_AGG_COPY' )
109+ env_trace_insert: os.getenv ('V2_ARM64_TRACE_INSERT' )
110+ env_trace_callcount: os.getenv ('V2_ARM64_TRACE_CALLCOUNT' )
111+ env_trace_callarg: os.getenv ('V2_ARM64_TRACE_CALLARG' )
112112 env_trace_struct_addr: os.getenv ('V2_ARM64_TRACE_STRUCT_ADDR' )
113- env_trace_strlit: os.getenv ('V2_ARM64_TRACE_STRLIT' )
114- env_trace_storeval: os.getenv ('V2_ARM64_TRACE_STOREVAL' )
113+ env_trace_strlit: os.getenv ('V2_ARM64_TRACE_STRLIT' )
114+ env_trace_storeval: os.getenv ('V2_ARM64_TRACE_STOREVAL' )
115115 }
116116}
117117
@@ -147,7 +147,6 @@ pub fn (mut g Gen) gen() {
147147 g.gen_func (func)
148148 }
149149
150-
151150 // Add return-zero stub for unresolved symbols.
152151 // When the linker can't resolve a symbol, it redirects calls here instead of
153152 // letting them jump to the Mach-O header which corrupts memory.
@@ -262,7 +261,8 @@ fn (mut g Gen) gen_func(func mir.Function) {
262261 g.x8_save_offset = 0
263262 g.mark_sumtype_data_heap_allocas (func)
264263 g.allocate_registers (func)
265- if g.env_dump_funcrefs.len > 0 && (g.env_dump_funcrefs == '*' || func.name == g.env_dump_funcrefs) {
264+ if g.env_dump_funcrefs.len > 0
265+ && (g.env_dump_funcrefs == '*' || func.name == g.env_dump_funcrefs) {
266266 eprintln ('ARM64 FUNCREFS fn=${func .name } begin' )
267267 for i, vv in g.mod.values {
268268 if vv.kind != .func_ref {
@@ -543,7 +543,8 @@ fn (mut g Gen) gen_func(func mir.Function) {
543543
544544 g.stack_size = (slot_offset + 16 ) & ~ 0xF
545545
546- if g.env_dump_stackmap.len > 0 && (g.env_dump_stackmap == '*' || func.name == g.env_dump_stackmap) {
546+ if g.env_dump_stackmap.len > 0
547+ && (g.env_dump_stackmap == '*' || func.name == g.env_dump_stackmap) {
547548 eprintln ('ARM64 FRAME ${func .name } stack_size=${g .stack_size } x8_save_offset=${g .x8_save_offset }' )
548549 eprintln ('ARM64 STACKMAP ${func .name } begin' )
549550 for vid, off in g.stack_map {
0 commit comments