diff --git a/display_list/display_list_builder.cc b/display_list/display_list_builder.cc index b5b1c0e2b9e0e..b091e6d2b4955 100644 --- a/display_list/display_list_builder.cc +++ b/display_list/display_list_builder.cc @@ -26,12 +26,16 @@ static void CopyV(void* dst, const S* src, int n, Rest&&... rest) { CopyV(SkTAddOffset(dst, n * sizeof(S)), std::forward(rest)...); } +static constexpr inline bool is_power_of_two(int value) { + return (value & (value - 1)) == 0; +} + template void* DisplayListBuilder::Push(size_t pod, int render_op_inc, Args&&... args) { size_t size = SkAlignPtr(sizeof(T) + pod); FML_DCHECK(size < (1 << 24)); if (used_ + size > allocated_) { - static_assert(SkIsPow2(DL_BUILDER_PAGE), + static_assert(is_power_of_two(DL_BUILDER_PAGE), "This math needs updating for non-pow2."); // Next greater multiple of DL_BUILDER_PAGE. allocated_ = (used_ + size + DL_BUILDER_PAGE) & ~(DL_BUILDER_PAGE - 1);