Index: src/v8.h |
=================================================================== |
--- src/v8.h (revision 3427) |
+++ src/v8.h (working copy) |
@@ -58,6 +58,7 @@ |
#include "allocation.h" |
#include "utils.h" |
#include "flags.h" |
+#include "v8-global-context.h" |
// Objects & heap |
#include "objects.h" |
@@ -73,7 +74,45 @@ |
namespace internal { |
class Deserializer; |
+class V8; |
+class V8Data { |
+ public: |
+ FatalErrorCallback exception_behavior() const { |
+ return exception_behavior_; |
+ } |
+ |
+ void exception_behavior(FatalErrorCallback exception_behavior) { |
+ exception_behavior_ = exception_behavior; |
+ } |
+ private: |
+ // Track whether this V8 instance has ever called v8::Locker. This allows the |
+ // API code to verify that the lock is always held when V8 is being entered. |
+ |
+ bool active_; |
+ |
+ // True if engine is currently running |
+ bool is_running_; |
+ // True if V8 has ever been run |
+ bool has_been_setup_; |
+ // True if error has been signaled for current engine |
+ // (reset to false if engine is restarted) |
+ bool has_fatal_error_; |
+ // True if engine has been shut down |
+ // (reset if engine is restarted) |
+ bool has_been_disposed_; |
+ |
+ // --- E x c e p t i o n B e h a v i o r --- |
+ FatalErrorCallback exception_behavior_; |
+ |
+ V8Data(); |
+ |
+ friend class V8Context; |
+ friend class V8; |
+ friend class Locker; |
+ DISALLOW_COPY_AND_ASSIGN(V8Data); |
+}; |
+ |
class V8 : public AllStatic { |
public: |
// Global actions. |
@@ -84,9 +123,12 @@ |
// empty heap. |
static bool Initialize(Deserializer* des); |
static void TearDown(); |
- static bool IsRunning() { return is_running_; } |
+ static bool IsRunning() { return v8_context()->v8_data_.is_running_; } |
// To be dead you have to have lived |
- static bool IsDead() { return has_fatal_error_ || has_been_disposed_; } |
+ static bool IsDead() { |
+ return v8_context()->v8_data_.has_fatal_error_ || |
+ v8_context()->v8_data_.has_been_disposed_; |
+ } |
static void SetFatalError(); |
// Report process out of memory. Implementation found in api.cc. |
@@ -98,18 +140,6 @@ |
// Idle notification directly from the API. |
static bool IdleNotification(); |
- |
- private: |
- // True if engine is currently running |
- static bool is_running_; |
- // True if V8 has ever been run |
- static bool has_been_setup_; |
- // True if error has been signaled for current engine |
- // (reset to false if engine is restarted) |
- static bool has_fatal_error_; |
- // True if engine has been shut down |
- // (reset if engine is restarted) |
- static bool has_been_disposed_; |
}; |
} } // namespace v8::internal |