Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 : * vim: set ts=8 sts=4 et sw=4 tw=99:
3 : * This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef vm_WrapperObject_h
8 : #define vm_WrapperObject_h
9 :
10 : #include "jsobj.h"
11 : #include "jswrapper.h"
12 :
13 : #include "vm/ProxyObject.h"
14 :
15 : namespace js {
16 :
17 : // Proxy family for wrappers.
18 : // This variable exists solely to provide a unique address for use as an identifier.
19 : extern const char sWrapperFamily;
20 :
21 : class WrapperObject : public ProxyObject
22 : {
23 : };
24 :
25 : class CrossCompartmentWrapperObject : public WrapperObject
26 : {
27 : public:
28 : static const unsigned GrayLinkReservedSlot = 1;
29 : };
30 :
31 : } // namespace js
32 :
33 : template<>
34 : inline bool
35 331101 : JSObject::is<js::WrapperObject>() const
36 : {
37 331101 : return js::IsWrapper(const_cast<JSObject*>(this));
38 : }
39 :
40 : template<>
41 : inline bool
42 25402 : JSObject::is<js::CrossCompartmentWrapperObject>() const
43 : {
44 25402 : return js::IsCrossCompartmentWrapper(const_cast<JSObject*>(this));
45 : }
46 :
47 : #endif /* vm_WrapperObject_h */
|