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

Side by Side Diff: src/compiler.cc

Issue 2742713003: [debugger] correctly annotate scripts with debug id. (Closed)
Patch Set: address comments Created 3 years, 9 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') | 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 1131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 PostponeInterruptsScope postpone(isolate); 1142 PostponeInterruptsScope postpone(isolate);
1143 DCHECK(!isolate->native_context().is_null()); 1143 DCHECK(!isolate->native_context().is_null());
1144 ParseInfo* parse_info = info->parse_info(); 1144 ParseInfo* parse_info = info->parse_info();
1145 1145
1146 RuntimeCallTimerScope runtimeTimer( 1146 RuntimeCallTimerScope runtimeTimer(
1147 isolate, parse_info->is_eval() ? &RuntimeCallStats::CompileEval 1147 isolate, parse_info->is_eval() ? &RuntimeCallStats::CompileEval
1148 : &RuntimeCallStats::CompileScript); 1148 : &RuntimeCallStats::CompileScript);
1149 1149
1150 Handle<Script> script = parse_info->script(); 1150 Handle<Script> script = parse_info->script();
1151 1151
1152 // TODO(svenpanne) Obscure place for this, perhaps move to OnBeforeCompile?
1153 FixedArray* array = isolate->native_context()->embedder_data();
1154 script->set_context_data(array->get(v8::Context::kDebugIdIndex));
1155
1156 Handle<SharedFunctionInfo> result; 1152 Handle<SharedFunctionInfo> result;
1157 1153
1158 { VMState<COMPILER> state(info->isolate()); 1154 { VMState<COMPILER> state(info->isolate());
1159 if (parse_info->literal() == nullptr) { 1155 if (parse_info->literal() == nullptr) {
1160 if (!parsing::ParseProgram(parse_info, false)) { 1156 if (!parsing::ParseProgram(parse_info, false)) {
1161 return Handle<SharedFunctionInfo>::null(); 1157 return Handle<SharedFunctionInfo>::null();
1162 } 1158 }
1163 1159
1164 { 1160 {
1165 ParseHandleScope parse_handles(parse_info); 1161 ParseHandleScope parse_handles(parse_info);
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
1502 if (FLAG_harmony_function_tostring && 1498 if (FLAG_harmony_function_tostring &&
1503 restriction == ONLY_SINGLE_FUNCTION_LITERAL && 1499 restriction == ONLY_SINGLE_FUNCTION_LITERAL &&
1504 parameters_end_pos != kNoSourcePosition) { 1500 parameters_end_pos != kNoSourcePosition) {
1505 // use the parameters_end_pos as the eval_scope_position in the eval cache. 1501 // use the parameters_end_pos as the eval_scope_position in the eval cache.
1506 DCHECK_EQ(eval_scope_position, 0); 1502 DCHECK_EQ(eval_scope_position, 0);
1507 position = -parameters_end_pos; 1503 position = -parameters_end_pos;
1508 } 1504 }
1509 CompilationCache* compilation_cache = isolate->compilation_cache(); 1505 CompilationCache* compilation_cache = isolate->compilation_cache();
1510 InfoVectorPair eval_result = compilation_cache->LookupEval( 1506 InfoVectorPair eval_result = compilation_cache->LookupEval(
1511 source, outer_info, context, language_mode, position); 1507 source, outer_info, context, language_mode, position);
1512 Handle<SharedFunctionInfo> shared_info;
1513 if (eval_result.has_shared()) {
1514 shared_info = Handle<SharedFunctionInfo>(eval_result.shared(), isolate);
1515 }
1516 Handle<Cell> vector; 1508 Handle<Cell> vector;
1517 if (eval_result.has_vector()) { 1509 if (eval_result.has_vector()) {
1518 vector = Handle<Cell>(eval_result.vector(), isolate); 1510 vector = Handle<Cell>(eval_result.vector(), isolate);
1519 } 1511 }
1520 1512
1513 Handle<SharedFunctionInfo> shared_info;
1521 Handle<Script> script; 1514 Handle<Script> script;
1522 if (!eval_result.has_shared()) { 1515 if (eval_result.has_shared()) {
1516 shared_info = Handle<SharedFunctionInfo>(eval_result.shared(), isolate);
1517 script = Handle<Script>(Script::cast(shared_info->script()), isolate);
1518 } else {
1523 script = isolate->factory()->NewScript(source); 1519 script = isolate->factory()->NewScript(source);
1524 if (isolate->NeedsSourcePositionsForProfiling()) { 1520 if (isolate->NeedsSourcePositionsForProfiling()) {
1525 Script::InitLineEnds(script); 1521 Script::InitLineEnds(script);
1526 } 1522 }
1527 if (!script_name.is_null()) { 1523 if (!script_name.is_null()) {
1528 script->set_name(*script_name); 1524 script->set_name(*script_name);
1529 script->set_line_offset(line_offset); 1525 script->set_line_offset(line_offset);
1530 script->set_column_offset(column_offset); 1526 script->set_column_offset(column_offset);
1531 } 1527 }
1532 script->set_origin_options(options); 1528 script->set_origin_options(options);
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1683 // Then check cached code provided by embedder. 1679 // Then check cached code provided by embedder.
1684 HistogramTimerScope timer(isolate->counters()->compile_deserialize()); 1680 HistogramTimerScope timer(isolate->counters()->compile_deserialize());
1685 RuntimeCallTimerScope runtimeTimer(isolate, 1681 RuntimeCallTimerScope runtimeTimer(isolate,
1686 &RuntimeCallStats::CompileDeserialize); 1682 &RuntimeCallStats::CompileDeserialize);
1687 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), 1683 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
1688 "V8.CompileDeserialize"); 1684 "V8.CompileDeserialize");
1689 Handle<SharedFunctionInfo> inner_result; 1685 Handle<SharedFunctionInfo> inner_result;
1690 if (CodeSerializer::Deserialize(isolate, *cached_data, source) 1686 if (CodeSerializer::Deserialize(isolate, *cached_data, source)
1691 .ToHandle(&inner_result)) { 1687 .ToHandle(&inner_result)) {
1692 // Promote to per-isolate compilation cache. 1688 // Promote to per-isolate compilation cache.
1693 // TODO(mvstanton): create a feedback vector array here.
1694 DCHECK(inner_result->is_compiled()); 1689 DCHECK(inner_result->is_compiled());
1695 Handle<FeedbackVector> feedback_vector = 1690 Handle<FeedbackVector> feedback_vector =
1696 FeedbackVector::New(isolate, inner_result); 1691 FeedbackVector::New(isolate, inner_result);
1697 vector = isolate->factory()->NewCell(feedback_vector); 1692 vector = isolate->factory()->NewCell(feedback_vector);
1698 compilation_cache->PutScript(source, context, language_mode, 1693 compilation_cache->PutScript(source, context, language_mode,
1699 inner_result, vector); 1694 inner_result, vector);
1695 Handle<Script> script(Script::cast(inner_result->script()), isolate);
1696 isolate->debug()->OnAfterCompile(script);
1700 return inner_result; 1697 return inner_result;
1701 } 1698 }
1702 // Deserializer failed. Fall through to compile. 1699 // Deserializer failed. Fall through to compile.
1703 } else { 1700 } else {
1704 if (pair.has_shared()) { 1701 if (pair.has_shared()) {
1705 result = Handle<SharedFunctionInfo>(pair.shared(), isolate); 1702 result = Handle<SharedFunctionInfo>(pair.shared(), isolate);
1706 } 1703 }
1707 if (pair.has_vector()) { 1704 if (pair.has_vector()) {
1708 vector = Handle<Cell>(pair.vector(), isolate); 1705 vector = Handle<Cell>(pair.vector(), isolate);
1709 } 1706 }
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1938 } 1935 }
1939 1936
1940 if (shared->is_compiled()) { 1937 if (shared->is_compiled()) {
1941 // TODO(mvstanton): pass pretenure flag to EnsureLiterals. 1938 // TODO(mvstanton): pass pretenure flag to EnsureLiterals.
1942 JSFunction::EnsureLiterals(function); 1939 JSFunction::EnsureLiterals(function);
1943 } 1940 }
1944 } 1941 }
1945 1942
1946 } // namespace internal 1943 } // namespace internal
1947 } // namespace v8 1944 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/debug/debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698