/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v25.8.0
src/node_url.h
101 строка
3 KB
Yagiz Nizipli
url: improve canParse() performance for non-onebyte strings
27 апр 2025, 17:52
Не верифицирован
27 апр 2025, 17:52
e0cf8ae
Код
Авторство
О чём код?
#ifndef SRC_NODE_URL_H_ #define SRC_NODE_URL_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include <cinttypes> #include "ada.h" #include "aliased_buffer.h" #include "node.h" #include "node_snapshotable.h" #include "util.h" #include "v8-fast-api-calls.h" #include "v8.h" #include <optional> #include <string> namespace node { class ExternalReferenceRegistry; namespace url { enum url_update_action { kProtocol = 0, kHost = 1, kHostname = 2, kPort = 3, kUsername = 4, kPassword = 5, kPathname = 6, kSearch = 7, kHash = 8, kHref = 9, }; class BindingData : public SnapshotableObject { public: BindingData(Realm* realm, v8::Local<v8::Object> obj); using InternalFieldInfo = InternalFieldInfoBase; SERIALIZABLE_OBJECT_METHODS() SET_BINDING_ID(url_binding_data) void MemoryInfo(MemoryTracker* tracker) const override; SET_SELF_SIZE(BindingData) SET_MEMORY_INFO_NAME(BindingData) static void DomainToASCII(const v8::FunctionCallbackInfo<v8::Value>& args); static void DomainToUnicode(const v8::FunctionCallbackInfo<v8::Value>& args); static void CanParse(const v8::FunctionCallbackInfo<v8::Value>& args); static bool FastCanParse(v8::Local<v8::Value> receiver, v8::Local<v8::Value> input, // NOLINTNEXTLINE(runtime/references) This is V8 api. v8::FastApiCallbackOptions& options); static bool FastCanParseWithBase( v8::Local<v8::Value> receiver, v8::Local<v8::Value> input, v8::Local<v8::Value> base, // NOLINTNEXTLINE(runtime/references) This is V8 api. v8::FastApiCallbackOptions& options); static void Format(const v8::FunctionCallbackInfo<v8::Value>& args); static void GetOrigin(const v8::FunctionCallbackInfo<v8::Value>& args); static void Parse(const v8::FunctionCallbackInfo<v8::Value>& args); static void PathToFileURL(const v8::FunctionCallbackInfo<v8::Value>& args); static void Update(const v8::FunctionCallbackInfo<v8::Value>& args); static void CreatePerIsolateProperties(IsolateData* isolate_data, v8::Local<v8::ObjectTemplate> ctor); static void CreatePerContextProperties(v8::Local<v8::Object> target, v8::Local<v8::Value> unused, v8::Local<v8::Context> context, void* priv); static void RegisterExternalReferences(ExternalReferenceRegistry* registry); private: static constexpr size_t kURLComponentsLength = 9; AliasedUint32Array url_components_buffer_; void UpdateComponents(const ada::url_components& components, const ada::scheme::type type); static v8::CFunction fast_can_parse_methods_[]; }; void ThrowInvalidURL(Environment* env, std::string_view input, std::optional<std::string> base); std::string FromFilePath(std::string_view file_path); std::optional<std::string> FileURLToPath(Environment* env, const ada::url_aggregator& file_url); } // namespace url } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_NODE_URL_H_