| /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- |
| * vim: set ts=8 sts=4 et sw=4 tw=99: |
| * This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| #ifndef jscompartmentinlines_h |
| #define jscompartmentinlines_h |
| |
| #include "jscompartment.h" |
| |
| #include "jscntxtinlines.h" |
| |
| inline void |
| JSCompartment::initGlobal(js::GlobalObject &global) |
| { |
| JS_ASSERT(global.compartment() == this); |
| JS_ASSERT(!global_); |
| global_ = &global; |
| } |
| |
| js::GlobalObject * |
| JSCompartment::maybeGlobal() const |
| { |
| JS_ASSERT_IF(global_, global_->compartment() == this); |
| return global_; |
| } |
| |
| js::AutoCompartment::AutoCompartment(JSContext *cx, JSObject *target) |
| : cx_(cx), |
| origin_(cx->compartment()) |
| { |
| cx_->enterCompartment(target->compartment()); |
| } |
| |
| js::AutoCompartment::AutoCompartment(JSContext *cx, JSCompartment *target) |
| : cx_(cx), |
| origin_(cx_->compartment()) |
| { |
| cx_->enterCompartment(target); |
| } |
| |
| js::AutoCompartment::~AutoCompartment() |
| { |
| cx_->leaveCompartment(origin_); |
| } |
| |
| #endif /* jscompartmentinlines_h */ |