Fix runtime/int issues.
This CL fixes up various runtime/int types to be more specific. Bug: dawn:1339 Change-Id: I61c8ecc89abd0373173b95bfb594c75d05a5d505 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/86865 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Dan Sinclair <dsinclair@chromium.org> Auto-Submit: Dan Sinclair <dsinclair@chromium.org>
This commit is contained in:
parent
36af06343c
commit
09ce76b0d5
|
@ -3,4 +3,3 @@ filter=-readability/casting
|
|||
filter=-readability/todo
|
||||
filter=-runtime/explicit
|
||||
filter=-runtime/indentation_namespace
|
||||
filter=-runtime/int
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
#include "dawn/common/Math.h"
|
||||
#include "dawn/common/UnderlyingType.h"
|
||||
|
||||
// This is ANGLE's BitSetIterator class with a customizable return type
|
||||
// This is ANGLE's BitSetIterator class with a customizable return type.
|
||||
// Types have been updated to be more specific.
|
||||
// TODO(crbug.com/dawn/306): it could be optimized, in particular when N <= 64
|
||||
|
||||
template <typename T>
|
||||
|
@ -53,12 +54,12 @@ class BitSetIterator final {
|
|||
}
|
||||
|
||||
private:
|
||||
unsigned long getNextBit();
|
||||
uint32_t getNextBit();
|
||||
|
||||
static constexpr size_t kBitsPerWord = sizeof(uint32_t) * 8;
|
||||
std::bitset<N> mBits;
|
||||
unsigned long mCurrentBit;
|
||||
unsigned long mOffset;
|
||||
uint32_t mCurrentBit;
|
||||
uint32_t mOffset;
|
||||
};
|
||||
|
||||
Iterator begin() const {
|
||||
|
@ -92,7 +93,7 @@ BitSetIterator<N, T>::Iterator::Iterator(const std::bitset<N>& bits)
|
|||
if (bits.any()) {
|
||||
mCurrentBit = getNextBit();
|
||||
} else {
|
||||
mOffset = static_cast<unsigned long>(roundUp(N, kBitsPerWord));
|
||||
mOffset = static_cast<uint32_t>(roundUp(N, kBitsPerWord));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -115,7 +116,7 @@ bool BitSetIterator<N, T>::Iterator::operator!=(const Iterator& other) const {
|
|||
}
|
||||
|
||||
template <size_t N, typename T>
|
||||
unsigned long BitSetIterator<N, T>::Iterator::getNextBit() {
|
||||
uint32_t BitSetIterator<N, T>::Iterator::getNextBit() {
|
||||
static std::bitset<N> wordMask(std::numeric_limits<uint32_t>::max());
|
||||
|
||||
while (mOffset < N) {
|
||||
|
|
|
@ -75,7 +75,7 @@ void HashCombine(size_t* hash, const T& value, const Args&... args) {
|
|||
#if defined(_GLIBCXX_DEBUG)
|
||||
template <size_t N>
|
||||
size_t Hash(const std::bitset<N>& value) {
|
||||
constexpr size_t kWindowSize = sizeof(unsigned long long);
|
||||
constexpr size_t kWindowSize = sizeof(uint64_t);
|
||||
|
||||
std::bitset<N> bits = value;
|
||||
size_t hash = 0;
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
uint32_t ScanForward(uint32_t bits) {
|
||||
ASSERT(bits != 0);
|
||||
#if defined(DAWN_COMPILER_MSVC)
|
||||
// NOLINTNEXTLINE(runtime/int)
|
||||
unsigned long firstBitIndex = 0ul;
|
||||
unsigned char ret = _BitScanForward(&firstBitIndex, bits);
|
||||
ASSERT(ret != 0);
|
||||
|
@ -40,6 +41,7 @@ uint32_t ScanForward(uint32_t bits) {
|
|||
uint32_t Log2(uint32_t value) {
|
||||
ASSERT(value != 0);
|
||||
#if defined(DAWN_COMPILER_MSVC)
|
||||
// NOLINTNEXTLINE(runtime/int)
|
||||
unsigned long firstBitIndex = 0ul;
|
||||
unsigned char ret = _BitScanReverse(&firstBitIndex, value);
|
||||
ASSERT(ret != 0);
|
||||
|
@ -53,11 +55,13 @@ uint32_t Log2(uint64_t value) {
|
|||
ASSERT(value != 0);
|
||||
#if defined(DAWN_COMPILER_MSVC)
|
||||
# if defined(DAWN_PLATFORM_64_BIT)
|
||||
// NOLINTNEXTLINE(runtime/int)
|
||||
unsigned long firstBitIndex = 0ul;
|
||||
unsigned char ret = _BitScanReverse64(&firstBitIndex, value);
|
||||
ASSERT(ret != 0);
|
||||
return firstBitIndex;
|
||||
# else // defined(DAWN_PLATFORM_64_BIT)
|
||||
// NOLINTNEXTLINE(runtime/int)
|
||||
unsigned long firstBitIndex = 0ul;
|
||||
if (_BitScanReverse(&firstBitIndex, value >> 32)) {
|
||||
return firstBitIndex + 32;
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace ityp {
|
|||
constexpr bitset() noexcept : Base() {
|
||||
}
|
||||
|
||||
constexpr bitset(unsigned long long value) noexcept : Base(value) {
|
||||
constexpr bitset(uint64_t value) noexcept : Base(value) {
|
||||
}
|
||||
|
||||
constexpr bool operator[](Index i) const {
|
||||
|
@ -147,6 +147,7 @@ Index GetHighestBitIndexPlusOne(const ityp::bitset<Index, N>& bitset) {
|
|||
#if defined(DAWN_COMPILER_MSVC)
|
||||
if constexpr (N > 32) {
|
||||
# if defined(DAWN_PLATFORM_64_BIT)
|
||||
// NOLINTNEXTLINE(runtime/int)
|
||||
unsigned long firstBitIndex = 0ul;
|
||||
unsigned char ret = _BitScanReverse64(&firstBitIndex, bitset.to_ullong());
|
||||
if (ret == 0) {
|
||||
|
@ -165,6 +166,7 @@ Index GetHighestBitIndexPlusOne(const ityp::bitset<Index, N>& bitset) {
|
|||
UNREACHABLE();
|
||||
# endif // defined(DAWN_PLATFORM_64_BIT)
|
||||
} else {
|
||||
// NOLINTNEXTLINE(runtime/int)
|
||||
unsigned long firstBitIndex = 0ul;
|
||||
unsigned char ret = _BitScanReverse(&firstBitIndex, bitset.to_ulong());
|
||||
if (ret == 0) {
|
||||
|
|
|
@ -46,7 +46,7 @@ int main(int argc, char** argv) {
|
|||
}
|
||||
|
||||
fseek(file, 0, SEEK_END);
|
||||
long tellFileSize = ftell(file);
|
||||
int32_t tellFileSize = ftell(file);
|
||||
if (tellFileSize <= 0) {
|
||||
std::cerr << "Input file of incorrect size: " << filename << std::endl;
|
||||
return 1;
|
||||
|
|
|
@ -1404,7 +1404,8 @@ namespace dawn::native::d3d12 {
|
|||
uint32_t height = renderPass->height;
|
||||
D3D12_VIEWPORT viewport = {
|
||||
0.f, 0.f, static_cast<float>(width), static_cast<float>(height), 0.f, 1.f};
|
||||
D3D12_RECT scissorRect = {0, 0, static_cast<long>(width), static_cast<long>(height)};
|
||||
D3D12_RECT scissorRect = {0, 0, static_cast<int32_t>(width),
|
||||
static_cast<int32_t>(height)};
|
||||
commandList->RSSetViewports(1, &viewport);
|
||||
commandList->RSSetScissorRects(1, &scissorRect);
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ namespace wgpu::binding {
|
|||
static Napi::Error New(Napi::Env env,
|
||||
std::string name,
|
||||
std::string message,
|
||||
unsigned short code = 0) {
|
||||
uint16_t code = 0) {
|
||||
auto err = Napi::Error::New(env);
|
||||
err.Set("name", name);
|
||||
err.Set("message", message.empty() ? name : message);
|
||||
|
|
|
@ -761,7 +761,7 @@ namespace dawn::platform::TraceEvent {
|
|||
// Specify these values when the corresponding argument of addTraceEvent is not
|
||||
// used.
|
||||
const int zeroNumArgs = 0;
|
||||
const unsigned long long noEventId = 0;
|
||||
const uint64_t noEventId = 0;
|
||||
|
||||
// TraceID encapsulates an ID that can either be an integer or pointer. Pointers
|
||||
// are mangled with the Process ID so that they are unlikely to collide when the
|
||||
|
@ -769,58 +769,47 @@ namespace dawn::platform::TraceEvent {
|
|||
class TraceID {
|
||||
public:
|
||||
explicit TraceID(const void* id, unsigned char* flags)
|
||||
: m_data(static_cast<unsigned long long>(reinterpret_cast<uintptr_t>(id))) {
|
||||
: m_data(static_cast<uint64_t>(reinterpret_cast<uintptr_t>(id))) {
|
||||
*flags |= TRACE_EVENT_FLAG_MANGLE_ID;
|
||||
}
|
||||
explicit TraceID(unsigned long long id, unsigned char* flags) : m_data(id) {
|
||||
explicit TraceID(uint64_t id, unsigned char* flags) : m_data(id) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(unsigned long id, unsigned char* flags) : m_data(id) {
|
||||
explicit TraceID(uint32_t id, unsigned char* flags) : m_data(id) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(unsigned int id, unsigned char* flags) : m_data(id) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(unsigned short id, unsigned char* flags) : m_data(id) {
|
||||
explicit TraceID(uint16_t id, unsigned char* flags) : m_data(id) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(unsigned char id, unsigned char* flags) : m_data(id) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(long long id, unsigned char* flags)
|
||||
: m_data(static_cast<unsigned long long>(id)) {
|
||||
explicit TraceID(int64_t id, unsigned char* flags) : m_data(static_cast<uint64_t>(id)) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(long id, unsigned char* flags)
|
||||
: m_data(static_cast<unsigned long long>(id)) {
|
||||
explicit TraceID(int32_t id, unsigned char* flags) : m_data(static_cast<uint64_t>(id)) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(int id, unsigned char* flags)
|
||||
: m_data(static_cast<unsigned long long>(id)) {
|
||||
explicit TraceID(int16_t id, unsigned char* flags) : m_data(static_cast<uint64_t>(id)) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(short id, unsigned char* flags)
|
||||
: m_data(static_cast<unsigned long long>(id)) {
|
||||
(void)flags;
|
||||
}
|
||||
explicit TraceID(signed char id, unsigned char* flags)
|
||||
: m_data(static_cast<unsigned long long>(id)) {
|
||||
explicit TraceID(signed char id, unsigned char* flags) : m_data(static_cast<uint64_t>(id)) {
|
||||
(void)flags;
|
||||
}
|
||||
|
||||
unsigned long long data() const {
|
||||
uint64_t data() const {
|
||||
return m_data;
|
||||
}
|
||||
|
||||
private:
|
||||
unsigned long long m_data;
|
||||
uint64_t m_data;
|
||||
};
|
||||
|
||||
// Simple union to store various types as unsigned long long.
|
||||
// Simple union to store various types as uint64_t.
|
||||
union TraceValueUnion {
|
||||
bool m_bool;
|
||||
unsigned long long m_uint;
|
||||
long long m_int;
|
||||
uint64_t m_uint;
|
||||
int64_t m_int;
|
||||
double m_double;
|
||||
const void* m_pointer;
|
||||
const char* m_string;
|
||||
|
@ -853,17 +842,16 @@ namespace dawn::platform::TraceEvent {
|
|||
#define INTERNAL_DECLARE_SET_TRACE_VALUE_INT(actual_type, value_type_id) \
|
||||
static inline void setTraceValue(actual_type arg, unsigned char* type, uint64_t* value) { \
|
||||
*type = value_type_id; \
|
||||
*value = static_cast<unsigned long long>(arg); \
|
||||
*value = static_cast<uint64_t>(arg); \
|
||||
}
|
||||
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned long long, TRACE_VALUE_TYPE_UINT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned long, TRACE_VALUE_TYPE_UINT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned int, TRACE_VALUE_TYPE_UINT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned short, TRACE_VALUE_TYPE_UINT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(uint64_t, TRACE_VALUE_TYPE_UINT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(uint32_t, TRACE_VALUE_TYPE_UINT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(uint16_t, TRACE_VALUE_TYPE_UINT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned char, TRACE_VALUE_TYPE_UINT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(long long, TRACE_VALUE_TYPE_INT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(int, TRACE_VALUE_TYPE_INT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(short, TRACE_VALUE_TYPE_INT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(int64_t, TRACE_VALUE_TYPE_INT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(int32_t, TRACE_VALUE_TYPE_INT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(int16_t, TRACE_VALUE_TYPE_INT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE_INT(signed char, TRACE_VALUE_TYPE_INT)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE(bool, m_bool, TRACE_VALUE_TYPE_BOOL)
|
||||
INTERNAL_DECLARE_SET_TRACE_VALUE(double, m_double, TRACE_VALUE_TYPE_DOUBLE)
|
||||
|
@ -893,7 +881,7 @@ namespace dawn::platform::TraceEvent {
|
|||
char phase,
|
||||
const unsigned char* categoryEnabled,
|
||||
const char* name,
|
||||
unsigned long long id,
|
||||
uint64_t id,
|
||||
unsigned char flags,
|
||||
int /*unused, helps avoid empty __VA_ARGS__*/) {
|
||||
return TRACE_EVENT_API_ADD_TRACE_EVENT(platform, phase, categoryEnabled, name, id,
|
||||
|
@ -906,7 +894,7 @@ namespace dawn::platform::TraceEvent {
|
|||
char phase,
|
||||
const unsigned char* categoryEnabled,
|
||||
const char* name,
|
||||
unsigned long long id,
|
||||
uint64_t id,
|
||||
unsigned char flags,
|
||||
int /*unused, helps avoid empty __VA_ARGS__*/,
|
||||
const char* arg1Name,
|
||||
|
@ -925,7 +913,7 @@ namespace dawn::platform::TraceEvent {
|
|||
char phase,
|
||||
const unsigned char* categoryEnabled,
|
||||
const char* name,
|
||||
unsigned long long id,
|
||||
uint64_t id,
|
||||
unsigned char flags,
|
||||
int /*unused, helps avoid empty __VA_ARGS__*/,
|
||||
const char* arg1Name,
|
||||
|
|
|
@ -27,18 +27,18 @@ class BitSetIteratorTest : public testing::Test {
|
|||
|
||||
// Simple iterator test.
|
||||
TEST_F(BitSetIteratorTest, Iterator) {
|
||||
std::set<unsigned long> originalValues;
|
||||
std::set<uint32_t> originalValues;
|
||||
originalValues.insert(2);
|
||||
originalValues.insert(6);
|
||||
originalValues.insert(8);
|
||||
originalValues.insert(35);
|
||||
|
||||
for (unsigned long value : originalValues) {
|
||||
for (uint32_t value : originalValues) {
|
||||
mStateBits.set(value);
|
||||
}
|
||||
|
||||
std::set<unsigned long> readValues;
|
||||
for (unsigned long bit : IterateBitSet(mStateBits)) {
|
||||
std::set<uint32_t> readValues;
|
||||
for (uint32_t bit : IterateBitSet(mStateBits)) {
|
||||
EXPECT_EQ(1u, originalValues.count(bit));
|
||||
EXPECT_EQ(0u, readValues.count(bit));
|
||||
readValues.insert(bit);
|
||||
|
@ -52,7 +52,7 @@ TEST_F(BitSetIteratorTest, EmptySet) {
|
|||
// We don't use the FAIL gtest macro here since it returns immediately,
|
||||
// causing an unreachable code warning in MSVC
|
||||
bool sawBit = false;
|
||||
for (unsigned long bit : IterateBitSet(mStateBits)) {
|
||||
for (uint32_t bit : IterateBitSet(mStateBits)) {
|
||||
DAWN_UNUSED(bit);
|
||||
sawBit = true;
|
||||
}
|
||||
|
@ -73,9 +73,9 @@ TEST_F(BitSetIteratorTest, NonLValueBitset) {
|
|||
otherBits.set(3);
|
||||
otherBits.set(5);
|
||||
|
||||
std::set<unsigned long> seenBits;
|
||||
std::set<uint32_t> seenBits;
|
||||
|
||||
for (unsigned long bit : IterateBitSet(mStateBits & otherBits)) {
|
||||
for (uint32_t bit : IterateBitSet(mStateBits & otherBits)) {
|
||||
EXPECT_EQ(0u, seenBits.count(bit));
|
||||
seenBits.insert(bit);
|
||||
EXPECT_TRUE(mStateBits[bit]);
|
||||
|
|
Loading…
Reference in New Issue