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

Side by Side Diff: src/compiler.cc

Issue 2494043002: [debugger,compiler] do not recompile already compiled inner functions. (Closed)
Patch Set: do not log Created 4 years, 1 month 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
« no previous file with comments | « no previous file | test/debugger/regress/regress-5575-1.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include <memory> 8 #include <memory>
9 9
10 #include "src/asmjs/asm-js.h" 10 #include "src/asmjs/asm-js.h"
(...skipping 1573 matching lines...) Expand 10 before | Expand all | Expand 10 after
1584 parse_info.set_ast_value_factory_owned(false); 1584 parse_info.set_ast_value_factory_owned(false);
1585 1585
1586 if (outer_info->will_serialize()) info.PrepareForSerializing(); 1586 if (outer_info->will_serialize()) info.PrepareForSerializing();
1587 if (outer_info->is_debug()) info.MarkAsDebug(); 1587 if (outer_info->is_debug()) info.MarkAsDebug();
1588 1588
1589 // Generate code 1589 // Generate code
1590 TimerEventScope<TimerEventCompileCode> timer(isolate); 1590 TimerEventScope<TimerEventCompileCode> timer(isolate);
1591 RuntimeCallTimerScope runtimeTimer(isolate, &RuntimeCallStats::CompileCode); 1591 RuntimeCallTimerScope runtimeTimer(isolate, &RuntimeCallStats::CompileCode);
1592 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileCode"); 1592 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileCode");
1593 1593
1594 if (!literal->ShouldEagerCompile()) { 1594 if (result->is_compiled()) {
1595 // If this inner function is already compiled, we don't need to compile
1596 // again. When compiling for debug, we are not interested in having debug
1597 // break slots in inner functions, neither for setting break points nor
1598 // for revealing inner functions.
1599 // This is especially important for generators. We must not replace the
1600 // code for generators, as there may be suspended generator objects.
1601 return result;
1602 } else if (!literal->ShouldEagerCompile()) {
1595 info.SetCode(isolate->builtins()->CompileLazy()); 1603 info.SetCode(isolate->builtins()->CompileLazy());
1596 Scope* outer_scope = literal->scope()->GetOuterScopeWithContext(); 1604 Scope* outer_scope = literal->scope()->GetOuterScopeWithContext();
1597 if (outer_scope) { 1605 if (outer_scope) {
1598 result->set_outer_scope_info(*outer_scope->scope_info()); 1606 result->set_outer_scope_info(*outer_scope->scope_info());
1599 } 1607 }
1600 } else if (Renumber(info.parse_info()) && GenerateUnoptimizedCode(&info)) { 1608 } else if (Renumber(info.parse_info()) && GenerateUnoptimizedCode(&info)) {
1601 // Code generation will ensure that the feedback vector is present and 1609 // Code generation will ensure that the feedback vector is present and
1602 // appropriately sized. 1610 // appropriately sized.
1603 DCHECK(!info.code().is_null()); 1611 DCHECK(!info.code().is_null());
1604 if (literal->should_be_used_once_hint()) { 1612 if (literal->should_be_used_once_hint()) {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1705 DCHECK(shared->is_compiled()); 1713 DCHECK(shared->is_compiled());
1706 function->set_literals(cached.literals); 1714 function->set_literals(cached.literals);
1707 } else if (shared->is_compiled()) { 1715 } else if (shared->is_compiled()) {
1708 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. 1716 // TODO(mvstanton): pass pretenure flag to EnsureLiterals.
1709 JSFunction::EnsureLiterals(function); 1717 JSFunction::EnsureLiterals(function);
1710 } 1718 }
1711 } 1719 }
1712 1720
1713 } // namespace internal 1721 } // namespace internal
1714 } // namespace v8 1722 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/debugger/regress/regress-5575-1.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698