source: webkit/trunk/JavaScriptCore/API/JSClassRef.h@ 38137

Last change on this file since 38137 was 38137, checked in by [email protected], 17 years ago

2008-11-05 Cameron Zwarich <[email protected]>

Rubber-stamped by Sam Weinig.

Move more files to the runtime subdirectory of JavaScriptCore.

JavaScriptCore:

  • API/APICast.h:
  • API/JSBase.cpp:
  • API/JSCallbackObject.cpp:
  • API/JSClassRef.cpp:
  • API/JSClassRef.h:
  • API/JSStringRefCF.cpp:
  • API/JSValueRef.cpp:
  • API/OpaqueJSString.cpp:
  • API/OpaqueJSString.h:
  • AllInOneFile.cpp:
  • GNUmakefile.am:
  • JavaScriptCore.pri:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • JavaScriptCoreSources.bkl:
  • VM/CodeBlock.h:
  • VM/CodeGenerator.cpp:
  • VM/Machine.cpp:
  • VM/RegisterFile.h:
  • debugger/Debugger.h:
  • kjs/SourceProvider.h:
  • kjs/TypeInfo.h: Removed.
  • kjs/collector.cpp: Removed.
  • kjs/collector.h: Removed.
  • kjs/completion.h: Removed.
  • kjs/create_hash_table:
  • kjs/identifier.cpp: Removed.
  • kjs/identifier.h: Removed.
  • kjs/interpreter.cpp: Removed.
  • kjs/interpreter.h: Removed.
  • kjs/lexer.cpp:
  • kjs/lexer.h:
  • kjs/lookup.cpp: Removed.
  • kjs/lookup.h: Removed.
  • kjs/nodes.cpp:
  • kjs/nodes.h:
  • kjs/operations.cpp: Removed.
  • kjs/operations.h: Removed.
  • kjs/protect.h: Removed.
  • kjs/regexp.cpp: Removed.
  • kjs/regexp.h: Removed.
  • kjs/ustring.cpp: Removed.
  • kjs/ustring.h: Removed.
  • pcre/pcre_exec.cpp:
  • profiler/CallIdentifier.h:
  • profiler/Profile.h:
  • runtime/ArrayConstructor.cpp:
  • runtime/ArrayPrototype.cpp:
  • runtime/ArrayPrototype.h:
  • runtime/Collector.cpp: Copied from kjs/collector.cpp.
  • runtime/Collector.h: Copied from kjs/collector.h.
  • runtime/CollectorHeapIterator.h:
  • runtime/Completion.h: Copied from kjs/completion.h.
  • runtime/ErrorPrototype.cpp:
  • runtime/Identifier.cpp: Copied from kjs/identifier.cpp.
  • runtime/Identifier.h: Copied from kjs/identifier.h.
  • runtime/InitializeThreading.cpp:
  • runtime/Interpreter.cpp: Copied from kjs/interpreter.cpp.
  • runtime/Interpreter.h: Copied from kjs/interpreter.h.
  • runtime/JSCell.h:
  • runtime/JSGlobalData.cpp:
  • runtime/JSGlobalData.h:
  • runtime/JSLock.cpp:
  • runtime/JSNumberCell.cpp:
  • runtime/JSNumberCell.h:
  • runtime/JSObject.cpp:
  • runtime/JSValue.h:
  • runtime/Lookup.cpp: Copied from kjs/lookup.cpp.
  • runtime/Lookup.h: Copied from kjs/lookup.h.
  • runtime/MathObject.cpp:
  • runtime/NativeErrorPrototype.cpp:
  • runtime/NumberPrototype.cpp:
  • runtime/Operations.cpp: Copied from kjs/operations.cpp.
  • runtime/Operations.h: Copied from kjs/operations.h.
  • runtime/PropertyMapHashTable.h:
  • runtime/Protect.h: Copied from kjs/protect.h.
  • runtime/RegExp.cpp: Copied from kjs/regexp.cpp.
  • runtime/RegExp.h: Copied from kjs/regexp.h.
  • runtime/RegExpConstructor.cpp:
  • runtime/RegExpObject.h:
  • runtime/RegExpPrototype.cpp:
  • runtime/SmallStrings.h:
  • runtime/StringObjectThatMasqueradesAsUndefined.h:
  • runtime/StructureID.cpp:
  • runtime/StructureID.h:
  • runtime/StructureIDTransitionTable.h:
  • runtime/SymbolTable.h:
  • runtime/TypeInfo.h: Copied from kjs/TypeInfo.h.
  • runtime/UString.cpp: Copied from kjs/ustring.cpp.
  • runtime/UString.h: Copied from kjs/ustring.h.
  • wrec/CharacterClassConstructor.h:
  • wrec/WREC.h:

