OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/assembler.h" | 7 #include "src/assembler.h" |
8 #include "src/compilation-cache.h" | 8 #include "src/compilation-cache.h" |
9 #include "src/serialize.h" | 9 #include "src/serialize.h" |
10 | 10 |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 Handle<SharedFunctionInfo> function_info) { | 196 Handle<SharedFunctionInfo> function_info) { |
197 HandleScope scope(isolate()); | 197 HandleScope scope(isolate()); |
198 Handle<CompilationCacheTable> table = GetFirstTable(); | 198 Handle<CompilationCacheTable> table = GetFirstTable(); |
199 SetFirstTable( | 199 SetFirstTable( |
200 CompilationCacheTable::Put(table, source, context, function_info)); | 200 CompilationCacheTable::Put(table, source, context, function_info)); |
201 } | 201 } |
202 | 202 |
203 | 203 |
204 MaybeHandle<SharedFunctionInfo> CompilationCacheEval::Lookup( | 204 MaybeHandle<SharedFunctionInfo> CompilationCacheEval::Lookup( |
205 Handle<String> source, Handle<SharedFunctionInfo> outer_info, | 205 Handle<String> source, Handle<SharedFunctionInfo> outer_info, |
206 StrictMode strict_mode, int scope_position) { | 206 LanguageMode language_mode, int scope_position) { |
207 HandleScope scope(isolate()); | 207 HandleScope scope(isolate()); |
208 // Make sure not to leak the table into the surrounding handle | 208 // Make sure not to leak the table into the surrounding handle |
209 // scope. Otherwise, we risk keeping old tables around even after | 209 // scope. Otherwise, we risk keeping old tables around even after |
210 // having cleared the cache. | 210 // having cleared the cache. |
211 Handle<Object> result = isolate()->factory()->undefined_value(); | 211 Handle<Object> result = isolate()->factory()->undefined_value(); |
212 int generation; | 212 int generation; |
213 for (generation = 0; generation < generations(); generation++) { | 213 for (generation = 0; generation < generations(); generation++) { |
214 Handle<CompilationCacheTable> table = GetTable(generation); | 214 Handle<CompilationCacheTable> table = GetTable(generation); |
215 result = table->LookupEval(source, outer_info, strict_mode, scope_position); | 215 result = |
| 216 table->LookupEval(source, outer_info, language_mode, scope_position); |
216 if (result->IsSharedFunctionInfo()) break; | 217 if (result->IsSharedFunctionInfo()) break; |
217 } | 218 } |
218 if (result->IsSharedFunctionInfo()) { | 219 if (result->IsSharedFunctionInfo()) { |
219 Handle<SharedFunctionInfo> function_info = | 220 Handle<SharedFunctionInfo> function_info = |
220 Handle<SharedFunctionInfo>::cast(result); | 221 Handle<SharedFunctionInfo>::cast(result); |
221 if (generation != 0) { | 222 if (generation != 0) { |
222 Put(source, outer_info, function_info, scope_position); | 223 Put(source, outer_info, function_info, scope_position); |
223 } | 224 } |
224 isolate()->counters()->compilation_cache_hits()->Increment(); | 225 isolate()->counters()->compilation_cache_hits()->Increment(); |
225 return scope.CloseAndEscape(function_info); | 226 return scope.CloseAndEscape(function_info); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 if (!IsEnabled()) return MaybeHandle<SharedFunctionInfo>(); | 296 if (!IsEnabled()) return MaybeHandle<SharedFunctionInfo>(); |
296 | 297 |
297 return script_.Lookup(source, name, line_offset, column_offset, | 298 return script_.Lookup(source, name, line_offset, column_offset, |
298 is_embedder_debug_script, is_shared_cross_origin, | 299 is_embedder_debug_script, is_shared_cross_origin, |
299 context); | 300 context); |
300 } | 301 } |
301 | 302 |
302 | 303 |
303 MaybeHandle<SharedFunctionInfo> CompilationCache::LookupEval( | 304 MaybeHandle<SharedFunctionInfo> CompilationCache::LookupEval( |
304 Handle<String> source, Handle<SharedFunctionInfo> outer_info, | 305 Handle<String> source, Handle<SharedFunctionInfo> outer_info, |
305 Handle<Context> context, StrictMode strict_mode, int scope_position) { | 306 Handle<Context> context, LanguageMode language_mode, int scope_position) { |
306 if (!IsEnabled()) return MaybeHandle<SharedFunctionInfo>(); | 307 if (!IsEnabled()) return MaybeHandle<SharedFunctionInfo>(); |
307 | 308 |
308 MaybeHandle<SharedFunctionInfo> result; | 309 MaybeHandle<SharedFunctionInfo> result; |
309 if (context->IsNativeContext()) { | 310 if (context->IsNativeContext()) { |
310 result = | 311 result = |
311 eval_global_.Lookup(source, outer_info, strict_mode, scope_position); | 312 eval_global_.Lookup(source, outer_info, language_mode, scope_position); |
312 } else { | 313 } else { |
313 DCHECK(scope_position != RelocInfo::kNoPosition); | 314 DCHECK(scope_position != RelocInfo::kNoPosition); |
314 result = eval_contextual_.Lookup(source, outer_info, strict_mode, | 315 result = eval_contextual_.Lookup(source, outer_info, language_mode, |
315 scope_position); | 316 scope_position); |
316 } | 317 } |
317 return result; | 318 return result; |
318 } | 319 } |
319 | 320 |
320 | 321 |
321 MaybeHandle<FixedArray> CompilationCache::LookupRegExp(Handle<String> source, | 322 MaybeHandle<FixedArray> CompilationCache::LookupRegExp(Handle<String> source, |
322 JSRegExp::Flags flags) { | 323 JSRegExp::Flags flags) { |
323 if (!IsEnabled()) return MaybeHandle<FixedArray>(); | 324 if (!IsEnabled()) return MaybeHandle<FixedArray>(); |
324 | 325 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 } | 398 } |
398 | 399 |
399 | 400 |
400 void CompilationCache::Disable() { | 401 void CompilationCache::Disable() { |
401 enabled_ = false; | 402 enabled_ = false; |
402 Clear(); | 403 Clear(); |
403 } | 404 } |
404 | 405 |
405 | 406 |
406 } } // namespace v8::internal | 407 } } // namespace v8::internal |
OLD | NEW |