summaryrefslogtreecommitdiff
path: root/src/node_persistent.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/node_persistent.h')
-rw-r--r--src/node_persistent.h66
1 files changed, 0 insertions, 66 deletions
diff --git a/src/node_persistent.h b/src/node_persistent.h
deleted file mode 100644
index 6126ebc6c2..0000000000
--- a/src/node_persistent.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef SRC_NODE_PERSISTENT_H_
-#define SRC_NODE_PERSISTENT_H_
-
-#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
-
-#include "v8.h"
-
-namespace node {
-
-template <typename T>
-struct ResetInDestructorPersistentTraits {
- static const bool kResetInDestructor = true;
- template <typename S, typename M>
- // Disallow copy semantics by leaving this unimplemented.
- inline static void Copy(
- const v8::Persistent<S, M>&,
- v8::Persistent<T, ResetInDestructorPersistentTraits<T>>*);
-};
-
-// v8::Persistent does not reset the object slot in its destructor. That is
-// acknowledged as a flaw in the V8 API and expected to change in the future
-// but for now node::Persistent is the easier and safer alternative.
-template <typename T>
-using Persistent = v8::Persistent<T, ResetInDestructorPersistentTraits<T>>;
-
-class PersistentToLocal {
- public:
- // If persistent.IsWeak() == false, then do not call persistent.Reset()
- // while the returned Local<T> is still in scope, it will destroy the
- // reference to the object.
- template <class TypeName>
- static inline v8::Local<TypeName> Default(
- v8::Isolate* isolate,
- const Persistent<TypeName>& persistent) {
- if (persistent.IsWeak()) {
- return PersistentToLocal::Weak(isolate, persistent);
- } else {
- return PersistentToLocal::Strong(persistent);
- }
- }
-
- // Unchecked conversion from a non-weak Persistent<T> to Local<T>,
- // use with care!
- //
- // Do not call persistent.Reset() while the returned Local<T> is still in
- // scope, it will destroy the reference to the object.
- template <class TypeName>
- static inline v8::Local<TypeName> Strong(
- const Persistent<TypeName>& persistent) {
- return *reinterpret_cast<v8::Local<TypeName>*>(
- const_cast<Persistent<TypeName>*>(&persistent));
- }
-
- template <class TypeName>
- static inline v8::Local<TypeName> Weak(
- v8::Isolate* isolate,
- const Persistent<TypeName>& persistent) {
- return v8::Local<TypeName>::New(isolate, persistent);
- }
-};
-
-} // namespace node
-
-#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
-
-#endif // SRC_NODE_PERSISTENT_H_