Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / v8 / src / vm-state.h
1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef V8_VM_STATE_H_
6 #define V8_VM_STATE_H_
7
8 #include "allocation.h"
9 #include "isolate.h"
10
11 namespace v8 {
12 namespace internal {
13
14 template <StateTag Tag>
15 class VMState BASE_EMBEDDED {
16  public:
17   explicit inline VMState(Isolate* isolate);
18   inline ~VMState();
19
20  private:
21   Isolate* isolate_;
22   StateTag previous_tag_;
23 };
24
25
26 class ExternalCallbackScope BASE_EMBEDDED {
27  public:
28   inline ExternalCallbackScope(Isolate* isolate, Address callback);
29   inline ~ExternalCallbackScope();
30   Address callback() { return callback_; }
31   Address* callback_address() { return &callback_; }
32   ExternalCallbackScope* previous() { return previous_scope_; }
33   inline Address scope_address();
34
35  private:
36   Isolate* isolate_;
37   Address callback_;
38   ExternalCallbackScope* previous_scope_;
39 #ifdef USE_SIMULATOR
40   Address scope_address_;
41 #endif
42 };
43
44 } }  // namespace v8::internal
45
46
47 #endif  // V8_VM_STATE_H_