@@ -13,8 +13,8 @@ namespace executorch {
13
13
namespace ET_RUNTIME_NAMESPACE {
14
14
namespace internal {
15
15
16
- /* static */ executorch::runtime:: Result<PteDataMap> PteDataMap::create (
17
- executorch::runtime:: DataLoader* loader,
16
+ /* static */ Result<PteDataMap> PteDataMap::create (
17
+ DataLoader* loader,
18
18
size_t segment_base_offset,
19
19
const flatbuffers::FlatbufferNamedData* named_data,
20
20
const flatbuffers::FlatbufferDataSegment* segments) {
@@ -26,22 +26,22 @@ namespace internal {
26
26
}
27
27
28
28
ET_NODISCARD
29
- executorch::runtime:: Result<executorch::runtime:: FreeableBuffer>
30
- PteDataMap::get_data ( executorch::aten::string_view key) const {
29
+ Result<FreeableBuffer> PteDataMap::get_data (
30
+ executorch::aten::string_view key) const {
31
31
for (uint32_t i = 0 ; i < named_data_->size (); i++) {
32
+ const auto * named_data_item = named_data_->Get (i);
32
33
ET_CHECK_OR_RETURN_ERROR (
33
- named_data_-> Get (i) != nullptr && named_data_-> Get (i) ->key () != nullptr ,
34
+ named_data_item != nullptr && named_data_item ->key () != nullptr ,
34
35
InvalidArgument,
35
36
" Searching for key %.*s: NamedData at index %d is null" ,
36
37
static_cast <int >(key.size ()),
37
38
key.data (),
38
39
i);
39
- if (strncmp (
40
- named_data_->Get (i)->key ()->c_str (),
41
- key.data (),
42
- named_data_->Get (i)->key ()->size ()) == 0 ) {
40
+ const auto * named_data_key = named_data_item->key ();
41
+ if (named_data_key->size () == key.size () &&
42
+ memcmp (named_data_key->data (), key.data (), key.size ()) == 0 ) {
43
43
// Get the segment index.
44
- size_t segment_index = named_data_-> Get (i) ->segment_index ();
44
+ size_t segment_index = named_data_item ->segment_index ();
45
45
46
46
// Get the segment offset and size.
47
47
ET_CHECK_OR_RETURN_ERROR (
@@ -52,39 +52,36 @@ PteDataMap::get_data(executorch::aten::string_view key) const {
52
52
static_cast <int >(key.size ()),
53
53
key.data (),
54
54
segments_->size ());
55
- size_t segment_offset = segments_->Get (segment_index)->offset ();
56
- size_t segment_size = segments_->Get (segment_index)->size ();
57
55
56
+ const auto * segment = segments_->Get (segment_index);
58
57
return loader_->load (
59
- /* offset=*/ segment_base_offset_ + segment_offset ,
60
- segment_size ,
58
+ /* offset=*/ segment_base_offset_ + segment-> offset () ,
59
+ segment-> size () ,
61
60
DataLoader::SegmentInfo (DataLoader::SegmentInfo::Type::External));
62
61
}
63
62
}
64
63
return Error::NotFound;
65
64
}
66
65
67
- ET_NODISCARD executorch::runtime::Result<uint32_t > PteDataMap::get_num_keys ()
68
- const {
66
+ ET_NODISCARD Result<uint32_t > PteDataMap::get_num_keys () const {
69
67
return named_data_->size ();
70
68
}
71
69
72
- ET_NODISCARD executorch::runtime::Result<const char *> PteDataMap::get_key (
73
- uint32_t index) const {
70
+ ET_NODISCARD Result<const char *> PteDataMap::get_key (uint32_t index) const {
74
71
ET_CHECK_OR_RETURN_ERROR (
75
72
index < named_data_->size (),
76
73
InvalidArgument,
77
74
" Index out of range: named_data size is %u, received index %u" ,
78
75
named_data_->size (),
79
76
index);
80
77
78
+ const auto * item = named_data_->Get (index);
81
79
ET_CHECK_OR_RETURN_ERROR (
82
- named_data_->Get (index) != nullptr &&
83
- named_data_->Get (index)->key () != nullptr ,
80
+ item != nullptr && item->key () != nullptr ,
84
81
InvalidArgument,
85
82
" NamedData at index %u is null" ,
86
83
index);
87
- return named_data_-> Get (index) ->key ()->c_str ();
84
+ return item ->key ()->c_str ();
88
85
}
89
86
90
87
} // namespace internal
0 commit comments