Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Bug 1390129 - add PORT_ZAllocAligned function for allocationg aligned…
… memory, r=mt Differential Revision: https://nss-review.dev.mozaws.net/D413 --HG-- extra : rebase_source : f1c794fb8501bb1f566b7ad6919e23d89695dc9b extra : amend_source : 5f54b64b7db3a0ba096afc407ac2929db2d344c6 extra : histedit_source : 2e209927a090b8ede744de911a7a907187b0a554%2C93ce0cb26d0380edd54faf96f23703c0fa593de5
- Loading branch information
1 parent
39e105a
commit 69c0086
Showing
11 changed files
with
217 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | ||
/* vim: set ts=2 et sw=2 tw=80: */ | ||
/* This Source Code Form is subject to the terms of the Mozilla Public | ||
* License, v. 2.0. If a copy of the MPL was not distributed with this file, | ||
* You can obtain one at http://mozilla.org/MPL/2.0/. */ | ||
|
||
#include "gtest/gtest.h" | ||
#include "scoped_ptrs_util.h" | ||
|
||
namespace nss_test { | ||
|
||
struct SomeContext { | ||
uint8_t some_buf[13]; | ||
void *mem; | ||
}; | ||
|
||
template <class T> | ||
struct ScopedDelete { | ||
void operator()(T *ptr) { | ||
if (ptr) { | ||
PORT_Free(ptr->mem); | ||
} | ||
} | ||
}; | ||
typedef std::unique_ptr<SomeContext, ScopedDelete<SomeContext> > | ||
ScopedSomeContext; | ||
|
||
class AlignedMallocTest : public ::testing::Test, | ||
public ::testing::WithParamInterface<size_t> { | ||
protected: | ||
ScopedSomeContext test_align_new(size_t alignment) { | ||
ScopedSomeContext ctx(PORT_ZNewAligned(SomeContext, alignment, mem)); | ||
return ctx; | ||
}; | ||
ScopedSomeContext test_align_alloc(size_t alignment) { | ||
void *mem = nullptr; | ||
ScopedSomeContext ctx((SomeContext *)PORT_ZAllocAligned(sizeof(SomeContext), | ||
alignment, &mem)); | ||
if (ctx) { | ||
ctx->mem = mem; | ||
} | ||
return ctx; | ||
} | ||
}; | ||
|
||
TEST_P(AlignedMallocTest, TestNew) { | ||
size_t alignment = GetParam(); | ||
ScopedSomeContext ctx = test_align_new(alignment); | ||
EXPECT_TRUE(ctx.get()); | ||
EXPECT_EQ(0U, (uintptr_t)ctx.get() % alignment); | ||
} | ||
|
||
TEST_P(AlignedMallocTest, TestAlloc) { | ||
size_t alignment = GetParam(); | ||
ScopedSomeContext ctx = test_align_alloc(alignment); | ||
EXPECT_TRUE(ctx.get()); | ||
EXPECT_EQ(0U, (uintptr_t)ctx.get() % alignment); | ||
} | ||
|
||
class AlignedMallocTestBadSize : public AlignedMallocTest {}; | ||
|
||
TEST_P(AlignedMallocTestBadSize, TestNew) { | ||
size_t alignment = GetParam(); | ||
ScopedSomeContext ctx = test_align_new(alignment); | ||
EXPECT_FALSE(ctx.get()); | ||
} | ||
|
||
TEST_P(AlignedMallocTestBadSize, TestAlloc) { | ||
size_t alignment = GetParam(); | ||
ScopedSomeContext ctx = test_align_alloc(alignment); | ||
EXPECT_FALSE(ctx.get()); | ||
} | ||
|
||
static const size_t kSizes[] = {1, 2, 4, 8, 16, 32, 64}; | ||
static const size_t kBadSizes[] = {0, 7, 17, 24, 56}; | ||
|
||
INSTANTIATE_TEST_CASE_P(AllAligned, AlignedMallocTest, | ||
::testing::ValuesIn(kSizes)); | ||
INSTANTIATE_TEST_CASE_P(AllAlignedBadSize, AlignedMallocTestBadSize, | ||
::testing::ValuesIn(kBadSizes)); | ||
|
||
} // namespace nss_test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters