OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/compiler.h" | 5 #include "src/compiler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "src/asmjs/asm-js.h" | 9 #include "src/asmjs/asm-js.h" |
10 #include "src/asmjs/typing-asm.h" | 10 #include "src/asmjs/typing-asm.h" |
11 #include "src/ast/ast-numbering.h" | 11 #include "src/ast/ast-numbering.h" |
12 #include "src/ast/prettyprinter.h" | 12 #include "src/ast/prettyprinter.h" |
13 #include "src/ast/scopeinfo.h" | 13 #include "src/ast/scopeinfo.h" |
14 #include "src/ast/scopes.h" | 14 #include "src/ast/scopes.h" |
15 #include "src/bootstrapper.h" | 15 #include "src/bootstrapper.h" |
16 #include "src/codegen.h" | 16 #include "src/codegen.h" |
17 #include "src/compilation-cache.h" | 17 #include "src/compilation-cache.h" |
18 #include "src/compiler/pipeline.h" | 18 #include "src/compiler/pipeline.h" |
19 #include "src/crankshaft/hydrogen.h" | 19 #include "src/crankshaft/hydrogen.h" |
20 #include "src/debug/debug.h" | 20 #include "src/debug/debug.h" |
21 #include "src/debug/liveedit.h" | 21 #include "src/debug/liveedit.h" |
22 #include "src/deoptimizer.h" | 22 #include "src/deoptimizer.h" |
23 #include "src/frames-inl.h" | 23 #include "src/frames-inl.h" |
24 #include "src/full-codegen/full-codegen.h" | 24 #include "src/full-codegen/full-codegen.h" |
25 #include "src/globals.h" | 25 #include "src/globals.h" |
| 26 #include "src/heap/heap.h" |
26 #include "src/interpreter/interpreter.h" | 27 #include "src/interpreter/interpreter.h" |
27 #include "src/isolate-inl.h" | 28 #include "src/isolate-inl.h" |
28 #include "src/log-inl.h" | 29 #include "src/log-inl.h" |
29 #include "src/messages.h" | 30 #include "src/messages.h" |
30 #include "src/parsing/parser.h" | 31 #include "src/parsing/parser.h" |
31 #include "src/parsing/rewriter.h" | 32 #include "src/parsing/rewriter.h" |
32 #include "src/parsing/scanner-character-streams.h" | 33 #include "src/parsing/scanner-character-streams.h" |
33 #include "src/runtime-profiler.h" | 34 #include "src/runtime-profiler.h" |
34 #include "src/snapshot/code-serializer.h" | 35 #include "src/snapshot/code-serializer.h" |
35 #include "src/vm-state-inl.h" | 36 #include "src/vm-state-inl.h" |
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 | 699 |
699 if (!isolate->optimizing_compile_dispatcher()->IsQueueAvailable()) { | 700 if (!isolate->optimizing_compile_dispatcher()->IsQueueAvailable()) { |
700 if (FLAG_trace_concurrent_recompilation) { | 701 if (FLAG_trace_concurrent_recompilation) { |
701 PrintF(" ** Compilation queue full, will retry optimizing "); | 702 PrintF(" ** Compilation queue full, will retry optimizing "); |
702 info->closure()->ShortPrint(); | 703 info->closure()->ShortPrint(); |
703 PrintF(" later.\n"); | 704 PrintF(" later.\n"); |
704 } | 705 } |
705 return false; | 706 return false; |
706 } | 707 } |
707 | 708 |
| 709 if (isolate->heap()->HighMemoryPressure()) { |
| 710 if (FLAG_trace_concurrent_recompilation) { |
| 711 PrintF(" ** High memory pressure, will retry optimizing "); |
| 712 info->closure()->ShortPrint(); |
| 713 PrintF(" later.\n"); |
| 714 } |
| 715 return false; |
| 716 } |
| 717 |
708 // All handles below this point will be allocated in a deferred handle scope | 718 // All handles below this point will be allocated in a deferred handle scope |
709 // that is detached and handed off to the background thread when we return. | 719 // that is detached and handed off to the background thread when we return. |
710 CompilationHandleScope handle_scope(info); | 720 CompilationHandleScope handle_scope(info); |
711 | 721 |
712 // Parsing is not required when optimizing from existing bytecode. | 722 // Parsing is not required when optimizing from existing bytecode. |
713 if (!info->is_optimizing_from_bytecode()) { | 723 if (!info->is_optimizing_from_bytecode()) { |
714 if (!Compiler::ParseAndAnalyze(info->parse_info())) return false; | 724 if (!Compiler::ParseAndAnalyze(info->parse_info())) return false; |
715 EnsureFeedbackMetadata(info); | 725 EnsureFeedbackMetadata(info); |
716 } | 726 } |
717 | 727 |
(...skipping 1120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1838 DCHECK(shared->is_compiled()); | 1848 DCHECK(shared->is_compiled()); |
1839 function->set_literals(cached.literals); | 1849 function->set_literals(cached.literals); |
1840 } else if (shared->is_compiled()) { | 1850 } else if (shared->is_compiled()) { |
1841 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. | 1851 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. |
1842 JSFunction::EnsureLiterals(function); | 1852 JSFunction::EnsureLiterals(function); |
1843 } | 1853 } |
1844 } | 1854 } |
1845 | 1855 |
1846 } // namespace internal | 1856 } // namespace internal |
1847 } // namespace v8 | 1857 } // namespace v8 |
OLD | NEW |