Home | History | Annotate | Download | only in src
      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 "src/allocation.h"
      9 #include "src/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_
     48