WebCore:

  • ForwardingHeaders/kjs/collector.h: Removed.
  • ForwardingHeaders/kjs/completion.h: Removed.
  • ForwardingHeaders/kjs/identifier.h: Removed.
  • ForwardingHeaders/kjs/interpreter.h: Removed.
  • ForwardingHeaders/kjs/lookup.h: Removed.
  • ForwardingHeaders/kjs/operations.h: Removed.
  • ForwardingHeaders/kjs/protect.h: Removed.
  • ForwardingHeaders/kjs/ustring.h: Removed.
  • ForwardingHeaders/runtime/Collector.h: Copied from ForwardingHeaders/kjs/collector.h.
  • ForwardingHeaders/runtime/Completion.h: Copied from ForwardingHeaders/kjs/completion.h.
  • ForwardingHeaders/runtime/Identifier.h: Copied from ForwardingHeaders/kjs/identifier.h.
  • ForwardingHeaders/runtime/Interpreter.h: Copied from ForwardingHeaders/kjs/interpreter.h.
  • ForwardingHeaders/runtime/Lookup.h: Copied from ForwardingHeaders/kjs/lookup.h.
  • ForwardingHeaders/runtime/Operations.h: Copied from ForwardingHeaders/kjs/operations.h.
  • ForwardingHeaders/runtime/Protect.h: Copied from ForwardingHeaders/kjs/protect.h.
  • ForwardingHeaders/runtime/UString.h: Copied from ForwardingHeaders/kjs/ustring.h.
  • bindings/js/GCController.cpp:
  • bindings/js/JSCustomPositionCallback.h:
  • bindings/js/JSCustomPositionErrorCallback.h:
  • bindings/js/JSCustomSQLStatementCallback.h:
  • bindings/js/JSCustomSQLStatementErrorCallback.h:
  • bindings/js/JSCustomSQLTransactionErrorCallback.h:
  • bindings/js/JSCustomVoidCallback.h:
  • bindings/js/JSDOMBinding.h:
  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSEventListener.h:
  • bindings/js/ScheduledAction.h:
  • bindings/js/ScriptController.cpp:
  • bindings/js/ScriptController.h:
  • bindings/objc/WebScriptObject.mm:
  • bindings/scripts/CodeGeneratorJS.pm:
  • bridge/NP_jsobject.cpp:
  • bridge/c/c_class.cpp:
  • bridge/jni/jni_class.cpp:
  • bridge/jni/jni_jsobject.mm:
  • bridge/npruntime.cpp:
  • bridge/runtime_root.h:
  • history/CachedPage.h:
  • html/CanvasRenderingContext2D.cpp:
  • html/HTMLCanvasElement.cpp:
  • inspector/InspectorController.cpp:
  • inspector/JavaScriptCallFrame.cpp:
  • page/Console.cpp:
  • page/Page.cpp:
  • platform/text/AtomicString.cpp:
  • platform/text/PlatformString.h:

WebKit/mac:

  • ForwardingHeaders/kjs/collector.h: Removed.
  • ForwardingHeaders/kjs/identifier.h: Removed.
  • ForwardingHeaders/kjs/interpreter.h: Removed.
  • ForwardingHeaders/kjs/lookup.h: Removed.
  • ForwardingHeaders/kjs/operations.h: Removed.
  • ForwardingHeaders/kjs/protect.h: Removed.
  • ForwardingHeaders/runtime/Interpreter.h: Copied from ForwardingHeaders/kjs/interpreter.h.
  • WebView/WebScriptDebugDelegate.mm:

WebKit/wx:

  • WebFrame.cpp:
  • WebView.cpp:
  • Property svn:eol-style set to native
