source: webkit/trunk/JavaScriptCore/runtime/JSObjectWithGlobalObject.h@ 67583

Last change on this file since 67583 was 60057, checked in by [email protected], 15 years ago

Fix for https://bugs.webkit.org/show_bug.cgi?id=39575
Make JS DOMObject inherit from JSObjectWithGlobalObject instead of JSObject

Reviewed by Oliver Hunt.

JavaScriptCore:

Expose the global object stored in JSObjectWithGlobalObject.

(JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
(JSC::JSObjectWithGlobalObject::globalObject):

  • runtime/JSObjectWithGlobalObject.h:

WebCore:

  • Changes JSDOMWindowShell to inherit from JSObject instead of DOMObject since it doesn't ever go into any DOMObject tables. In a separate change, we may want to make this inherit from JSObjectWithGlobalObject since JSDOMWindowShell does store a global object pointer.
  • Change DOMObject to inherit from JSObjectWithGlobalObject instead of JSObject. In this change I am keeping around DOMObjectWithGlobalPointer, which now just uses the capabilities of JSObjectWithGlobalObject instead of implementing them itself. DOMObjectWithGlobalPointer will go away in a subsequent patch.
  • bindings/js/JSDOMBinding.h:

(WebCore::DOMObjectWithGlobalPointer::globalObject):
(WebCore::DOMObjectWithGlobalPointer::DOMObjectWithGlobalPointer):

  • bindings/js/JSDOMWindowShell.h:
  • bindings/js/JSDOMWrapper.h:

(WebCore::DOMObject::DOMObject):

File size: 2.2 KB
Line 
1/*
2 * Copyright (C) 2010 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#ifndef JSObjectWithGlobalObject_h
27#define JSObjectWithGlobalObject_h
28
29#include "JSObject.h"
30
31namespace JSC {
32
33class JSGlobalObject;
34
35class JSObjectWithGlobalObject : public JSObject {
36public:
37 static PassRefPtr<Structure> createStructure(JSValue proto)
38 {
39 return Structure::create(proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount);
40 }
41
42 JSGlobalObject* globalObject() const;
43
44protected:
45 JSObjectWithGlobalObject(JSGlobalObject*, NonNullPassRefPtr<Structure>);
46
47 JSObjectWithGlobalObject(NonNullPassRefPtr<Structure> structure)
48 : JSObject(structure)
49 {
50 // Should only be used by JSFunction when we aquire the JSFunction vptr.
51 }
52 static const unsigned AnonymousSlotCount = JSObject::AnonymousSlotCount + 1;
53 static const unsigned GlobalObjectSlot = 0;
54};
55
56} // namespace JSC
57
58#endif // JSObjectWithGlobalObject_h
Note: See TracBrowser for help on using the repository browser.