source: webkit/trunk/JavaScriptCore/runtime/PropertyNameArray.h@ 38137

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

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

Rubber-stamped by Maciej Stachowiak.

Move more files into the runtime subdirectory of JavaScriptCore.

JavaScriptCore:

  • API/JSBase.cpp:
  • API/JSCallbackConstructor.cpp:
  • API/JSCallbackFunction.cpp:
  • API/JSClassRef.cpp:
  • API/OpaqueJSString.cpp:
  • GNUmakefile.am:
  • JavaScriptCore.pri:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • JavaScriptCoreSources.bkl:
  • kjs/AllInOneFile.cpp:
  • kjs/ArgList.cpp: Removed.
  • kjs/ArgList.h: Removed.
  • kjs/Arguments.cpp: Removed.
  • kjs/Arguments.h: Removed.
  • kjs/BatchedTransitionOptimizer.h: Removed.
  • kjs/CollectorHeapIterator.h: Removed.
  • kjs/CommonIdentifiers.cpp: Removed.
  • kjs/CommonIdentifiers.h: Removed.
  • kjs/ExecState.cpp: Removed.
  • kjs/ExecState.h: Removed.
  • kjs/GetterSetter.cpp: Removed.
  • kjs/GetterSetter.h: Removed.
  • kjs/InitializeThreading.cpp: Removed.
  • kjs/InitializeThreading.h: Removed.
  • kjs/JSActivation.cpp: Removed.
  • kjs/JSActivation.h: Removed.
  • kjs/JSGlobalData.cpp: Removed.
  • kjs/JSGlobalData.h: Removed.
  • kjs/JSLock.cpp: Removed.
  • kjs/JSLock.h: Removed.
  • kjs/JSStaticScopeObject.cpp: Removed.
  • kjs/JSStaticScopeObject.h: Removed.
  • kjs/JSType.h: Removed.
  • kjs/PropertyNameArray.cpp: Removed.
  • kjs/PropertyNameArray.h: Removed.
  • kjs/ScopeChain.cpp: Removed.
  • kjs/ScopeChain.h: Removed.
  • kjs/ScopeChainMark.h: Removed.
  • kjs/SymbolTable.h: Removed.
  • kjs/Tracing.d: Removed.
  • kjs/Tracing.h: Removed.
  • runtime/ArgList.cpp: Copied from kjs/ArgList.cpp.
  • runtime/ArgList.h: Copied from kjs/ArgList.h.
  • runtime/Arguments.cpp: Copied from kjs/Arguments.cpp.
  • runtime/Arguments.h: Copied from kjs/Arguments.h.
  • runtime/BatchedTransitionOptimizer.h: Copied from kjs/BatchedTransitionOptimizer.h.
  • runtime/CollectorHeapIterator.h: Copied from kjs/CollectorHeapIterator.h.
  • runtime/CommonIdentifiers.cpp: Copied from kjs/CommonIdentifiers.cpp.
  • runtime/CommonIdentifiers.h: Copied from kjs/CommonIdentifiers.h.
  • runtime/ExecState.cpp: Copied from kjs/ExecState.cpp.
  • runtime/ExecState.h: Copied from kjs/ExecState.h.
  • runtime/GetterSetter.cpp: Copied from kjs/GetterSetter.cpp.
  • runtime/GetterSetter.h: Copied from kjs/GetterSetter.h.
  • runtime/InitializeThreading.cpp: Copied from kjs/InitializeThreading.cpp.
  • runtime/InitializeThreading.h: Copied from kjs/InitializeThreading.h.
  • runtime/JSActivation.cpp: Copied from kjs/JSActivation.cpp.
  • runtime/JSActivation.h: Copied from kjs/JSActivation.h.
  • runtime/JSGlobalData.cpp: Copied from kjs/JSGlobalData.cpp.
  • runtime/JSGlobalData.h: Copied from kjs/JSGlobalData.h.
  • runtime/JSLock.cpp: Copied from kjs/JSLock.cpp.
  • runtime/JSLock.h: Copied from kjs/JSLock.h.
  • runtime/JSStaticScopeObject.cpp: Copied from kjs/JSStaticScopeObject.cpp.
  • runtime/JSStaticScopeObject.h: Copied from kjs/JSStaticScopeObject.h.
  • runtime/JSType.h: Copied from kjs/JSType.h.
  • runtime/PropertyNameArray.cpp: Copied from kjs/PropertyNameArray.cpp.
  • runtime/PropertyNameArray.h: Copied from kjs/PropertyNameArray.h.
  • runtime/ScopeChain.cpp: Copied from kjs/ScopeChain.cpp.
  • runtime/ScopeChain.h: Copied from kjs/ScopeChain.h.
  • runtime/ScopeChainMark.h: Copied from kjs/ScopeChainMark.h.
  • runtime/SymbolTable.h: Copied from kjs/SymbolTable.h.
  • runtime/Tracing.d: Copied from kjs/Tracing.d.
  • runtime/Tracing.h: Copied from kjs/Tracing.h.

WebCore:

  • ForwardingHeaders/kjs/ArgList.h: Removed.
  • ForwardingHeaders/kjs/CollectorHeapIterator.h: Removed.
  • ForwardingHeaders/kjs/ExecState.h: Removed.
  • ForwardingHeaders/kjs/InitializeThreading.h: Removed.
  • ForwardingHeaders/kjs/JSGlobalData.h: Removed.
  • ForwardingHeaders/kjs/JSLock.h: Removed.
  • ForwardingHeaders/kjs/SymbolTable.h: Removed.
  • ForwardingHeaders/runtime/ArgList.h: Copied from ForwardingHeaders/kjs/ArgList.h.
  • ForwardingHeaders/runtime/CollectorHeapIterator.h: Copied from ForwardingHeaders/kjs/CollectorHeapIterator.h.
  • ForwardingHeaders/runtime/ExecState.h: Copied from ForwardingHeaders/kjs/ExecState.h.
  • ForwardingHeaders/runtime/InitializeThreading.h: Copied from ForwardingHeaders/kjs/InitializeThreading.h.
  • ForwardingHeaders/runtime/JSGlobalData.h: Copied from ForwardingHeaders/kjs/JSGlobalData.h.
  • ForwardingHeaders/runtime/JSLock.h: Copied from ForwardingHeaders/kjs/JSLock.h.
  • ForwardingHeaders/runtime/SymbolTable.h: Copied from ForwardingHeaders/kjs/SymbolTable.h.
  • bindings/js/GCController.cpp:
  • bindings/js/JSCustomPositionCallback.cpp:
  • bindings/js/JSCustomPositionErrorCallback.cpp:
  • bindings/js/JSCustomSQLStatementCallback.cpp:
  • bindings/js/JSCustomSQLStatementErrorCallback.cpp:
  • bindings/js/JSCustomSQLTransactionCallback.cpp:
  • bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
  • bindings/js/JSCustomVoidCallback.cpp:
  • bindings/js/JSCustomXPathNSResolver.cpp:
  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSEventCustom.cpp:
  • bindings/js/JSEventListener.cpp:
  • bindings/js/JSNodeFilterCondition.cpp:
  • bindings/js/ScheduledAction.cpp:
  • bindings/js/ScriptController.cpp:
  • bindings/js/ScriptControllerMac.mm:
  • bindings/objc/WebScriptObject.mm:
  • bridge/NP_jsobject.cpp:
  • bridge/c/c_class.cpp:
  • bridge/c/c_instance.cpp:
  • bridge/c/c_runtime.cpp:
  • bridge/c/c_utility.cpp:
  • bridge/jni/jni_class.cpp:
  • bridge/jni/jni_instance.cpp:
  • bridge/jni/jni_jsobject.mm:
  • bridge/jni/jni_objc.mm:
  • bridge/jni/jni_runtime.cpp:
  • bridge/jni/jni_runtime.h:
  • bridge/jni/jni_utility.cpp:
  • bridge/npruntime.cpp:
  • bridge/objc/objc_instance.mm:
  • bridge/objc/objc_runtime.mm:
  • bridge/objc/objc_utility.mm:
  • bridge/runtime.cpp:
  • dom/Document.cpp:
  • dom/Node.cpp:
  • dom/NodeFilter.cpp:
  • dom/NodeIterator.cpp:
  • dom/TreeWalker.cpp:
  • history/CachedPage.cpp:
  • inspector/InspectorController.cpp:
  • inspector/JavaScriptCallFrame.cpp:
  • inspector/JavaScriptCallFrame.h:
  • inspector/JavaScriptDebugServer.cpp:
  • inspector/JavaScriptProfileNode.cpp:
  • loader/FrameLoader.cpp:
  • loader/icon/IconDatabase.cpp:
  • page/Console.cpp:
  • page/Page.cpp:
  • page/mac/FrameMac.mm:
  • plugins/PluginView.cpp:
  • plugins/gtk/PluginViewGtk.cpp:
  • plugins/qt/PluginViewQt.cpp:
  • plugins/win/PluginViewWin.cpp:
  • storage/Database.cpp:
  • xml/XMLHttpRequest.cpp:

WebKit/gtk:

  • webkit/webkitprivate.cpp:

