From ef9f845bd1cd8966169baa2009b174e2e3064a48 Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Fri, 4 Feb 2022 12:30:31 -0800 Subject: [PATCH 1/4] Rebase --- ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp | 10 +++++----- ReactCommon/react/renderer/mapbuffer/MapBuffer.h | 13 +++++++++++-- .../react/renderer/mapbuffer/MapBufferBuilder.cpp | 14 ++++++++------ .../react/renderer/mapbuffer/MapBufferBuilder.h | 2 +- .../renderer/mapbuffer/tests/MapBufferTest.cpp | 1 + 5 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp b/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp index 3f3a6de85214..94d8c87bd323 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp +++ b/ReactCommon/react/renderer/mapbuffer/MapBuffer.cpp @@ -33,11 +33,11 @@ MapBuffer::MapBuffer(std::vector data) : bytes_(std::move(data)) { } } -uint32_t MapBuffer::getKeyBucket(Key key) const { - uint32_t lo = 0; - uint32_t hi = count_ - 1; +int32_t MapBuffer::getKeyBucket(Key key) const { + int32_t lo = 0; + int32_t hi = count_ - 1; while (lo <= hi) { - uint32_t mid = (lo + hi) >> 1; + int32_t mid = (lo + hi) >> 1; Key midVal = *reinterpret_cast(bytes_.data() + bucketOffset(mid)); @@ -112,7 +112,7 @@ MapBuffer MapBuffer::getMapBuffer(Key key) const { return MapBuffer(std::move(value)); } -uint32_t MapBuffer::size() const { +size_t MapBuffer::size() const { return bytes_.size(); } diff --git a/ReactCommon/react/renderer/mapbuffer/MapBuffer.h b/ReactCommon/react/renderer/mapbuffer/MapBuffer.h index 037e3e8ae34a..414b282bf7ac 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +++ b/ReactCommon/react/renderer/mapbuffer/MapBuffer.h @@ -80,7 +80,12 @@ class MapBuffer { uint32_t bufferSize; // Amount of bytes used to store the map in memory }; +<<<<<<< HEAD struct __attribute__((__packed__)) Bucket { +======= + #pragma pack(1) + struct Bucket { +>>>>>>> 0cb71be647e... Adjust MapBuffer Code Key key; uint16_t type; uint64_t data; @@ -90,7 +95,11 @@ class MapBuffer { }; static_assert(sizeof(Header) == 8, "MapBuffer header size is incorrect."); +<<<<<<< HEAD static_assert(sizeof(Bucket) == 12, "MapBuffer bucket size is incorrect."); +======= + static_assert(sizeof(Bucket) == 12, "MapBuffer bucket size is incorrect"); +>>>>>>> 0cb71be647e... Adjust MapBuffer Code /** * Data types available for serialization in MapBuffer @@ -124,7 +133,7 @@ class MapBuffer { // TODO T83483191: review this declaration MapBuffer getMapBuffer(MapBuffer::Key key) const; - uint32_t size() const; + size_t size() const; uint8_t const *data() const; @@ -140,7 +149,7 @@ class MapBuffer { // returns the relative offset of the first byte of dynamic data int32_t getDynamicDataOffset() const; - uint32_t getKeyBucket(MapBuffer::Key key) const; + int32_t getKeyBucket(MapBuffer::Key key) const; friend ReadableMapBuffer; }; diff --git a/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp b/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp index 3d06fba880a1..1bdb381dc28d 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +++ b/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp @@ -23,6 +23,8 @@ MapBuffer MapBufferBuilder::EMPTY() { MapBufferBuilder::MapBufferBuilder(uint32_t initialSize) { buckets_.reserve(initialSize); + header_.count = 0; + header_.bufferSize = 0; } void MapBufferBuilder::storeKeyValue( @@ -64,7 +66,7 @@ void MapBufferBuilder::putDouble(MapBuffer::Key key, double value) { key, MapBuffer::DataType::Double, reinterpret_cast(&value), - DOUBLE_SIZE); + static_cast(DOUBLE_SIZE)); } void MapBufferBuilder::putInt(MapBuffer::Key key, int32_t value) { @@ -76,7 +78,7 @@ void MapBufferBuilder::putInt(MapBuffer::Key key, int32_t value) { } void MapBufferBuilder::putString(MapBuffer::Key key, std::string const &value) { - int32_t strSize = value.size(); + auto strSize = value.size(); const char *strData = value.data(); // format [length of string (int)] + [Array of Characters in the string] @@ -94,7 +96,7 @@ void MapBufferBuilder::putString(MapBuffer::Key key, std::string const &value) { } void MapBufferBuilder::putMapBuffer(MapBuffer::Key key, MapBuffer const &map) { - int32_t mapBufferSize = map.size(); + auto mapBufferSize = map.size(); auto offset = dynamicData_.size(); @@ -122,9 +124,9 @@ MapBuffer MapBufferBuilder::build() { // Create buffer: [header] + [key, values] + [dynamic data] auto bucketSize = buckets_.size() * sizeof(MapBuffer::Bucket); auto headerSize = sizeof(MapBuffer::Header); - uint32_t bufferSize = headerSize + bucketSize + dynamicData_.size(); + auto bufferSize = headerSize + bucketSize + dynamicData_.size(); - header_.bufferSize = bufferSize; + header_.bufferSize = static_cast(bufferSize); if (needsSort_) { std::sort(buckets_.begin(), buckets_.end(), compareBuckets); @@ -144,4 +146,4 @@ MapBuffer MapBufferBuilder::build() { } } // namespace react -} // namespace facebook +} // namespace facebook diff --git a/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h b/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h index 154c5daa63d7..aa8ae8794074 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h +++ b/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.h @@ -38,7 +38,7 @@ class MapBufferBuilder { MapBuffer build(); private: - MapBuffer::Header header_ = {.count = 0, .bufferSize = 0}; + MapBuffer::Header header_; std::vector buckets_{}; diff --git a/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp b/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp index f0d5c737541a..1349f3f7869e 100644 --- a/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +++ b/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp @@ -8,6 +8,7 @@ #include #include +#pragma pack(pop, 1) #include #include From 4f05523a9e1f8ddf269dba68a69131ad52e79f8f Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Fri, 4 Feb 2022 12:32:04 -0800 Subject: [PATCH 2/4] Resolve Conflicts --- ReactCommon/react/renderer/mapbuffer/MapBuffer.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/ReactCommon/react/renderer/mapbuffer/MapBuffer.h b/ReactCommon/react/renderer/mapbuffer/MapBuffer.h index 414b282bf7ac..b2fb01a2029a 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +++ b/ReactCommon/react/renderer/mapbuffer/MapBuffer.h @@ -80,12 +80,8 @@ class MapBuffer { uint32_t bufferSize; // Amount of bytes used to store the map in memory }; -<<<<<<< HEAD - struct __attribute__((__packed__)) Bucket { -======= #pragma pack(1) struct Bucket { ->>>>>>> 0cb71be647e... Adjust MapBuffer Code Key key; uint16_t type; uint64_t data; @@ -95,11 +91,7 @@ class MapBuffer { }; static_assert(sizeof(Header) == 8, "MapBuffer header size is incorrect."); -<<<<<<< HEAD static_assert(sizeof(Bucket) == 12, "MapBuffer bucket size is incorrect."); -======= - static_assert(sizeof(Bucket) == 12, "MapBuffer bucket size is incorrect"); ->>>>>>> 0cb71be647e... Adjust MapBuffer Code /** * Data types available for serialization in MapBuffer From 87dd7d2fcf3955b5f49f3f90e8822162e2d08e6e Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Mon, 7 Feb 2022 12:39:07 -0800 Subject: [PATCH 3/4] Address Feedback --- ReactCommon/react/renderer/mapbuffer/MapBuffer.h | 3 ++- ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp | 6 +++--- .../react/renderer/mapbuffer/tests/MapBufferTest.cpp | 1 - 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ReactCommon/react/renderer/mapbuffer/MapBuffer.h b/ReactCommon/react/renderer/mapbuffer/MapBuffer.h index b2fb01a2029a..3644eac899ed 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBuffer.h +++ b/ReactCommon/react/renderer/mapbuffer/MapBuffer.h @@ -80,7 +80,7 @@ class MapBuffer { uint32_t bufferSize; // Amount of bytes used to store the map in memory }; - #pragma pack(1) + #pragma pack(push, 1) struct Bucket { Key key; uint16_t type; @@ -89,6 +89,7 @@ class MapBuffer { Bucket(Key key, uint16_t type, uint64_t data) : key(key), type(type), data(data) {} }; + #pragma pack(pop) static_assert(sizeof(Header) == 8, "MapBuffer header size is incorrect."); static_assert(sizeof(Bucket) == 12, "MapBuffer bucket size is incorrect."); diff --git a/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp b/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp index 1bdb381dc28d..b8dc35b8044d 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +++ b/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp @@ -14,7 +14,7 @@ namespace facebook { namespace react { constexpr uint32_t INT_SIZE = sizeof(uint32_t); -constexpr double DOUBLE_SIZE = sizeof(double); +constexpr uint32_t DOUBLE_SIZE = sizeof(double); constexpr uint32_t MAX_BUCKET_VALUE_SIZE = sizeof(uint64_t); MapBuffer MapBufferBuilder::EMPTY() { @@ -66,7 +66,7 @@ void MapBufferBuilder::putDouble(MapBuffer::Key key, double value) { key, MapBuffer::DataType::Double, reinterpret_cast(&value), - static_cast(DOUBLE_SIZE)); + DOUBLE_SIZE); } void MapBufferBuilder::putInt(MapBuffer::Key key, int32_t value) { @@ -126,7 +126,7 @@ MapBuffer MapBufferBuilder::build() { auto headerSize = sizeof(MapBuffer::Header); auto bufferSize = headerSize + bucketSize + dynamicData_.size(); - header_.bufferSize = static_cast(bufferSize); + header_.bufferSize = bufferSize; if (needsSort_) { std::sort(buckets_.begin(), buckets_.end(), compareBuckets); diff --git a/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp b/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp index 1349f3f7869e..f0d5c737541a 100644 --- a/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp +++ b/ReactCommon/react/renderer/mapbuffer/tests/MapBufferTest.cpp @@ -8,7 +8,6 @@ #include #include -#pragma pack(pop, 1) #include #include From 1f5998d22d9fbb323f396296ca276b3c435dded6 Mon Sep 17 00:00:00 2001 From: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com> Date: Tue, 8 Feb 2022 11:31:32 -0800 Subject: [PATCH 4/4] Address Feedback --- ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp b/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp index b8dc35b8044d..2c026e45fa78 100644 --- a/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +++ b/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp @@ -126,7 +126,7 @@ MapBuffer MapBufferBuilder::build() { auto headerSize = sizeof(MapBuffer::Header); auto bufferSize = headerSize + bucketSize + dynamicData_.size(); - header_.bufferSize = bufferSize; + header_.bufferSize = static_cast(bufferSize); if (needsSort_) { std::sort(buckets_.begin(), buckets_.end(), compareBuckets);