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

Unified Diff: src/compiler.cc

Issue 1894023004: [compiler] Extract scope info installation into helper. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Small fix. Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler.cc
diff --git a/src/compiler.cc b/src/compiler.cc
index 8164a030c7a1e9fc8597a31a0acdd2f62ad2e060..252291e9500215c165045085aa80eed4491f5f98 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -558,14 +558,19 @@ bool CompileBaselineCode(CompilationInfo* info) {
return true;
}
-void InstallBaselineCompilationResult(CompilationInfo* info,
- Handle<SharedFunctionInfo> shared,
- Handle<ScopeInfo> scope_info) {
+void InstallSharedScopeInfo(CompilationInfo* info,
+ Handle<SharedFunctionInfo> shared) {
+ Handle<ScopeInfo> scope_info =
+ ScopeInfo::Create(info->isolate(), info->zone(), info->scope());
+ shared->set_scope_info(*scope_info);
+}
+
+void InstallSharedCompilationResult(CompilationInfo* info,
+ Handle<SharedFunctionInfo> shared) {
// Assert that we are not overwriting (possibly patched) debug code.
DCHECK(!shared->HasDebugCode());
DCHECK(!info->code().is_null());
shared->ReplaceCode(*info->code());
- shared->set_scope_info(*scope_info);
if (info->has_bytecode_array()) {
DCHECK(!shared->HasBytecodeArray()); // Only compiled once.
shared->set_bytecode_array(*info->bytecode_array());
@@ -585,13 +590,11 @@ MUST_USE_RESULT MaybeHandle<Code> GetUnoptimizedCode(CompilationInfo* info) {
if (!CompileBaselineCode(info)) return MaybeHandle<Code>();
RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, info, shared);
- // Update the shared function info with the scope info. Allocating the
- // ScopeInfo object may cause a GC.
- Handle<ScopeInfo> scope_info =
- ScopeInfo::Create(info->isolate(), info->zone(), info->scope());
+ // Update the shared function info with the scope info.
+ InstallSharedScopeInfo(info, shared);
// Install compilation result on the shared function info
- InstallBaselineCompilationResult(info, shared, scope_info);
+ InstallSharedCompilationResult(info, shared);
return info->code();
}
@@ -1018,10 +1021,11 @@ Handle<SharedFunctionInfo> CompileToplevel(CompilationInfo* info) {
return Handle<SharedFunctionInfo>::null();
}
+ // Update the shared function info with the scope info.
+ InstallSharedScopeInfo(info, result);
+
// Install compilation result on the shared function info
- Handle<ScopeInfo> scope_info =
- ScopeInfo::Create(info->isolate(), info->zone(), info->scope());
- InstallBaselineCompilationResult(info, result, scope_info);
+ InstallSharedCompilationResult(info, result);
Handle<String> script_name =
script->name()->IsString()
@@ -1216,9 +1220,7 @@ bool Compiler::EnsureDeoptimizationSupport(CompilationInfo* info) {
// The scope info might not have been set if a lazily compiled
// function is inlined before being called for the first time.
if (shared->scope_info() == ScopeInfo::Empty(info->isolate())) {
- Handle<ScopeInfo> target_scope_info =
- ScopeInfo::Create(info->isolate(), info->zone(), info->scope());
- shared->set_scope_info(*target_scope_info);
+ InstallSharedScopeInfo(info, shared);
}
// The existing unoptimized code was replaced with the new one.
@@ -1538,14 +1540,14 @@ Handle<SharedFunctionInfo> Compiler::GetSharedFunctionInfo(
// Code generation will ensure that the feedback vector is present and
// appropriately sized.
DCHECK(!info.code().is_null());
- Handle<ScopeInfo> scope_info =
- ScopeInfo::Create(info.isolate(), info.zone(), info.scope());
if (literal->should_eager_compile() &&
literal->should_be_used_once_hint()) {
info.code()->MarkToBeExecutedOnce(isolate);
}
+ // Update the shared function info with the scope info.
+ InstallSharedScopeInfo(&info, result);
// Install compilation result on the shared function info.
- InstallBaselineCompilationResult(&info, result, scope_info);
+ InstallSharedCompilationResult(&info, result);
} else {
return Handle<SharedFunctionInfo>::null();
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698