Extract toObject()

Before: 9884, 8796, 9702, 12668, 9964
After:  9874, 8796, 9694, 12634, 9970
Target: 9800, 8458, 9634, 12290, 9702
This commit is contained in:
Benoit Blanchon
2025-09-17 21:10:46 +02:00
parent f72526c093
commit 0e136aaf0a
3 changed files with 10 additions and 4 deletions

View File

@@ -78,8 +78,8 @@ class JsonDeserializer {
case '{':
if (filter.allowObject())
return parseObject(VariantImpl(variant, resources_).toObject(),
filter, nestingLimit);
return parseObject(VariantImpl::toObject(variant, resources_), filter,
nestingLimit);
else
return skipObject(nestingLimit);

View File

@@ -388,7 +388,7 @@ class MsgPackDeserializer {
ObjectImpl object;
if (filter.allowObject()) {
ARDUINOJSON_ASSERT(variant != 0);
object = VariantImpl(variant, resources_).toObject();
object = VariantImpl::toObject(variant, resources_);
}
for (; n; --n) {

View File

@@ -493,9 +493,15 @@ class VariantImpl {
}
ObjectImpl toObject() {
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
if (!data_)
return ObjectImpl();
return toObject(data_, resources_);
}
static ObjectImpl toObject(VariantData* data_, ResourceManager* resources_) {
ARDUINOJSON_ASSERT(data_ != nullptr);
ARDUINOJSON_ASSERT(data_->type == VariantType::Null);
ARDUINOJSON_ASSERT(resources_ != nullptr);
data_->type = VariantType::Object;
return ObjectImpl(new (&data_->content.asCollection) CollectionData(),
resources_);