1402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// Copyright 2010 the V8 project authors. All rights reserved. 2402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// Redistribution and use in source and binary forms, with or without 3402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// modification, are permitted provided that the following conditions are 4402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// met: 5402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// 6402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// * Redistributions of source code must retain the above copyright 7402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// notice, this list of conditions and the following disclaimer. 8402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// * Redistributions in binary form must reproduce the above 9402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// copyright notice, this list of conditions and the following 10402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// disclaimer in the documentation and/or other materials provided 11402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// with the distribution. 12402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// * Neither the name of Google Inc. nor the names of its 13402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// contributors may be used to endorse or promote products derived 14402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// from this software without specific prior written permission. 15402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// 16402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu 286ded16be15dd865a9b21ea304d5273c8be299c87Steve Block#ifndef V8_VM_STATE_H_ 296ded16be15dd865a9b21ea304d5273c8be299c87Steve Block#define V8_VM_STATE_H_ 30402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu 31257744e915dfc84d6d07a6b2accf8402d9ffc708Ben Murdoch#include "allocation.h" 3244f0eee88ff00398ff7f715fab053374d808c90dSteve Block#include "isolate.h" 33f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdoch 34402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescunamespace v8 { 35402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescunamespace internal { 36402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu 376ded16be15dd865a9b21ea304d5273c8be299c87Steve Blockclass VMState BASE_EMBEDDED { 38402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu public: 3944f0eee88ff00398ff7f715fab053374d808c90dSteve Block inline VMState(Isolate* isolate, StateTag tag); 406ded16be15dd865a9b21ea304d5273c8be299c87Steve Block inline ~VMState(); 41402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu 42b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch private: 4344f0eee88ff00398ff7f715fab053374d808c90dSteve Block Isolate* isolate_; 44b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch StateTag previous_tag_; 45b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch}; 466ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 476ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 48b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdochclass ExternalCallbackScope BASE_EMBEDDED { 49b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch public: 5044f0eee88ff00398ff7f715fab053374d808c90dSteve Block inline ExternalCallbackScope(Isolate* isolate, Address callback); 51b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch inline ~ExternalCallbackScope(); 526ded16be15dd865a9b21ea304d5273c8be299c87Steve Block private: 5344f0eee88ff00398ff7f715fab053374d808c90dSteve Block Isolate* isolate_; 54b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch Address previous_callback_; 55402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu}; 56402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu 57402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu} } // namespace v8::internal 58402d937239b0e2fd11bf2f4fe972ad78aa9fd481Andrei Popescu 596ded16be15dd865a9b21ea304d5273c8be299c87Steve Block 606ded16be15dd865a9b21ea304d5273c8be299c87Steve Block#endif // V8_VM_STATE_H_ 61