add a check for SC_LARGE_MAXCLASS
If we assume SC_LARGE_MAXCLASS will always fit in a SSIZE_T, then we can optimize some checks by unconditional subtraction, and then checking flags only, without a compare statement in x86.
This commit is contained in:
parent
0ac524308d
commit
d1a861fa80
9
src/sc.c
9
src/sc.c
@ -244,6 +244,15 @@ size_classes(
|
|||||||
assert(sc_data->large_minclass == SC_LARGE_MINCLASS);
|
assert(sc_data->large_minclass == SC_LARGE_MINCLASS);
|
||||||
assert(sc_data->lg_large_minclass == SC_LG_LARGE_MINCLASS);
|
assert(sc_data->lg_large_minclass == SC_LG_LARGE_MINCLASS);
|
||||||
assert(sc_data->large_maxclass == SC_LARGE_MAXCLASS);
|
assert(sc_data->large_maxclass == SC_LARGE_MAXCLASS);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In the allocation fastpath, we want to assume that we can
|
||||||
|
* unconditionally subtract the requested allocation size from
|
||||||
|
* a ssize_t, and detect passing through 0 correctly. This
|
||||||
|
* results in optimal generated code. For this to work, the
|
||||||
|
* maximum allocation size must be less than SSIZE_MAX.
|
||||||
|
*/
|
||||||
|
assert(SC_LARGE_MAXCLASS < SSIZE_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user