Improve Python tree-shaking

This commit is contained in:
Justine Tunney 2021-09-06 19:24:10 -07:00
parent 5bb2275788
commit 4f41f2184d
169 changed files with 4182 additions and 2411 deletions

View file

@ -17,15 +17,50 @@
PERFORMANCE OF THIS SOFTWARE.
*/
#include "libc/runtime/gc.internal.h"
#include "libc/testlib/ezbench.h"
#include "libc/testlib/testlib.h"
#include "libc/x/x.h"
TEST(xstrcat, test) {
EXPECT_STREQ("hi", gc(xstrcat("hi")));
EXPECT_STREQ("hithere", gc(xstrcat("hi", "there")));
EXPECT_STREQ("einszweidrei", gc(xstrcat("eins", "zwei", "drei")));
}
TEST(xstrcat, pointerAbuse) {
EXPECT_STREQ("hi there", gc(xstrcat("hi", ' ', "there")));
EXPECT_STREQ("hi there\n", gc(xstrcat("hi", ' ', "there", '\n')));
}
int hard_static(void) {
char *b, *p;
p = b = malloc(16);
p = stpcpy(p, "eins");
p = stpcpy(p, "zwei");
p = stpcpy(p, "drei");
free(b);
return (intptr_t)b;
}
int hard_dynamic(void) {
char *b, *p;
p = b = malloc(16);
p = stpcpy(p, VEIL("r", "eins"));
p = stpcpy(p, VEIL("r", "zwei"));
p = stpcpy(p, VEIL("r", "drei"));
free(b);
return (intptr_t)b;
}
BENCH(xstrcat, bench) {
EZBENCH2("hard_static", donothing, EXPROPRIATE(hard_static()));
EZBENCH2("hard_dynamic", donothing, EXPROPRIATE(hard_dynamic()));
EZBENCH2("xstrcat", donothing, free(xstrcat("eins", "zwei", "drei")));
EZBENCH2("xasprintf", donothing,
free(xasprintf("%s%s%s", "eins", "zwei", "drei")));
EZBENCH2("xstrcat2", donothing,
free(xstrcat("einseinseins", "zweizweizwei", "dreidreidrei")));
EZBENCH2("xasprintf2", donothing,
free(xasprintf("%s%s%s", "einseinseins", "zweizweizwei",
"dreidreidrei")));
}