WebKit/mac:

  • ForwardingHeaders/kjs/JSLock.h: Removed.
  • ForwardingHeaders/kjs/SymbolTable.h: Removed.
  • ForwardingHeaders/runtime/JSLock.h: Copied from ForwardingHeaders/kjs/JSLock.h.
  • ForwardingHeaders/runtime/SymbolTable.h: Copied from ForwardingHeaders/kjs/SymbolTable.h.
  • Misc/WebCoreStatistics.mm:
  • Plugins/WebBaseNetscapePluginStream.mm:
  • Plugins/WebBaseNetscapePluginView.mm:
  • Plugins/WebPluginController.mm:
  • WebView/WebFrame.mm:
  • WebView/WebScriptDebugDelegate.mm:
  • WebView/WebView.mm:

WebKit/qt:

  • Api/qwebpage.cpp:

WebKit/win:

  • WebJavaScriptCollector.cpp:
  • Property svn:eol-style set to native
File size: 4.0 KB
Line 
1/*
2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18 *
19 */
20
21#ifndef PropertyNameArray_h
22#define PropertyNameArray_h
23
24#include "ExecState.h"
25#include "StructureID.h"
26#include "identifier.h"
27#include <wtf/HashSet.h>
28#include <wtf/Vector.h>
29
30namespace JSC {
31
32 class PropertyNameArrayData : public RefCounted<PropertyNameArrayData> {
33 public:
34 typedef Vector<Identifier, 20> PropertyNameVector;
35 typedef PropertyNameVector::const_iterator const_iterator;
36
37 static PassRefPtr<PropertyNameArrayData> create() { return adoptRef(new PropertyNameArrayData); }
38
39 const_iterator begin() const { return m_propertyNameVector.begin(); }
40 const_iterator end() const { return m_propertyNameVector.end(); }
41
42 PropertyNameVector& propertyNameVector() { return m_propertyNameVector; }
43
44 void setCachedStructureID(StructureID* structureID) { m_cachedStructureID = structureID; }
45 StructureID* cachedStructureID() const { return m_cachedStructureID; }
46
47 void setCachedPrototypeChain(PassRefPtr<StructureIDChain> cachedPrototypeChain) { m_cachedPrototypeChain = cachedPrototypeChain; }
48 StructureIDChain* cachedPrototypeChain() { return m_cachedPrototypeChain.get(); }
49
50 private:
51 PropertyNameArrayData()
52 : m_cachedStructureID(0)
53 {
54 }
55
56 PropertyNameVector m_propertyNameVector;
57 StructureID* m_cachedStructureID;
58 RefPtr<StructureIDChain> m_cachedPrototypeChain;
59 };
60
61 class PropertyNameArray {
62 public:
63 typedef PropertyNameArrayData::const_iterator const_iterator;
64
65 PropertyNameArray(JSGlobalData* globalData)
66 : m_data(PropertyNameArrayData::create())
67 , m_globalData(globalData)
68 , m_cacheable(true)
69 {
70 }
71
72 PropertyNameArray(ExecState* exec)
73 : m_data(PropertyNameArrayData::create())
74 , m_globalData(&exec->globalData())
75 , m_cacheable(true)
76 {
77 }
78
79 JSGlobalData* globalData() { return m_globalData; }
80
81 void add(const Identifier& identifier) { add(identifier.ustring().rep()); }
82 void add(UString::Rep*);
83 void addKnownUnique(UString::Rep* identifier) { m_data->propertyNameVector().append(Identifier(m_globalData, identifier)); }
84
85 size_t size() const { return m_data->propertyNameVector().size(); }
86
87 Identifier& operator[](unsigned i) { return m_data->propertyNameVector()[i]; }
88 const Identifier& operator[](unsigned i) const { return m_data->propertyNameVector()[i]; }
89
90 const_iterator begin() const { return m_data->begin(); }
91 const_iterator end() const { return m_data->end(); }
92
93 void setData(PassRefPtr<PropertyNameArrayData> data) { m_data = data; }
94 PropertyNameArrayData* data() { return m_data.get(); }
95
96 PassRefPtr<PropertyNameArrayData> releaseData() { return m_data.release(); }
97
98 void setCacheable(bool cacheable) { m_cacheable = cacheable; }
99 bool cacheable() const { return m_cacheable; }
100
101 private:
102 typedef HashSet<UString::Rep*, PtrHash<UString::Rep*> > IdentifierSet;
103
104 RefPtr<PropertyNameArrayData> m_data;
105 IdentifierSet m_set;
106 JSGlobalData* m_globalData;
107 bool m_cacheable;
108 };
109
110} // namespace JSC
111
112#endif // PropertyNameArray_h
Note: See TracBrowser for help on using the repository browser.