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

Side by Side Diff: src/compiler.cc

Issue 2400973002: [compiler] Allow debug compilation for top-level eval. (Closed)
Patch Set: Created 4 years, 2 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 | src/debug/debug.cc » ('j') | src/debug/debug.cc » ('J')
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 1100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 ? info->isolate()->counters()->compile_eval() 1111 ? info->isolate()->counters()->compile_eval()
1112 : info->isolate()->counters()->compile(); 1112 : info->isolate()->counters()->compile();
1113 HistogramTimerScope timer(rate); 1113 HistogramTimerScope timer(rate);
1114 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), 1114 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
1115 parse_info->is_eval() ? "V8.CompileEval" : "V8.Compile"); 1115 parse_info->is_eval() ? "V8.CompileEval" : "V8.Compile");
1116 1116
1117 // Allocate a shared function info object. 1117 // Allocate a shared function info object.
1118 DCHECK_EQ(kNoSourcePosition, lit->function_token_position()); 1118 DCHECK_EQ(kNoSourcePosition, lit->function_token_position());
1119 result = NewSharedFunctionInfoForLiteral(isolate, lit, script); 1119 result = NewSharedFunctionInfoForLiteral(isolate, lit, script);
1120 result->set_is_toplevel(true); 1120 result->set_is_toplevel(true);
1121 if (parse_info->is_eval()) {
1122 // Eval scripts cannot be (re-)compiled without context.
1123 result->set_allows_lazy_compilation_without_context(false);
1124 }
1125 parse_info->set_shared_info(result); 1121 parse_info->set_shared_info(result);
1126 1122
1127 // Compile the code. 1123 // Compile the code.
1128 if (!CompileUnoptimizedCode(info)) { 1124 if (!CompileUnoptimizedCode(info)) {
1129 return Handle<SharedFunctionInfo>::null(); 1125 return Handle<SharedFunctionInfo>::null();
1130 } 1126 }
1131 1127
1132 // Update the shared function info with the scope info. 1128 // Update the shared function info with the scope info.
1133 InstallSharedScopeInfo(info, result); 1129 InstallSharedScopeInfo(info, result);
1134 1130
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 } 1286 }
1291 1287
1292 bool Compiler::CompileDebugCode(Handle<SharedFunctionInfo> shared) { 1288 bool Compiler::CompileDebugCode(Handle<SharedFunctionInfo> shared) {
1293 Isolate* isolate = shared->GetIsolate(); 1289 Isolate* isolate = shared->GetIsolate();
1294 DCHECK(AllowCompilation::IsAllowed(isolate)); 1290 DCHECK(AllowCompilation::IsAllowed(isolate));
1295 1291
1296 // Start a compilation. 1292 // Start a compilation.
1297 Zone zone(isolate->allocator()); 1293 Zone zone(isolate->allocator());
1298 ParseInfo parse_info(&zone, shared); 1294 ParseInfo parse_info(&zone, shared);
1299 CompilationInfo info(&parse_info, Handle<JSFunction>::null()); 1295 CompilationInfo info(&parse_info, Handle<JSFunction>::null());
1300 DCHECK(shared->allows_lazy_compilation_without_context()); 1296 if (IsEvalToplevel(shared)) {
1301 DCHECK(!IsEvalToplevel(shared)); 1297 parse_info.set_eval();
1298 parse_info.set_toplevel();
1299 parse_info.set_allow_lazy_parsing(false);
1300 parse_info.set_lazy(false);
1301 }
1302 info.MarkAsDebug(); 1302 info.MarkAsDebug();
1303 if (GetUnoptimizedCode(&info).is_null()) { 1303 if (GetUnoptimizedCode(&info).is_null()) {
1304 isolate->clear_pending_exception(); 1304 isolate->clear_pending_exception();
1305 return false; 1305 return false;
1306 } 1306 }
1307 1307
1308 // Check postconditions on success. 1308 // Check postconditions on success.
1309 DCHECK(!isolate->has_pending_exception()); 1309 DCHECK(!isolate->has_pending_exception());
1310 DCHECK(shared->is_compiled()); 1310 DCHECK(shared->is_compiled());
1311 DCHECK(shared->HasDebugCode()); 1311 DCHECK(shared->HasDebugCode());
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
1888 DCHECK(shared->is_compiled()); 1888 DCHECK(shared->is_compiled());
1889 function->set_literals(cached.literals); 1889 function->set_literals(cached.literals);
1890 } else if (shared->is_compiled()) { 1890 } else if (shared->is_compiled()) {
1891 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. 1891 // TODO(mvstanton): pass pretenure flag to EnsureLiterals.
1892 JSFunction::EnsureLiterals(function); 1892 JSFunction::EnsureLiterals(function);
1893 } 1893 }
1894 } 1894 }
1895 1895
1896 } // namespace internal 1896 } // namespace internal
1897 } // namespace v8 1897 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/debug/debug.cc » ('j') | src/debug/debug.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698