mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-28 08:12:28 +00:00
Mint APE Loader v1.5
This change ports APE Loader to Linux AARCH64, so that Raspberry Pi users can run programs like redbean, without the executable needing to modify itself. Progress has also slipped into this change on the issue of making progress better conforming to user expectations and industry standards regarding which symbols we're allowed to declare
This commit is contained in:
parent
6843150e0c
commit
7e0a09feec
510 changed files with 1783 additions and 1483 deletions
|
@ -74,15 +74,17 @@ BENCH(crc32c, bench) {
|
|||
EZBENCH_N("crc32c", i, crc32c(0, kHyperion, i));
|
||||
EZBENCH_N("crc32_z", i, crc32_z(0, kHyperion, i));
|
||||
EZBENCH_N("fnv_hash", i,
|
||||
EXPROPRIATE(fnv_hash(VEIL("r", kHyperion), VEIL("r", i))));
|
||||
EZBENCH_N("KMH", i, EXPROPRIATE(KMH(VEIL("r", kHyperion), VEIL("r", i))));
|
||||
__expropriate(fnv_hash(__veil("r", kHyperion), __veil("r", i))));
|
||||
EZBENCH_N("KMH", i,
|
||||
__expropriate(KMH(__veil("r", kHyperion), __veil("r", i))));
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
EZBENCH_N("crc32c", kHyperionSize, crc32c(0, kHyperion, kHyperionSize));
|
||||
EZBENCH_N("crc32_z", kHyperionSize, crc32_z(0, kHyperion, kHyperionSize));
|
||||
EZBENCH_N("fnv_hash", kHyperionSize,
|
||||
__expropriate(
|
||||
fnv_hash(__veil("r", kHyperion), __veil("r", kHyperionSize))));
|
||||
EZBENCH_N(
|
||||
"fnv_hash", kHyperionSize,
|
||||
EXPROPRIATE(fnv_hash(VEIL("r", kHyperion), VEIL("r", kHyperionSize))));
|
||||
EZBENCH_N("KMH", kHyperionSize,
|
||||
EXPROPRIATE(KMH(VEIL("r", kHyperion), VEIL("r", kHyperionSize))));
|
||||
"KMH", kHyperionSize,
|
||||
__expropriate(KMH(__veil("r", kHyperion), __veil("r", kHyperionSize))));
|
||||
}
|
||||
|
|
|
@ -113,10 +113,10 @@ BENCH(highwayhash64, newbench) {
|
|||
|
||||
BENCH(highwayhash64, bench) {
|
||||
EZBENCH2("knuth small", donothing,
|
||||
EXPROPRIATE(KnuthMultiplicativeHash32(VEIL("r", "hello"), 5)));
|
||||
__expropriate(KnuthMultiplicativeHash32(__veil("r", "hello"), 5)));
|
||||
EZBENCH2("crc32c small", donothing, crc32c(0, "hello", 5));
|
||||
EZBENCH2("crc32 small", donothing,
|
||||
EXPROPRIATE(crc32_z(0, VEIL("r", "hello"), 5)));
|
||||
__expropriate(crc32_z(0, __veil("r", "hello"), 5)));
|
||||
EZBENCH2("highwayhash64 small", donothing,
|
||||
HighwayHash64((void *)"hello", 5, kTestKey1));
|
||||
EZBENCH2("crc32 big", donothing, crc32_z(0, kHyperion, kHyperionSize));
|
||||
|
@ -124,6 +124,6 @@ BENCH(highwayhash64, bench) {
|
|||
EZBENCH2("highwayhash64 big", donothing,
|
||||
HighwayHash64((void *)kHyperion, kHyperionSize, kTestKey1));
|
||||
EZBENCH2("knuth big", donothing,
|
||||
EXPROPRIATE(
|
||||
KnuthMultiplicativeHash32(VEIL("r", kHyperion), kHyperionSize)));
|
||||
__expropriate(KnuthMultiplicativeHash32(__veil("r", kHyperion),
|
||||
kHyperionSize)));
|
||||
}
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/hyperion.h"
|
||||
|
@ -35,5 +35,5 @@ TEST(memcasecmp, test) {
|
|||
BENCH(memcasecmp, bench) {
|
||||
volatile char *copy = gc(strdup(kHyperion));
|
||||
EZBENCH2("memcasecmp", donothing,
|
||||
EXPROPRIATE(memcasecmp(kHyperion, copy, kHyperionSize)));
|
||||
__expropriate(memcasecmp(kHyperion, copy, kHyperionSize)));
|
||||
}
|
||||
|
|
|
@ -154,20 +154,20 @@ TEST(memcpy, testBackwardsOverlap3) {
|
|||
volatile char *c;
|
||||
c = malloc(3);
|
||||
memcpy(c, "\e[C", 3);
|
||||
memcpy(c, c + 1, VEIL("r", 3) - 1);
|
||||
memcpy(c, c + 1, __veil("r", 3) - 1);
|
||||
EXPECT_EQ('[', c[0]);
|
||||
EXPECT_EQ('C', c[1]);
|
||||
free(c);
|
||||
}
|
||||
|
||||
#define B(F, N) \
|
||||
do { \
|
||||
char *d = rngset(malloc(N), N, _rand64, -1); \
|
||||
char *s = rngset(malloc(N), N, _rand64, -1); \
|
||||
EZBENCH2(#F " " #N, donothing, \
|
||||
EXPROPRIATE(F(VEIL("r", d), VEIL("r", s), N))); \
|
||||
free(d); \
|
||||
free(s); \
|
||||
#define B(F, N) \
|
||||
do { \
|
||||
char *d = rngset(malloc(N), N, _rand64, -1); \
|
||||
char *s = rngset(malloc(N), N, _rand64, -1); \
|
||||
EZBENCH2(#F " " #N, donothing, \
|
||||
__expropriate(F(__veil("r", d), __veil("r", s), N))); \
|
||||
free(d); \
|
||||
free(s); \
|
||||
} while (0)
|
||||
|
||||
void BB(size_t N) {
|
||||
|
|
|
@ -193,11 +193,11 @@ TEST(memmem, fuzz) {
|
|||
*/
|
||||
BENCH(memmem, bench) {
|
||||
EZBENCH2("memmem naive", donothing,
|
||||
EXPROPRIATE(memmem_naive(kHyperion, kHyperionSize, "THE END", 7)));
|
||||
__expropriate(memmem_naive(kHyperion, kHyperionSize, "THE END", 7)));
|
||||
EZBENCH2("memmem", donothing,
|
||||
EXPROPRIATE(memmem(kHyperion, kHyperionSize, "THE END", 7)));
|
||||
__expropriate(memmem(kHyperion, kHyperionSize, "THE END", 7)));
|
||||
EZBENCH2("memmem", donothing,
|
||||
EXPROPRIATE(memmem(
|
||||
__expropriate(memmem(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
62, "aaaaaab", 7)));
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ TEST(memrchr16, test) {
|
|||
|
||||
BENCH(memrchr16, bench) {
|
||||
EZBENCH2("memrchr16", donothing,
|
||||
EXPROPRIATE(memrchr16(u"yo.hi.there", '.', 11)));
|
||||
__expropriate(memrchr16(u"yo.hi.there", '.', 11)));
|
||||
EZBENCH2("memrchr16 hyperion", donothing,
|
||||
EXPROPRIATE(memrchr16(kHyperion, '.', kHyperionSize / 2)));
|
||||
__expropriate(memrchr16(kHyperion, '.', kHyperionSize / 2)));
|
||||
}
|
||||
|
|
|
@ -32,9 +32,9 @@ TEST(strcasecmp, test) {
|
|||
|
||||
BENCH(strcasecmp, bench) {
|
||||
EZBENCH2("strcasecmp 16 eq (same)", donothing,
|
||||
EXPROPRIATE(
|
||||
strcasecmp(VEIL("r", "abcdefghijklmnop"), "abcdefghijklmnop")));
|
||||
__expropriate(strcasecmp(__veil("r", "abcdefghijklmnop"),
|
||||
"abcdefghijklmnop")));
|
||||
EZBENCH2("strcasecmp 16 eq (evil)", donothing,
|
||||
EXPROPRIATE(
|
||||
strcasecmp(VEIL("r", "abcdefghijklmnop"), "ABCDEFGHIJKLMNOP")));
|
||||
__expropriate(strcasecmp(__veil("r", "abcdefghijklmnop"),
|
||||
"ABCDEFGHIJKLMNOP")));
|
||||
}
|
||||
|
|
|
@ -122,41 +122,41 @@ TEST(strcasestr, test) {
|
|||
*/
|
||||
BENCH(strcasestr, bench) {
|
||||
EZBENCH2("strcasestr naive", donothing,
|
||||
EXPROPRIATE(strcasestr_naive(kHyperion, "THE END")));
|
||||
__expropriate(strcasestr_naive(kHyperion, "THE END")));
|
||||
EZBENCH2("strcasestr", donothing,
|
||||
EXPROPRIATE(strcasestr(kHyperion, "THE END")));
|
||||
__expropriate(strcasestr(kHyperion, "THE END")));
|
||||
EZBENCH2("strcasestr tort 1", donothing,
|
||||
EXPROPRIATE(strcasestr(
|
||||
__expropriate(strcasestr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"B")));
|
||||
EZBENCH2("strcasestr tort 2", donothing,
|
||||
EXPROPRIATE(strcasestr(
|
||||
__expropriate(strcasestr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"ab")));
|
||||
EZBENCH2("strcasestr tort 4", donothing,
|
||||
EXPROPRIATE(strcasestr(
|
||||
__expropriate(strcasestr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"aaab")));
|
||||
EZBENCH2("strcasestr tort 8", donothing,
|
||||
EXPROPRIATE(strcasestr(
|
||||
__expropriate(strcasestr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"aaaaaaab")));
|
||||
EZBENCH2("strcasestr tort 16", donothing,
|
||||
EXPROPRIATE(strcasestr(
|
||||
__expropriate(strcasestr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"aaaaaaaaaaaaaaab")));
|
||||
EZBENCH2("strcasestr tort 32", donothing,
|
||||
EXPROPRIATE(strcasestr(
|
||||
__expropriate(strcasestr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
|
|
|
@ -40,8 +40,10 @@ TEST(strlcpy, testShortBuffer_copies) {
|
|||
|
||||
BENCH(strlcpy, bench) {
|
||||
char buf[256];
|
||||
EZBENCH2("strlcpy", donothing,
|
||||
EXPROPRIATE(strlcpy(VEIL("r", buf), "hello there", sizeof(buf))));
|
||||
EZBENCH2("strncpy", donothing,
|
||||
EXPROPRIATE(strncpy(VEIL("r", buf), "hello there", sizeof(buf))));
|
||||
EZBENCH2(
|
||||
"strlcpy", donothing,
|
||||
__expropriate(strlcpy(__veil("r", buf), "hello there", sizeof(buf))));
|
||||
EZBENCH2(
|
||||
"strncpy", donothing,
|
||||
__expropriate(strncpy(__veil("r", buf), "hello there", sizeof(buf))));
|
||||
}
|
||||
|
|
|
@ -53,5 +53,5 @@ TEST(strwidth, cjk) {
|
|||
}
|
||||
|
||||
BENCH(strnwidth, bench) {
|
||||
EZBENCH2("strnwidth", donothing, EXPROPRIATE(strnwidth(kHyperion, -1, 0)));
|
||||
EZBENCH2("strnwidth", donothing, __expropriate(strnwidth(kHyperion, -1, 0)));
|
||||
}
|
||||
|
|
|
@ -129,40 +129,40 @@ TEST(strstr, breakit) {
|
|||
*/
|
||||
BENCH(strstr, bench) {
|
||||
EZBENCH2("strstr naive", donothing,
|
||||
EXPROPRIATE(strstr_naive(kHyperion, "THE END")));
|
||||
EZBENCH2("strstr", donothing, EXPROPRIATE(strstr(kHyperion, "THE END")));
|
||||
__expropriate(strstr_naive(kHyperion, "THE END")));
|
||||
EZBENCH2("strstr", donothing, __expropriate(strstr(kHyperion, "THE END")));
|
||||
EZBENCH2("strstr torture 1", donothing,
|
||||
EXPROPRIATE(strstr(
|
||||
__expropriate(strstr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"b")));
|
||||
EZBENCH2("strstr torture 2", donothing,
|
||||
EXPROPRIATE(strstr(
|
||||
__expropriate(strstr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"ab")));
|
||||
EZBENCH2("strstr torture 4", donothing,
|
||||
EXPROPRIATE(strstr(
|
||||
__expropriate(strstr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"aaab")));
|
||||
EZBENCH2("strstr torture 8", donothing,
|
||||
EXPROPRIATE(strstr(
|
||||
__expropriate(strstr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"aaaaaaab")));
|
||||
EZBENCH2("strstr torture 16", donothing,
|
||||
EXPROPRIATE(strstr(
|
||||
__expropriate(strstr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
"aaaaaaaaaaaaaaab")));
|
||||
EZBENCH2("strstr torture 32", donothing,
|
||||
EXPROPRIATE(strstr(
|
||||
__expropriate(strstr(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab",
|
||||
|
|
|
@ -44,39 +44,45 @@ TEST(towlower, test) {
|
|||
}
|
||||
|
||||
BENCH(towupper, bench) {
|
||||
EZBENCH2("towupper ascii", donothing, EXPROPRIATE(towupper(VEIL("r", L'a'))));
|
||||
EZBENCH2("towupper ascii", donothing,
|
||||
__expropriate(towupper(__veil("r", L'a'))));
|
||||
EZBENCH2("towupper latin1", donothing,
|
||||
EXPROPRIATE(towupper(VEIL("r", u'A'))));
|
||||
__expropriate(towupper(__veil("r", u'A'))));
|
||||
EZBENCH2("towupper watinc", donothing,
|
||||
EXPROPRIATE(towupper(VEIL("r", u'Ỿ'))));
|
||||
EZBENCH2("towupper greek", donothing, EXPROPRIATE(towupper(VEIL("r", u'α'))));
|
||||
__expropriate(towupper(__veil("r", u'Ỿ'))));
|
||||
EZBENCH2("towupper greek", donothing,
|
||||
__expropriate(towupper(__veil("r", u'α'))));
|
||||
EZBENCH2("towupper astral", donothing,
|
||||
EXPROPRIATE(towupper(VEIL("r", L'𝛿'))));
|
||||
__expropriate(towupper(__veil("r", L'𝛿'))));
|
||||
}
|
||||
|
||||
BENCH(towlower, bench) {
|
||||
EZBENCH2("towlower ascii", donothing, EXPROPRIATE(towlower(VEIL("r", L'a'))));
|
||||
EZBENCH2("towlower ascii", donothing,
|
||||
__expropriate(towlower(__veil("r", L'a'))));
|
||||
EZBENCH2("towlower latin1", donothing,
|
||||
EXPROPRIATE(towlower(VEIL("r", u'A'))));
|
||||
__expropriate(towlower(__veil("r", u'A'))));
|
||||
EZBENCH2("towlower watinc", donothing,
|
||||
EXPROPRIATE(towlower(VEIL("r", u'Ỿ'))));
|
||||
EZBENCH2("towlower greek", donothing, EXPROPRIATE(towupper(VEIL("r", u'α'))));
|
||||
__expropriate(towlower(__veil("r", u'Ỿ'))));
|
||||
EZBENCH2("towlower greek", donothing,
|
||||
__expropriate(towupper(__veil("r", u'α'))));
|
||||
EZBENCH2("towlower astral", donothing,
|
||||
EXPROPRIATE(towlower(VEIL("r", L'𝛿'))));
|
||||
__expropriate(towlower(__veil("r", L'𝛿'))));
|
||||
}
|
||||
|
||||
BENCH(iswupper, bench) {
|
||||
EZBENCH2("iswupper ascii", donothing, EXPROPRIATE(iswupper(VEIL("r", L'A'))));
|
||||
EZBENCH2("iswupper ascii", donothing,
|
||||
__expropriate(iswupper(__veil("r", L'A'))));
|
||||
EZBENCH2("iswupper latin1", donothing,
|
||||
EXPROPRIATE(iswupper(VEIL("r", u'A'))));
|
||||
__expropriate(iswupper(__veil("r", u'A'))));
|
||||
EZBENCH2("iswupper astral", donothing,
|
||||
EXPROPRIATE(iswupper(VEIL("r", L'𝛿'))));
|
||||
__expropriate(iswupper(__veil("r", L'𝛿'))));
|
||||
}
|
||||
|
||||
BENCH(iswlower, bench) {
|
||||
EZBENCH2("iswlower ascii", donothing, EXPROPRIATE(iswlower(VEIL("r", L'a'))));
|
||||
EZBENCH2("iswlower ascii", donothing,
|
||||
__expropriate(iswlower(__veil("r", L'a'))));
|
||||
EZBENCH2("iswlower latin1", donothing,
|
||||
EXPROPRIATE(iswlower(VEIL("r", u'A'))));
|
||||
__expropriate(iswlower(__veil("r", u'A'))));
|
||||
EZBENCH2("iswlower astral", donothing,
|
||||
EXPROPRIATE(iswlower(VEIL("r", L'𝛿'))));
|
||||
__expropriate(iswlower(__veil("r", L'𝛿'))));
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
|
||||
STATIC_YOINK("strwidth");
|
||||
__static_yoink("strwidth");
|
||||
|
||||
volatile uint64_t v;
|
||||
|
||||
|
@ -45,7 +45,7 @@ TEST(_tpenc, testBeyondTheStandard) {
|
|||
}
|
||||
|
||||
uint64_t _Tpenc(int x) {
|
||||
return (v = EXPROPRIATE(_tpenc(VEIL("r", x))));
|
||||
return (v = __expropriate(_tpenc(__veil("r", x))));
|
||||
}
|
||||
|
||||
BENCH(_tpenc, bench) {
|
||||
|
|
|
@ -77,5 +77,5 @@ TEST(strwidth, testTextDelimitingControlCodes_dontHaveSubstance) {
|
|||
|
||||
BENCH(wcwidth, bench) {
|
||||
volatile int x;
|
||||
EZBENCH2("wcwidth", donothing, x = wcwidth(VEIL("r", u'→')));
|
||||
EZBENCH2("wcwidth", donothing, x = wcwidth(__veil("r", u'→')));
|
||||
}
|
||||
|
|
|
@ -30,5 +30,5 @@ TEST(wmemrchr, test) {
|
|||
|
||||
BENCH(wmemrchr, bench) {
|
||||
EZBENCH2("wmemrchr", donothing,
|
||||
EXPROPRIATE(wmemrchr(L"yo.hi.there", '.', 11)));
|
||||
__expropriate(wmemrchr(L"yo.hi.there", '.', 11)));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue