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

Side by Side Diff: src/compiler.cc

Issue 2278543002: [compiler] Make Compiler::EnsureBytecode not switch tiers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments. Created 4 years, 4 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-crbug-635923.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 1374 matching lines...) Expand 10 before | Expand all | Expand 10 after
1385 // free as much as possible, since some code expects the old shared function 1385 // free as much as possible, since some code expects the old shared function
1386 // infos to stick around. 1386 // infos to stick around.
1387 script->set_shared_function_infos(*old_function_infos); 1387 script->set_shared_function_infos(*old_function_infos);
1388 1388
1389 return infos; 1389 return infos;
1390 } 1390 }
1391 1391
1392 bool Compiler::EnsureBytecode(CompilationInfo* info) { 1392 bool Compiler::EnsureBytecode(CompilationInfo* info) {
1393 DCHECK(ShouldUseIgnition(info)); 1393 DCHECK(ShouldUseIgnition(info));
1394 if (!info->shared_info()->HasBytecodeArray()) { 1394 if (!info->shared_info()->HasBytecodeArray()) {
1395 DCHECK(!info->shared_info()->is_compiled()); 1395 Handle<Code> original_code(info->shared_info()->code());
1396 if (GetUnoptimizedCode(info).is_null()) return false; 1396 if (GetUnoptimizedCode(info).is_null()) return false;
1397 DCHECK(info->shared_info()->is_compiled());
1398 if (original_code->kind() == Code::FUNCTION) {
1399 // Generating bytecode will install the {InterpreterEntryTrampoline} as
1400 // shared code on the function. To avoid an implicit tier down we restore
1401 // original baseline code in case it existed beforehand.
1402 info->shared_info()->ReplaceCode(*original_code);
1403 }
1397 } 1404 }
1398 DCHECK(info->shared_info()->HasBytecodeArray()); 1405 DCHECK(info->shared_info()->HasBytecodeArray());
1399 return true; 1406 return true;
1400 } 1407 }
1401 1408
1402 // TODO(turbofan): In the future, unoptimized code with deopt support could 1409 // TODO(turbofan): In the future, unoptimized code with deopt support could
1403 // be generated lazily once deopt is triggered. 1410 // be generated lazily once deopt is triggered.
1404 bool Compiler::EnsureDeoptimizationSupport(CompilationInfo* info) { 1411 bool Compiler::EnsureDeoptimizationSupport(CompilationInfo* info) {
1405 DCHECK_NOT_NULL(info->literal()); 1412 DCHECK_NOT_NULL(info->literal());
1406 DCHECK_NOT_NULL(info->scope()); 1413 DCHECK_NOT_NULL(info->scope());
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
1970 DCHECK(shared->is_compiled()); 1977 DCHECK(shared->is_compiled());
1971 function->set_literals(cached.literals); 1978 function->set_literals(cached.literals);
1972 } else if (shared->is_compiled()) { 1979 } else if (shared->is_compiled()) {
1973 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. 1980 // TODO(mvstanton): pass pretenure flag to EnsureLiterals.
1974 JSFunction::EnsureLiterals(function); 1981 JSFunction::EnsureLiterals(function);
1975 } 1982 }
1976 } 1983 }
1977 1984
1978 } // namespace internal 1985 } // namespace internal
1979 } // namespace v8 1986 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/regress/regress-crbug-635923.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698