OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 }; | 168 }; |
169 | 169 |
170 | 170 |
171 // Cache of all script objects in the heap. When a script is added a weak handle | 171 // Cache of all script objects in the heap. When a script is added a weak handle |
172 // to it is created and that weak handle is stored in the cache. The weak handle | 172 // to it is created and that weak handle is stored in the cache. The weak handle |
173 // callback takes care of removing the script from the cache. The key used in | 173 // callback takes care of removing the script from the cache. The key used in |
174 // the cache is the script id. | 174 // the cache is the script id. |
175 class ScriptCache : private HashMap { | 175 class ScriptCache : private HashMap { |
176 public: | 176 public: |
177 explicit ScriptCache(Isolate* isolate) | 177 explicit ScriptCache(Isolate* isolate) |
178 : HashMap(ScriptMatch), isolate_(isolate), collected_scripts_(10) {} | 178 : HashMap(HashMap::PointersMatch), |
| 179 isolate_(isolate), |
| 180 collected_scripts_(10) {} |
179 virtual ~ScriptCache() { Clear(); } | 181 virtual ~ScriptCache() { Clear(); } |
180 | 182 |
181 // Add script to the cache. | 183 // Add script to the cache. |
182 void Add(Handle<Script> script); | 184 void Add(Handle<Script> script); |
183 | 185 |
184 // Return the scripts in the cache. | 186 // Return the scripts in the cache. |
185 Handle<FixedArray> GetScripts(); | 187 Handle<FixedArray> GetScripts(); |
186 | 188 |
187 // Generate debugger events for collected scripts. | 189 // Generate debugger events for collected scripts. |
188 void ProcessCollectedScripts(); | 190 void ProcessCollectedScripts(); |
189 | 191 |
190 private: | 192 private: |
191 // Calculate the hash value from the key (script id). | 193 // Calculate the hash value from the key (script id). |
192 static uint32_t Hash(int key) { | 194 static uint32_t Hash(int key) { |
193 return ComputeIntegerHash(key, v8::internal::kZeroHashSeed); | 195 return ComputeIntegerHash(key, v8::internal::kZeroHashSeed); |
194 } | 196 } |
195 | 197 |
196 // Scripts match if their keys (script id) match. | |
197 static bool ScriptMatch(void* key1, void* key2) { return key1 == key2; } | |
198 | |
199 // Clear the cache releasing all the weak handles. | 198 // Clear the cache releasing all the weak handles. |
200 void Clear(); | 199 void Clear(); |
201 | 200 |
202 // Weak handle callback for scripts in the cache. | 201 // Weak handle callback for scripts in the cache. |
203 static void HandleWeakScript( | 202 static void HandleWeakScript( |
204 const v8::WeakCallbackData<v8::Value, void>& data); | 203 const v8::WeakCallbackData<v8::Value, void>& data); |
205 | 204 |
206 Isolate* isolate_; | 205 Isolate* isolate_; |
207 // List used during GC to temporarily store id's of collected scripts. | 206 // List used during GC to temporarily store id's of collected scripts. |
208 List<int> collected_scripts_; | 207 List<int> collected_scripts_; |
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1059 | 1058 |
1060 DISALLOW_COPY_AND_ASSIGN(MessageDispatchHelperThread); | 1059 DISALLOW_COPY_AND_ASSIGN(MessageDispatchHelperThread); |
1061 }; | 1060 }; |
1062 | 1061 |
1063 | 1062 |
1064 } } // namespace v8::internal | 1063 } } // namespace v8::internal |
1065 | 1064 |
1066 #endif // ENABLE_DEBUGGER_SUPPORT | 1065 #endif // ENABLE_DEBUGGER_SUPPORT |
1067 | 1066 |
1068 #endif // V8_DEBUG_H_ | 1067 #endif // V8_DEBUG_H_ |
OLD | NEW |