| Index: include/v8.h
|
| diff --git a/include/v8.h b/include/v8.h
|
| index 3918b329e217860eb0ba708bd36b7f0cc7bed572..e5af0dd65f77f7d1192ca2c860d6c3464d6e7c95 100644
|
| --- a/include/v8.h
|
| +++ b/include/v8.h
|
| @@ -38,6 +38,9 @@
|
| #ifndef V8_H_
|
| #define V8_H_
|
|
|
| +// TODO(svenpanne) Remove me when the Chrome bindings are adapted.
|
| +#define V8_DISABLE_DEPRECATIONS 1
|
| +
|
| #include "v8stdint.h"
|
|
|
| #ifdef _WIN32
|
| @@ -3879,21 +3882,19 @@ class V8EXPORT Context {
|
|
|
|
|
| /**
|
| - * Multiple threads in V8 are allowed, but only one thread at a time
|
| - * is allowed to use any given V8 isolate. See Isolate class
|
| - * comments. The definition of 'using V8 isolate' includes
|
| - * accessing handles or holding onto object pointers obtained
|
| - * from V8 handles while in the particular V8 isolate. It is up
|
| - * to the user of V8 to ensure (perhaps with locking) that this
|
| - * constraint is not violated. In addition to any other synchronization
|
| - * mechanism that may be used, the v8::Locker and v8::Unlocker classes
|
| - * must be used to signal thead switches to V8.
|
| + * Multiple threads in V8 are allowed, but only one thread at a time is allowed
|
| + * to use any given V8 isolate, see the comments in the Isolate class. The
|
| + * definition of 'using a V8 isolate' includes accessing handles or holding onto
|
| + * object pointers obtained from V8 handles while in the particular V8 isolate.
|
| + * It is up to the user of V8 to ensure, perhaps with locking, that this
|
| + * constraint is not violated. In addition to any other synchronization
|
| + * mechanism that may be used, the v8::Locker and v8::Unlocker classes must be
|
| + * used to signal thead switches to V8.
|
| *
|
| - * v8::Locker is a scoped lock object. While it's
|
| - * active (i.e. between its construction and destruction) the current thread is
|
| - * allowed to use the locked isolate. V8 guarantees that an isolate can be
|
| - * locked by at most one thread at any time. In other words, the scope of a
|
| - * v8::Locker is a critical section.
|
| + * v8::Locker is a scoped lock object. While it's active, i.e. between its
|
| + * construction and destruction, the current thread is allowed to use the locked
|
| + * isolate. V8 guarantees that an isolate can be locked by at most one thread at
|
| + * any time. In other words, the scope of a v8::Locker is a critical section.
|
| *
|
| * Sample usage:
|
| * \code
|
| @@ -3907,9 +3908,9 @@ class V8EXPORT Context {
|
| * } // Destructor called here
|
| * \endcode
|
| *
|
| - * If you wish to stop using V8 in a thread A you can do this either
|
| - * by destroying the v8::Locker object as above or by constructing a
|
| - * v8::Unlocker object:
|
| + * If you wish to stop using V8 in a thread A you can do this either by
|
| + * destroying the v8::Locker object as above or by constructing a v8::Unlocker
|
| + * object:
|
| *
|
| * \code
|
| * {
|
| @@ -3922,19 +3923,17 @@ class V8EXPORT Context {
|
| * isolate->Enter();
|
| * \endcode
|
| *
|
| - * The Unlocker object is intended for use in a long-running callback
|
| - * from V8, where you want to release the V8 lock for other threads to
|
| - * use.
|
| + * The Unlocker object is intended for use in a long-running callback from V8,
|
| + * where you want to release the V8 lock for other threads to use.
|
| *
|
| - * The v8::Locker is a recursive lock. That is, you can lock more than
|
| - * once in a given thread. This can be useful if you have code that can
|
| - * be called either from code that holds the lock or from code that does
|
| - * not. The Unlocker is not recursive so you can not have several
|
| - * Unlockers on the stack at once, and you can not use an Unlocker in a
|
| - * thread that is not inside a Locker's scope.
|
| + * The v8::Locker is a recursive lock, i.e. you can lock more than once in a
|
| + * given thread. This can be useful if you have code that can be called either
|
| + * from code that holds the lock or from code that does not. The Unlocker is
|
| + * not recursive so you can not have several Unlockers on the stack at once, and
|
| + * you can not use an Unlocker in a thread that is not inside a Locker's scope.
|
| *
|
| - * An unlocker will unlock several lockers if it has to and reinstate
|
| - * the correct depth of locking on its destruction. eg.:
|
| + * An unlocker will unlock several lockers if it has to and reinstate the
|
| + * correct depth of locking on its destruction, e.g.:
|
| *
|
| * \code
|
| * // V8 not locked.
|
| @@ -3957,17 +3956,23 @@ class V8EXPORT Context {
|
| * }
|
| * // V8 Now no longer locked.
|
| * \endcode
|
| - *
|
| - *
|
| */
|
| class V8EXPORT Unlocker {
|
| public:
|
| /**
|
| - * Initialize Unlocker for a given Isolate. NULL means default isolate.
|
| + * Initialize Unlocker for a given Isolate.
|
| */
|
| - explicit Unlocker(Isolate* isolate = NULL);
|
| + V8_INLINE(explicit Unlocker(Isolate* isolate)) { Initialize(isolate); }
|
| +
|
| + /**
|
| + * Deprecated. Use Isolate version instead.
|
| + */
|
| + V8_DEPRECATED(Unlocker());
|
| +
|
| ~Unlocker();
|
| private:
|
| + void Initialize(Isolate* isolate);
|
| +
|
| internal::Isolate* isolate_;
|
| };
|
|
|
| @@ -3975,9 +3980,15 @@ class V8EXPORT Unlocker {
|
| class V8EXPORT Locker {
|
| public:
|
| /**
|
| - * Initialize Locker for a given Isolate. NULL means default isolate.
|
| + * Initialize Locker for a given Isolate.
|
| + */
|
| + V8_INLINE(explicit Locker(Isolate* isolate)) { Initialize(isolate); }
|
| +
|
| + /**
|
| + * Deprecated. Use Isolate version instead.
|
| */
|
| - explicit Locker(Isolate* isolate = NULL);
|
| + V8_DEPRECATED(Locker());
|
| +
|
| ~Locker();
|
|
|
| /**
|
| @@ -3995,10 +4006,10 @@ class V8EXPORT Locker {
|
| static void StopPreemption();
|
|
|
| /**
|
| - * Returns whether or not the locker for a given isolate, or default isolate
|
| - * if NULL is given, is locked by the current thread.
|
| + * Returns whether or not the locker for a given isolate, is locked by the
|
| + * current thread.
|
| */
|
| - static bool IsLocked(Isolate* isolate = NULL);
|
| + static bool IsLocked(Isolate* isolate);
|
|
|
| /**
|
| * Returns whether v8::Locker is being used by this V8 instance.
|
| @@ -4006,6 +4017,8 @@ class V8EXPORT Locker {
|
| static bool IsActive();
|
|
|
| private:
|
| + void Initialize(Isolate* isolate);
|
| +
|
| bool has_lock_;
|
| bool top_level_;
|
| internal::Isolate* isolate_;
|
|
|