File size: 4.9 KB
Line 
1/*
2 * Copyright (C) 2006 Apple Computer, 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 COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#ifndef JSClassRef_h
27#define JSClassRef_h
28
29#include "JSObjectRef.h"
30
31#include <runtime/JSObject.h>
32#include <runtime/Protect.h>
33#include <runtime/UString.h>
34#include <wtf/HashMap.h>
35#include <wtf/RefCounted.h>
36
37struct StaticValueEntry {
38 StaticValueEntry(JSObjectGetPropertyCallback _getProperty, JSObjectSetPropertyCallback _setProperty, JSPropertyAttributes _attributes)
39 : getProperty(_getProperty), setProperty(_setProperty), attributes(_attributes)
40 {
41 }
42
43 JSObjectGetPropertyCallback getProperty;
44 JSObjectSetPropertyCallback setProperty;
45 JSPropertyAttributes attributes;
46};
47
48struct StaticFunctionEntry {
49 StaticFunctionEntry(JSObjectCallAsFunctionCallback _callAsFunction, JSPropertyAttributes _attributes)
50 : callAsFunction(_callAsFunction), attributes(_attributes)
51 {
52 }
53
54 JSObjectCallAsFunctionCallback callAsFunction;
55 JSPropertyAttributes attributes;
56};
57
58typedef HashMap<RefPtr<JSC::UString::Rep>, StaticValueEntry*> OpaqueJSClassStaticValuesTable;
59typedef HashMap<RefPtr<JSC::UString::Rep>, StaticFunctionEntry*> OpaqueJSClassStaticFunctionsTable;
60
61class OpaqueJSClass;
62
63// An OpaqueJSClass (JSClass) is created without a context, so it can be used with any context, even across context groups.
64// This structure holds data members that vary across context groups.
65struct OpaqueJSClassContextData : Noncopyable {
66 OpaqueJSClassContextData(OpaqueJSClass*);
67 ~OpaqueJSClassContextData();
68
69 // It is necessary to keep OpaqueJSClass alive because of the following rare scenario:
70 // 1. A class is created and used, so its context data is stored in JSGlobalData hash map.
71 // 2. The class is released, and when all JS objects that use it are collected, OpaqueJSClass
72 // is deleted (that's the part prevented by this RefPtr).
73 // 3. Another class is created at the same address.
74 // 4. When it is used, the old context data is found in JSGlobalData and used.
75 RefPtr<OpaqueJSClass> m_class;
76
77 OpaqueJSClassStaticValuesTable* staticValues;
78 OpaqueJSClassStaticFunctionsTable* staticFunctions;
79 JSC::JSObject* cachedPrototype;
80};
81
82struct OpaqueJSClass : public ThreadSafeShared<OpaqueJSClass> {
83 static PassRefPtr<OpaqueJSClass> create(const JSClassDefinition*);
84 static PassRefPtr<OpaqueJSClass> createNoAutomaticPrototype(const JSClassDefinition*);
85 ~OpaqueJSClass();
86
87 JSC::UString className();
88 OpaqueJSClassStaticValuesTable* staticValues(JSC::ExecState*);
89 OpaqueJSClassStaticFunctionsTable* staticFunctions(JSC::ExecState*);
90 JSC::JSObject* prototype(JSC::ExecState*);
91
92 OpaqueJSClass* parentClass;
93 OpaqueJSClass* prototypeClass;
94
95 JSObjectInitializeCallback initialize;
96 JSObjectFinalizeCallback finalize;
97 JSObjectHasPropertyCallback hasProperty;
98 JSObjectGetPropertyCallback getProperty;
99 JSObjectSetPropertyCallback setProperty;
100 JSObjectDeletePropertyCallback deleteProperty;
101 JSObjectGetPropertyNamesCallback getPropertyNames;
102 JSObjectCallAsFunctionCallback callAsFunction;
103 JSObjectCallAsConstructorCallback callAsConstructor;
104 JSObjectHasInstanceCallback hasInstance;
105 JSObjectConvertToTypeCallback convertToType;
106
107private:
108 friend struct OpaqueJSClassContextData;
109
110 OpaqueJSClass();
111 OpaqueJSClass(const OpaqueJSClass&);
112 OpaqueJSClass(const JSClassDefinition*, OpaqueJSClass* protoClass);
113
114 OpaqueJSClassContextData& contextData(JSC::ExecState*);
115
116 // UStrings in these data members should not be put into any IdentifierTable.
117 JSC::UString m_className;
118 OpaqueJSClassStaticValuesTable* m_staticValues;
119 OpaqueJSClassStaticFunctionsTable* m_staticFunctions;
120};
121
122#endif // JSClassRef_h
Note: See TracBrowser for help on using the repository browser.