[git commit] *: add NOINLINEs where code noticeably shrinks

Denys Vlasenko vda.linux at googlemail.com
Sun Oct 10 11:50:53 UTC 2021


commit: https://git.busybox.net/busybox/commit/?id=53b2fdcdba4ced600da963147be425a21d0f6e53
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
display                                               85    1463   +1378  -73 bytes
select_and_cluster                                     -    1088   +1088 -139 bytes
parse_reply                                            -     979    +979 -109 bytes
zbc_num_sqrt                                           -     632    +632 -191 bytes
show_bridge_port                                       -     585    +585  -56 bytes
sp_256_proj_point_add_8                                -     576    +576  -45 bytes
encode_then_append_var_plusminus                       -     554    +554 -118 bytes
read_mode_db                                           -     537    +537  -47 bytes
fbset_main                                          1331     747    -584
sp_256_ecc_mulmod_8                                 1157     536    -621
brctl_main                                          2189    1548    -641
expand_one_var                                      2544    1872    -672
zxc_vm_process                                      6412    5589    -823
send_queries                                        1813     725   -1088
recv_and_process_peer_pkt                           2245    1018   -1227
bb_dump_dump                                        1531      80   -1451
------------------------------------------------------------------------------
(add/remove: 7/0 grow/shrink: 1/8 up/down: 6329/-7107)       Total: -778 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 libbb/dump.c            | 2 +-
 miscutils/bc.c          | 2 +-
 networking/brctl.c      | 2 +-
 networking/nslookup.c   | 2 +-
 networking/ntpd.c       | 2 +-
 networking/tls_sp_c32.c | 2 +-
 shell/hush.c            | 2 +-
 util-linux/fbset.c      | 2 +-
 8 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/libbb/dump.c b/libbb/dump.c
index f8bb6fd03..fcdee8343 100644
--- a/libbb/dump.c
+++ b/libbb/dump.c
@@ -532,7 +532,7 @@ static void conv_u(PR *pr, unsigned char *p)
 	}
 }
 
-static void display(priv_dumper_t* dumper)
+static NOINLINE void display(priv_dumper_t* dumper)
 {
 	unsigned char *bp;
 	unsigned char savech = '\0';
diff --git a/miscutils/bc.c b/miscutils/bc.c
index f9b08b01e..ae370ff55 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -2261,7 +2261,7 @@ static FAST_FUNC BC_STATUS zbc_num_p(BcNum *a, BcNum *b, BcNum *restrict c, size
 }
 #define zbc_num_p(...) (zbc_num_p(__VA_ARGS__) COMMA_SUCCESS)
 
-static BC_STATUS zbc_num_sqrt(BcNum *a, BcNum *restrict b, size_t scale)
+static NOINLINE BC_STATUS zbc_num_sqrt(BcNum *a, BcNum *restrict b, size_t scale)
 {
 	BcStatus s;
 	BcNum num1, num2, half, f, fprime, *x0, *x1, *temp;
diff --git a/networking/brctl.c b/networking/brctl.c
index c83aac6e0..956bd91f3 100644
--- a/networking/brctl.c
+++ b/networking/brctl.c
@@ -318,7 +318,7 @@ static void printf_xstrtou(const char *fmt)
 	printf(fmt, xstrtou(filedata, 0));
 }
 
-static void show_bridge_port(const char *name)
+static NOINLINE void show_bridge_port(const char *name)
 {
 	char pathbuf[IFNAMSIZ + sizeof("/brport/forward_delay_timer") + 8];
 	char *sfx;
diff --git a/networking/nslookup.c b/networking/nslookup.c
index de7b5c0e7..6da97baf4 100644
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -335,7 +335,7 @@ enum {
 	OPT_debug = (1 << 0),
 };
 
-static int parse_reply(const unsigned char *msg, size_t len)
+static NOINLINE int parse_reply(const unsigned char *msg, size_t len)
 {
 	HEADER *header;
 
diff --git a/networking/ntpd.c b/networking/ntpd.c
index 5bd4d2d3e..204e1d7c2 100644
--- a/networking/ntpd.c
+++ b/networking/ntpd.c
@@ -1152,7 +1152,7 @@ fit(peer_t *p, double rd)
 //		return 0;
 	return 1;
 }
-static peer_t*
+static NOINLINE peer_t*
 select_and_cluster(void)
 {
 	peer_t     *p;
diff --git a/networking/tls_sp_c32.c b/networking/tls_sp_c32.c
index 4c0cd320b..4d4ecdd74 100644
--- a/networking/tls_sp_c32.c
+++ b/networking/tls_sp_c32.c
@@ -1162,7 +1162,7 @@ static void sp_256_proj_point_dbl_8(sp_point* r, sp_point* p)
  * p  Frist point to add.
  * q  Second point to add.
  */
-static void sp_256_proj_point_add_8(sp_point* r, sp_point* p, sp_point* q)
+static NOINLINE void sp_256_proj_point_add_8(sp_point* r, sp_point* p, sp_point* q)
 {
 	sp_digit t1[2*8];
 	sp_digit t2[2*8];
diff --git a/shell/hush.c b/shell/hush.c
index 87fc2f445..7156297cf 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -6311,7 +6311,7 @@ static char *encode_then_expand_vararg(const char *str, int handle_squotes, int
 
 /* Expanding ARG in ${var+ARG}, ${var-ARG}
  */
-static int encode_then_append_var_plusminus(o_string *output, int n,
+static NOINLINE int encode_then_append_var_plusminus(o_string *output, int n,
 		char *str, int dquoted)
 {
 	struct in_str input;
diff --git a/util-linux/fbset.c b/util-linux/fbset.c
index cc5413b40..41cc29f37 100644
--- a/util-linux/fbset.c
+++ b/util-linux/fbset.c
@@ -267,7 +267,7 @@ static void ss(uint32_t *x, uint32_t flag, char *buf, const char *what)
  *     vsync high
  * endmode
  */
-static int read_mode_db(struct fb_var_screeninfo *base, const char *fn,
+static NOINLINE int read_mode_db(struct fb_var_screeninfo *base, const char *fn,
 					const char *mode)
 {
 	char *token[2], *p, *s;


More information about the busybox-cvs mailing list