Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(547)

Side by Side Diff: JavaScriptCore/runtime/JSGlobalData.h

Issue 28077: WebKit side of merge from r41149 to r41181. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/WebKit/
Patch Set: Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « JavaScriptCore/runtime/JSFunction.h ('k') | JavaScriptCore/runtime/JSGlobalData.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 13 matching lines...) Expand all
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #ifndef JSGlobalData_h 29 #ifndef JSGlobalData_h
30 #define JSGlobalData_h 30 #define JSGlobalData_h
31 31
32 #include "Collector.h" 32 #include "Collector.h"
33 #include "ExecutableAllocator.h" 33 #include "ExecutableAllocator.h"
34 #include "JITStubs.h"
34 #include "JSValue.h" 35 #include "JSValue.h"
35 #include "SmallStrings.h" 36 #include "SmallStrings.h"
36 #include "TimeoutChecker.h" 37 #include "TimeoutChecker.h"
37 #include <wtf/Forward.h> 38 #include <wtf/Forward.h>
38 #include <wtf/HashMap.h> 39 #include <wtf/HashMap.h>
39 #include <wtf/RefCounted.h> 40 #include <wtf/RefCounted.h>
40 41
41 struct OpaqueJSClass; 42 struct OpaqueJSClass;
42 struct OpaqueJSClassContextData; 43 struct OpaqueJSClassContextData;
43 44
44 namespace JSC { 45 namespace JSC {
45 46
46 class ArgList; 47 class ArgList;
47 class CommonIdentifiers; 48 class CommonIdentifiers;
48 class Heap; 49 class Heap;
49 class IdentifierTable; 50 class IdentifierTable;
50 class Instruction; 51 class Instruction;
51 class Interpreter; 52 class Interpreter;
52 class JSGlobalObject; 53 class JSGlobalObject;
53 class JSObject; 54 class JSObject;
54 class Lexer; 55 class Lexer;
55 class Parser; 56 class Parser;
56 class ParserRefCounted; 57 class ParserRefCounted;
57 class ScopeNode; 58 class ScopeNode;
58 class Structure; 59 class Structure;
59 class UString; 60 class UString;
60 struct HashTable; 61 struct HashTable;
62 struct VPtrSet;
61 63
62 class JSGlobalData : public RefCounted<JSGlobalData> { 64 class JSGlobalData : public RefCounted<JSGlobalData> {
63 public: 65 public:
64 struct ClientData { 66 struct ClientData {
65 virtual ~ClientData() = 0; 67 virtual ~ClientData() = 0;
66 }; 68 };
67 69
68 static bool sharedInstanceExists(); 70 static bool sharedInstanceExists();
69 static JSGlobalData& sharedInstance(); 71 static JSGlobalData& sharedInstance();
70 72
71 static PassRefPtr<JSGlobalData> create(); 73 static PassRefPtr<JSGlobalData> create(bool isShared = false);
72 static PassRefPtr<JSGlobalData> createLeaked(); 74 static PassRefPtr<JSGlobalData> createLeaked();
73 ~JSGlobalData(); 75 ~JSGlobalData();
74 76
75 #if ENABLE(JSC_MULTIPLE_THREADS) 77 #if ENABLE(JSC_MULTIPLE_THREADS)
76 // Will start tracking threads that use the heap, which is resource-heav y. 78 // Will start tracking threads that use the heap, which is resource-heav y.
77 void makeUsableFromMultipleThreads() { heap.makeUsableFromMultipleThread s(); } 79 void makeUsableFromMultipleThreads() { heap.makeUsableFromMultipleThread s(); }
78 #endif 80 #endif
79 81
80 bool isSharedInstance; 82 bool isSharedInstance;
81 ClientData* clientData; 83 ClientData* clientData;
82 84
83 Interpreter* interpreter;
84 TimeoutChecker timeoutChecker;
85
86 JSValuePtr exception;
87 #if ENABLE(JIT)
88 void* exceptionLocation;
89 #endif
90
91 const Vector<Instruction>& numericCompareFunction(ExecState*);
92 Vector<Instruction> lazyNumericCompareFunction;
93 bool initializingLazyNumericCompareFunction;
94
95 const HashTable* arrayTable; 85 const HashTable* arrayTable;
96 const HashTable* dateTable; 86 const HashTable* dateTable;
97 const HashTable* mathTable; 87 const HashTable* mathTable;
98 const HashTable* numberTable; 88 const HashTable* numberTable;
99 const HashTable* regExpTable; 89 const HashTable* regExpTable;
100 const HashTable* regExpConstructorTable; 90 const HashTable* regExpConstructorTable;
101 const HashTable* stringTable; 91 const HashTable* stringTable;
102 92
103 RefPtr<Structure> activationStructure; 93 RefPtr<Structure> activationStructure;
104 RefPtr<Structure> interruptedExecutionErrorStructure; 94 RefPtr<Structure> interruptedExecutionErrorStructure;
105 RefPtr<Structure> staticScopeStructure; 95 RefPtr<Structure> staticScopeStructure;
106 RefPtr<Structure> stringStructure; 96 RefPtr<Structure> stringStructure;
107 RefPtr<Structure> notAnObjectErrorStubStructure; 97 RefPtr<Structure> notAnObjectErrorStubStructure;
108 RefPtr<Structure> notAnObjectStructure; 98 RefPtr<Structure> notAnObjectStructure;
109 #if !USE(ALTERNATE_JSIMMEDIATE) 99 #if !USE(ALTERNATE_JSIMMEDIATE)
110 RefPtr<Structure> numberStructure; 100 RefPtr<Structure> numberStructure;
111 #endif 101 #endif
112 102
103 void* jsArrayVPtr;
104 void* jsByteArrayVPtr;
105 void* jsStringVPtr;
106 void* jsFunctionVPtr;
107
113 IdentifierTable* identifierTable; 108 IdentifierTable* identifierTable;
114 CommonIdentifiers* propertyNames; 109 CommonIdentifiers* propertyNames;
115 const ArgList* emptyList; // Lists are supposed to be allocated on the s tack to have their elements properly marked, which is not the case here - but th is list has nothing to mark. 110 const ArgList* emptyList; // Lists are supposed to be allocated on the s tack to have their elements properly marked, which is not the case here - but th is list has nothing to mark.
116 SmallStrings smallStrings; 111 SmallStrings smallStrings;
117 112
118 HashMap<OpaqueJSClass*, OpaqueJSClassContextData*> opaqueJSClassData; 113 #if ENABLE(ASSEMBLER)
114 ExecutableAllocator executableAllocator;
115 #endif
119 116
120 Lexer* lexer; 117 Lexer* lexer;
121 Parser* parser; 118 Parser* parser;
119 Interpreter* interpreter;
120 #if ENABLE(JIT)
121 JITStubs jitStubs;
122 #endif
123 TimeoutChecker timeoutChecker;
124 Heap heap;
125
126 JSValuePtr exception;
127 #if ENABLE(JIT)
128 void* exceptionLocation;
129 #endif
130
131 const Vector<Instruction>& numericCompareFunction(ExecState*);
132 Vector<Instruction> lazyNumericCompareFunction;
133 bool initializingLazyNumericCompareFunction;
134
135 HashMap<OpaqueJSClass*, OpaqueJSClassContextData*> opaqueJSClassData;
136
122 HashSet<ParserRefCounted*>* newParserObjects; 137 HashSet<ParserRefCounted*>* newParserObjects;
123 HashCountedSet<ParserRefCounted*>* parserObjectExtraRefCounts; 138 HashCountedSet<ParserRefCounted*>* parserObjectExtraRefCounts;
124 139
125 JSGlobalObject* head; 140 JSGlobalObject* head;
126 JSGlobalObject* dynamicGlobalObject; 141 JSGlobalObject* dynamicGlobalObject;
127 142
128 HashSet<JSObject*> arrayVisitedElements; 143 HashSet<JSObject*> arrayVisitedElements;
129 144
130 ScopeNode* scopeNodeBeingReparsed; 145 ScopeNode* scopeNodeBeingReparsed;
131 146
132 Heap heap;
133 #if ENABLE(ASSEMBLER)
134 PassRefPtr<ExecutablePool> poolForSize(size_t n) { return m_executableAl locator.poolForSize(n); }
135 #endif
136
137 private: 147 private:
138 JSGlobalData(bool isShared = false); 148 JSGlobalData(bool isShared, const VPtrSet&);
139 #if ENABLE(ASSEMBLER)
140 ExecutableAllocator m_executableAllocator;
141 #endif
142
143 static JSGlobalData*& sharedInstanceInternal(); 149 static JSGlobalData*& sharedInstanceInternal();
144 }; 150 };
145 } // namespace JSC 151 } // namespace JSC
146 152
147 #endif // JSGlobalData_h 153 #endif // JSGlobalData_h
148 154
149 155
OLDNEW
« no previous file with comments | « JavaScriptCore/runtime/JSFunction.h ('k') | JavaScriptCore/runtime/JSGlobalData.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698