Commit d5f08e4e authored by Clemens Hammacher's avatar Clemens Hammacher Committed by Commit Bot

[api] Remove unowned Extensions interface

Extensions are now always passed via unique_ptr and are owned by V8.
This CL removes the deprecated API where the embedder would own the
Extension, but has no mechanism for deleting it.

R=ulan@chromium.org

Bug: v8:8725
Change-Id: Icb83660fad9d04c66f8db2265091ebabcbb197c4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1514493Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60186}
parent 6be6d85d
......@@ -6497,10 +6497,6 @@ class V8_EXPORT Extension { // NOLINT
bool auto_enable_;
};
V8_DEPRECATED(
"Use unique_ptr version or stop using extension (http://crbug.com/334679).",
void V8_EXPORT RegisterExtension(Extension* extension));
void V8_EXPORT RegisterExtension(std::unique_ptr<Extension>);
// --- Statics ---
......
......@@ -899,19 +899,9 @@ void V8::SetFlagsFromCommandLine(int* argc, char** argv, bool remove_flags) {
RegisteredExtension* RegisteredExtension::first_extension_ = nullptr;
RegisteredExtension::RegisteredExtension(Extension* extension)
: legacy_unowned_extension_(extension) {}
RegisteredExtension::RegisteredExtension(std::unique_ptr<Extension> extension)
: extension_(std::move(extension)) {}
// static
void RegisteredExtension::Register(Extension* extension) {
RegisteredExtension* new_extension = new RegisteredExtension(extension);
new_extension->next_ = first_extension_;
first_extension_ = new_extension;
}
// static
void RegisteredExtension::Register(std::unique_ptr<Extension> extension) {
RegisteredExtension* new_extension =
......@@ -947,8 +937,6 @@ class ExtensionResource : public String::ExternalOneByteStringResource {
};
} // anonymous namespace
void RegisterExtension(Extension* that) { RegisteredExtension::Register(that); }
void RegisterExtension(std::unique_ptr<Extension> extension) {
RegisteredExtension::Register(std::move(extension));
}
......
......@@ -71,20 +71,14 @@ class ApiFunction {
class RegisteredExtension {
public:
static void Register(Extension*);
static void Register(std::unique_ptr<Extension>);
static void UnregisterAll();
Extension* extension() const {
return legacy_unowned_extension_ ? legacy_unowned_extension_
: extension_.get();
}
Extension* extension() const { return extension_.get(); }
RegisteredExtension* next() const { return next_; }
static RegisteredExtension* first_extension() { return first_extension_; }
private:
explicit RegisteredExtension(Extension*);
explicit RegisteredExtension(std::unique_ptr<Extension>);
// TODO(clemensh): Remove this after the 7.4 branch.
Extension* legacy_unowned_extension_ = nullptr;
std::unique_ptr<Extension> extension_;
RegisteredExtension* next_ = nullptr;
static RegisteredExtension* first_extension_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment