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

Side by Side Diff: src/compiler.cc

Issue 2341663002: [compiler] Fix confusion about OSR BailoutId semantics. (Closed)
Patch Set: Fix typo. Created 4 years, 3 months 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/mjsunit/regress/regress-5380.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 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 info->AbortOptimization(kOptimizedTooManyTimes); 685 info->AbortOptimization(kOptimizedTooManyTimes);
686 return MaybeHandle<Code>(); 686 return MaybeHandle<Code>();
687 } 687 }
688 688
689 TimerEventScope<TimerEventOptimizeCode> optimize_code_timer(isolate); 689 TimerEventScope<TimerEventOptimizeCode> optimize_code_timer(isolate);
690 RuntimeCallTimerScope runtimeTimer(isolate, &RuntimeCallStats::OptimizeCode); 690 RuntimeCallTimerScope runtimeTimer(isolate, &RuntimeCallStats::OptimizeCode);
691 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.OptimizeCode"); 691 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.OptimizeCode");
692 692
693 // TurboFan can optimize directly from existing bytecode. 693 // TurboFan can optimize directly from existing bytecode.
694 if (FLAG_turbo_from_bytecode && use_turbofan && ShouldUseIgnition(info)) { 694 if (FLAG_turbo_from_bytecode && use_turbofan && ShouldUseIgnition(info)) {
695 if (info->is_osr() && !ignition_osr) return MaybeHandle<Code>();
695 if (!Compiler::EnsureBytecode(info)) { 696 if (!Compiler::EnsureBytecode(info)) {
696 if (isolate->has_pending_exception()) isolate->clear_pending_exception(); 697 if (isolate->has_pending_exception()) isolate->clear_pending_exception();
697 return MaybeHandle<Code>(); 698 return MaybeHandle<Code>();
698 } 699 }
699 info->MarkAsOptimizeFromBytecode(); 700 info->MarkAsOptimizeFromBytecode();
700 } 701 }
701 702
702 if (IsEvalToplevel(shared)) { 703 if (IsEvalToplevel(shared)) {
703 parse_info->set_eval(); 704 parse_info->set_eval();
704 if (function->context()->IsNativeContext()) parse_info->set_global(); 705 if (function->context()->IsNativeContext()) parse_info->set_global();
705 parse_info->set_toplevel(); 706 parse_info->set_toplevel();
706 parse_info->set_allow_lazy_parsing(false); 707 parse_info->set_allow_lazy_parsing(false);
707 parse_info->set_lazy(false); 708 parse_info->set_lazy(false);
708 } 709 }
709 710
711 // Verify that OSR compilations are delegated to the correct graph builder.
712 // Depending on the underlying frame the semantics of the {BailoutId} differ
713 // and the various graph builders hard-code a certain semantic:
714 // - Interpreter : The BailoutId represents a bytecode offset.
715 // - FullCodegen : The BailoutId represents the id of an AST node.
716 DCHECK_IMPLIES(info->is_osr() && ignition_osr,
717 info->is_optimizing_from_bytecode());
718 DCHECK_IMPLIES(info->is_osr() && !ignition_osr,
719 !info->is_optimizing_from_bytecode());
720
710 // In case of concurrent recompilation, all handles below this point will be 721 // In case of concurrent recompilation, all handles below this point will be
711 // allocated in a deferred handle scope that is detached and handed off to 722 // allocated in a deferred handle scope that is detached and handed off to
712 // the background thread when we return. 723 // the background thread when we return.
713 std::unique_ptr<CompilationHandleScope> compilation; 724 std::unique_ptr<CompilationHandleScope> compilation;
714 if (mode == Compiler::CONCURRENT) { 725 if (mode == Compiler::CONCURRENT) {
715 compilation.reset(new CompilationHandleScope(info)); 726 compilation.reset(new CompilationHandleScope(info));
716 } 727 }
717 728
718 // In case of TurboFan, all handles below will be canonicalized. 729 // In case of TurboFan, all handles below will be canonicalized.
719 std::unique_ptr<CanonicalHandleScope> canonical; 730 std::unique_ptr<CanonicalHandleScope> canonical;
(...skipping 1169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1889 DCHECK(shared->is_compiled()); 1900 DCHECK(shared->is_compiled());
1890 function->set_literals(cached.literals); 1901 function->set_literals(cached.literals);
1891 } else if (shared->is_compiled()) { 1902 } else if (shared->is_compiled()) {
1892 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. 1903 // TODO(mvstanton): pass pretenure flag to EnsureLiterals.
1893 JSFunction::EnsureLiterals(function); 1904 JSFunction::EnsureLiterals(function);
1894 } 1905 }
1895 } 1906 }
1896 1907
1897 } // namespace internal 1908 } // namespace internal
1898 } // namespace v8 1909 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/regress/regress-5380.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698