◐ Shell
clean mode source ↗

src: add memory retainer traits for external types · nodejs/node@5c82ef3

@@ -8,6 +8,48 @@

88

#include "path.h"

99

#include "util-inl.h"

101011+

namespace node {

12+

using node::url_pattern::URLPatternRegexProvider;

13+14+

template <>

15+

struct MemoryRetainerTraits<ada::url_pattern<URLPatternRegexProvider>> {

16+

using Type = ada::url_pattern<URLPatternRegexProvider>;

17+

static void MemoryInfo(MemoryTracker* tracker, const Type& value) {

18+

tracker->TraitTrackInline(value.protocol_component, "protocol_component");

19+

tracker->TraitTrackInline(value.username_component, "username_component");

20+

tracker->TraitTrackInline(value.password_component, "password_component");

21+

tracker->TraitTrackInline(value.hostname_component, "hostname_component");

22+

tracker->TraitTrackInline(value.port_component, "port_component");

23+

tracker->TraitTrackInline(value.pathname_component, "pathname_component");

24+

tracker->TraitTrackInline(value.search_component, "search_component");

25+

tracker->TraitTrackInline(value.hash_component, "hash_component");

26+

}

27+28+

static const char* MemoryInfoName(const Type& value) {

29+

return "ada::url_pattern";

30+

}

31+32+

static size_t SelfSize(const Type& value) { return sizeof(value); }

33+

};

34+35+

template <>

36+

struct MemoryRetainerTraits<

37+

ada::url_pattern_component<URLPatternRegexProvider>> {

38+

using Type = ada::url_pattern_component<URLPatternRegexProvider>;

39+

static void MemoryInfo(MemoryTracker* tracker, const Type& value) {

40+

tracker->TrackField("pattern", value.pattern);

41+

tracker->TrackField("group_name_list", value.group_name_list);

42+

}

43+44+

static const char* MemoryInfoName(const Type& value) {

45+

return "ada::url_pattern_component";

46+

}

47+48+

static size_t SelfSize(const Type& value) { return sizeof(value); }

49+

};

50+51+

} // namespace node

52+1153

namespace node::url_pattern {

12541355

using v8::Array;

@@ -125,13 +167,7 @@ URLPattern::URLPattern(Environment* env,

125167

}

126168127169

void URLPattern::MemoryInfo(MemoryTracker* tracker) const {

128-

tracker->TrackFieldWithSize("protocol", url_pattern_.get_protocol().size());

129-

tracker->TrackFieldWithSize("username", url_pattern_.get_username().size());

130-

tracker->TrackFieldWithSize("password", url_pattern_.get_password().size());

131-

tracker->TrackFieldWithSize("hostname", url_pattern_.get_hostname().size());

132-

tracker->TrackFieldWithSize("pathname", url_pattern_.get_pathname().size());

133-

tracker->TrackFieldWithSize("search", url_pattern_.get_search().size());

134-

tracker->TrackFieldWithSize("hash", url_pattern_.get_hash().size());

170+

tracker->TraitTrackInline(url_pattern_, "url_pattern");

135171

}

136172137173

void URLPattern::New(const FunctionCallbackInfo<Value>& args) {