Files
Sprinter-SDCC/docs/size_baseline.tsv
T
snark13 5de2f06cfb libbgi: тривиальные аксессоры → inline в заголовках (17 модулей удалено)
setcolor/getcolor/setbkcolor/getbkcolor/getmaxx/getmaxy/getmaxcolor/
getx/gety/moveto/moverel/setfillstyle/graphresult (graphics.h) и
gfx_get_bank/gfx_set_bank/gfx_get_draw_page/gfx_get_visible_page
(gfx.h) определены inline в публичных заголовках; state-переменные
объявлены там же (хранилище прежнее — _bgi_state.c/_gfx_state.c).

Именно `inline` БЕЗ static: проверено артефактами (.asm) — SDCC 4.5
инлайнит вызов при всех наших флагах (--opt-code-size/--opt-code-speed/
--max-allocs) и не эмитит standalone-тело; `static inline` эмитил бы
мёртвую копию каждого аксессора в КАЖДЫЙ включивший модуль.  Отказ
инлайнить = громкая ошибка линковки (все 47 программ слинковались).

Экономия ~30-40Т на вызов, минус 17 .rel; по _CODE размер-нейтрально
(сайт вызова ≈ телу).  size_baseline: bgitest +267/accfill +528 — это
НЕ inline, а run-рендер текста из ba09c0b (draw_scaled потянул
vspan_raw+vfill256 и сам вырос) — цена за ~2-6× скорость текста.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 21:21:26 +03:00

703 B

1# Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update
2accfill3963
3argv3431
4assrtest3847
5attrprob4091
6banked1056
7bankedbg1067
8banklocl4832
9banktest3767
10bgi_img5931
11bgitest4053
12bios_text4470
13cat915
14cblstream6277
15cbltest6407
16cblwav6486
17conio4634
18conio23946
19dec_test860
20errno6216
21fbench9040
22fdmax6337
23filetest11624
24gets509
25gfx_dbuf4770
26gfx_demo4261
27hello4176
28hello24251
29irqtest5881
30ls4919
31malloc4462
32mdview19122
33mdview227029
34mem_test4558
35mouse4394
36openenv6127
37ptime5896
38rt_test4906
39seek4177
40simple963
41solidt12381
42stattest7700
43stdlib6643
44stest23644
45strtest1340
46text_palette5039
47timedir5471
48winrest4481