| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/arguments.h" | 7 #include "src/arguments.h" |
| 8 #include "src/compiler.h" | 8 #include "src/compiler.h" |
| 9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
| 10 #include "src/frames.h" | 10 #include "src/frames.h" |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 (function->shared()->ast_node_count() > 512) | 225 (function->shared()->ast_node_count() > 512) |
| 226 ? Compiler::CONCURRENT | 226 ? Compiler::CONCURRENT |
| 227 : Compiler::NOT_CONCURRENT; | 227 : Compiler::NOT_CONCURRENT; |
| 228 Handle<Code> result = Handle<Code>::null(); | 228 Handle<Code> result = Handle<Code>::null(); |
| 229 | 229 |
| 230 OptimizedCompileJob* job = NULL; | 230 OptimizedCompileJob* job = NULL; |
| 231 if (mode == Compiler::CONCURRENT) { | 231 if (mode == Compiler::CONCURRENT) { |
| 232 // Gate the OSR entry with a stack check. | 232 // Gate the OSR entry with a stack check. |
| 233 BackEdgeTable::AddStackCheck(caller_code, pc_offset); | 233 BackEdgeTable::AddStackCheck(caller_code, pc_offset); |
| 234 // Poll already queued compilation jobs. | 234 // Poll already queued compilation jobs. |
| 235 OptimizingCompileDispatcher* thread = | 235 OptimizingCompilerThread* thread = isolate->optimizing_compiler_thread(); |
| 236 isolate->optimizing_compile_dispatcher(); | |
| 237 if (thread->IsQueuedForOSR(function, ast_id)) { | 236 if (thread->IsQueuedForOSR(function, ast_id)) { |
| 238 if (FLAG_trace_osr) { | 237 if (FLAG_trace_osr) { |
| 239 PrintF("[OSR - Still waiting for queued: "); | 238 PrintF("[OSR - Still waiting for queued: "); |
| 240 function->PrintName(); | 239 function->PrintName(); |
| 241 PrintF(" at AST id %d]\n", ast_id.ToInt()); | 240 PrintF(" at AST id %d]\n", ast_id.ToInt()); |
| 242 } | 241 } |
| 243 return NULL; | 242 return NULL; |
| 244 } | 243 } |
| 245 | 244 |
| 246 job = thread->FindReadyOSRCandidate(function, ast_id); | 245 job = thread->FindReadyOSRCandidate(function, ast_id); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 DCHECK(args.length() == 1); | 317 DCHECK(args.length() == 1); |
| 319 CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 0); | 318 CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 0); |
| 320 | 319 |
| 321 // First check if this is a real stack overflow. | 320 // First check if this is a real stack overflow. |
| 322 StackLimitCheck check(isolate); | 321 StackLimitCheck check(isolate); |
| 323 if (check.JsHasOverflowed()) { | 322 if (check.JsHasOverflowed()) { |
| 324 SealHandleScope shs(isolate); | 323 SealHandleScope shs(isolate); |
| 325 return isolate->StackOverflow(); | 324 return isolate->StackOverflow(); |
| 326 } | 325 } |
| 327 | 326 |
| 328 isolate->optimizing_compile_dispatcher()->InstallOptimizedFunctions(); | 327 isolate->optimizing_compiler_thread()->InstallOptimizedFunctions(); |
| 329 return (function->IsOptimized()) ? function->code() | 328 return (function->IsOptimized()) ? function->code() |
| 330 : function->shared()->code(); | 329 : function->shared()->code(); |
| 331 } | 330 } |
| 332 | 331 |
| 333 | 332 |
| 334 bool CodeGenerationFromStringsAllowed(Isolate* isolate, | 333 bool CodeGenerationFromStringsAllowed(Isolate* isolate, |
| 335 Handle<Context> context) { | 334 Handle<Context> context) { |
| 336 DCHECK(context->allow_code_gen_from_strings()->IsFalse()); | 335 DCHECK(context->allow_code_gen_from_strings()->IsFalse()); |
| 337 // Check with callback if set. | 336 // Check with callback if set. |
| 338 AllowCodeGenerationFromStringsCallback callback = | 337 AllowCodeGenerationFromStringsCallback callback = |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 DCHECK(is_valid_language_mode(args.smi_at(4))); | 435 DCHECK(is_valid_language_mode(args.smi_at(4))); |
| 437 LanguageMode language_mode = static_cast<LanguageMode>(args.smi_at(4)); | 436 LanguageMode language_mode = static_cast<LanguageMode>(args.smi_at(4)); |
| 438 DCHECK(args[5]->IsSmi()); | 437 DCHECK(args[5]->IsSmi()); |
| 439 Handle<SharedFunctionInfo> outer_info(args.at<JSFunction>(2)->shared(), | 438 Handle<SharedFunctionInfo> outer_info(args.at<JSFunction>(2)->shared(), |
| 440 isolate); | 439 isolate); |
| 441 return CompileGlobalEval(isolate, args.at<String>(1), outer_info, | 440 return CompileGlobalEval(isolate, args.at<String>(1), outer_info, |
| 442 args.at<Object>(3), language_mode, args.smi_at(5)); | 441 args.at<Object>(3), language_mode, args.smi_at(5)); |
| 443 } | 442 } |
| 444 } | 443 } |
| 445 } // namespace v8::internal | 444 } // namespace v8::internal |
| OLD | NEW |