cgen: add support for `-printfn _vcleanup` and `-printfn _vinit`

pull/5020/head
Delyan Angelov 2020-05-25 09:47:00 +03:00
parent 656bc6b6c8
commit 6683f98eba
1 changed files with 8 additions and 0 deletions

View File

@ -2475,6 +2475,7 @@ fn (mut g Gen) write_init_function() {
if g.pref.is_liveshared { if g.pref.is_liveshared {
return return
} }
fn_vinit_start_pos := g.out.len
g.writeln('void _vinit() {') g.writeln('void _vinit() {')
g.writeln('\tbuiltin_init();') g.writeln('\tbuiltin_init();')
g.writeln('\tvinit_string_literals();') g.writeln('\tvinit_string_literals();')
@ -2488,7 +2489,11 @@ fn (mut g Gen) write_init_function() {
} }
} }
g.writeln('}') g.writeln('}')
if g.pref.printfn_list.len > 0 && '_vinit' in g.pref.printfn_list {
println(g.out.after(fn_vinit_start_pos))
}
if g.autofree { if g.autofree {
fn_vcleanup_start_pos := g.out.len
g.writeln('void _vcleanup() {') g.writeln('void _vcleanup() {')
// g.writeln('puts("cleaning up...");') // g.writeln('puts("cleaning up...");')
if g.is_importing_os() { if g.is_importing_os() {
@ -2497,6 +2502,9 @@ fn (mut g Gen) write_init_function() {
} }
g.writeln('array_free(&_const_strconv__ftoa__powers_of_10);') g.writeln('array_free(&_const_strconv__ftoa__powers_of_10);')
g.writeln('}') g.writeln('}')
if g.pref.printfn_list.len > 0 && '_vcleanup' in g.pref.printfn_list {
println(g.out.after(fn_vcleanup_start_pos))
}
} }
} }