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_; |