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

Side by Side Diff: src/compiler.cc

Issue 1320103002: Improve handling of debug name in CompilationInfo. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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 | « src/compiler.h ('k') | no next file » | 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 8
9 #include "src/ast-numbering.h" 9 #include "src/ast-numbering.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 149
150 CompilationInfo::CompilationInfo(CodeStub* stub, Isolate* isolate, Zone* zone) 150 CompilationInfo::CompilationInfo(CodeStub* stub, Isolate* isolate, Zone* zone)
151 : CompilationInfo(nullptr, stub, CodeStub::MajorName(stub->MajorKey()), 151 : CompilationInfo(nullptr, stub, CodeStub::MajorName(stub->MajorKey()),
152 STUB, isolate, zone) {} 152 STUB, isolate, zone) {}
153 153
154 CompilationInfo::CompilationInfo(const char* debug_name, Isolate* isolate, 154 CompilationInfo::CompilationInfo(const char* debug_name, Isolate* isolate,
155 Zone* zone) 155 Zone* zone)
156 : CompilationInfo(nullptr, nullptr, debug_name, STUB, isolate, zone) {} 156 : CompilationInfo(nullptr, nullptr, debug_name, STUB, isolate, zone) {}
157 157
158 CompilationInfo::CompilationInfo(ParseInfo* parse_info, CodeStub* code_stub, 158 CompilationInfo::CompilationInfo(ParseInfo* parse_info, CodeStub* code_stub,
159 const char* code_stub_debug_name, Mode mode, 159 const char* debug_name, Mode mode,
160 Isolate* isolate, Zone* zone) 160 Isolate* isolate, Zone* zone)
161 : parse_info_(parse_info), 161 : parse_info_(parse_info),
162 isolate_(isolate), 162 isolate_(isolate),
163 flags_(0), 163 flags_(0),
164 code_stub_(code_stub), 164 code_stub_(code_stub),
165 mode_(mode), 165 mode_(mode),
166 osr_ast_id_(BailoutId::None()), 166 osr_ast_id_(BailoutId::None()),
167 zone_(zone), 167 zone_(zone),
168 deferred_handles_(nullptr), 168 deferred_handles_(nullptr),
169 dependencies_(isolate, zone), 169 dependencies_(isolate, zone),
170 bailout_reason_(kNoReason), 170 bailout_reason_(kNoReason),
171 prologue_offset_(Code::kPrologueOffsetNotSet), 171 prologue_offset_(Code::kPrologueOffsetNotSet),
172 no_frame_ranges_(isolate->cpu_profiler()->is_profiling() 172 no_frame_ranges_(isolate->cpu_profiler()->is_profiling()
173 ? new List<OffsetRange>(2) 173 ? new List<OffsetRange>(2)
174 : nullptr), 174 : nullptr),
175 track_positions_(FLAG_hydrogen_track_positions || 175 track_positions_(FLAG_hydrogen_track_positions ||
176 isolate->cpu_profiler()->is_profiling()), 176 isolate->cpu_profiler()->is_profiling()),
177 opt_count_(has_shared_info() ? shared_info()->opt_count() : 0), 177 opt_count_(has_shared_info() ? shared_info()->opt_count() : 0),
178 parameter_count_(0), 178 parameter_count_(0),
179 optimization_id_(-1), 179 optimization_id_(-1),
180 osr_expr_stack_height_(0), 180 osr_expr_stack_height_(0),
181 function_type_(nullptr), 181 function_type_(nullptr),
182 code_stub_debug_name_(code_stub_debug_name) { 182 debug_name_(debug_name) {
183 // Parameter count is number of stack parameters. 183 // Parameter count is number of stack parameters.
184 if (code_stub_ != NULL) { 184 if (code_stub_ != NULL) {
185 CodeStubDescriptor descriptor(code_stub_); 185 CodeStubDescriptor descriptor(code_stub_);
186 parameter_count_ = descriptor.GetStackParameterCount(); 186 parameter_count_ = descriptor.GetStackParameterCount();
187 if (descriptor.function_mode() == NOT_JS_FUNCTION_STUB_MODE) { 187 if (descriptor.function_mode() == NOT_JS_FUNCTION_STUB_MODE) {
188 parameter_count_--; 188 parameter_count_--;
189 } 189 }
190 } 190 }
191 } 191 }
192 192
193 193
194 CompilationInfo::~CompilationInfo() { 194 CompilationInfo::~CompilationInfo() {
195 DisableFutureOptimization(); 195 DisableFutureOptimization();
196 delete deferred_handles_; 196 delete deferred_handles_;
197 delete no_frame_ranges_; 197 delete no_frame_ranges_;
198 #ifdef DEBUG 198 #ifdef DEBUG
199 // Check that no dependent maps have been added or added dependent maps have 199 // Check that no dependent maps have been added or added dependent maps have
200 // been rolled back or committed. 200 // been rolled back or committed.
201 DCHECK(dependencies()->IsEmpty()); 201 DCHECK(dependencies()->IsEmpty());
202 #endif // DEBUG 202 #endif // DEBUG
203 } 203 }
204 204
205 205
206 void CompilationInfo::SetStub(CodeStub* code_stub) { 206 void CompilationInfo::SetStub(CodeStub* code_stub) {
207 SetMode(STUB); 207 SetMode(STUB);
208 code_stub_ = code_stub; 208 code_stub_ = code_stub;
209 code_stub_debug_name_ = CodeStub::MajorName(code_stub->MajorKey()); 209 debug_name_ = CodeStub::MajorName(code_stub->MajorKey());
210 } 210 }
211 211
212 212
213 int CompilationInfo::num_parameters() const { 213 int CompilationInfo::num_parameters() const {
214 return has_scope() ? scope()->num_parameters() : parameter_count_; 214 return has_scope() ? scope()->num_parameters() : parameter_count_;
215 } 215 }
216 216
217 217
218 int CompilationInfo::num_parameters_including_this() const { 218 int CompilationInfo::num_parameters_including_this() const {
219 return num_parameters() + (is_this_defined() ? 1 : 0); 219 return num_parameters() + (is_this_defined() ? 1 : 0);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 304
305 305
306 void CompilationInfo::LogDeoptCallPosition(int pc_offset, int inlining_id) { 306 void CompilationInfo::LogDeoptCallPosition(int pc_offset, int inlining_id) {
307 if (!track_positions_ || IsStub()) return; 307 if (!track_positions_ || IsStub()) return;
308 DCHECK_LT(static_cast<size_t>(inlining_id), inlined_function_infos_.size()); 308 DCHECK_LT(static_cast<size_t>(inlining_id), inlined_function_infos_.size());
309 inlined_function_infos_.at(inlining_id).deopt_pc_offsets.push_back(pc_offset); 309 inlined_function_infos_.at(inlining_id).deopt_pc_offsets.push_back(pc_offset);
310 } 310 }
311 311
312 312
313 base::SmartArrayPointer<char> CompilationInfo::GetDebugName() const { 313 base::SmartArrayPointer<char> CompilationInfo::GetDebugName() const {
314 if (IsStub()) { 314 if (parse_info()) {
315 size_t len = strlen(code_stub_debug_name_) + 1;
316 base::SmartArrayPointer<char> name(new char[len]);
317 memcpy(name.get(), code_stub_debug_name_, len);
318 return name;
319 } else {
320 AllowHandleDereference allow_deref; 315 AllowHandleDereference allow_deref;
321 return literal()->debug_name()->ToCString(); 316 return parse_info()->literal()->debug_name()->ToCString();
322 } 317 }
318 const char* str = debug_name_ ? debug_name_ : "unknown";
319 size_t len = strlen(str) + 1;
320 base::SmartArrayPointer<char> name(new char[len]);
321 memcpy(name.get(), str, len);
322 return name;
323 } 323 }
324 324
325 325
326 bool CompilationInfo::MustReplaceUndefinedReceiverWithGlobalProxy() { 326 bool CompilationInfo::MustReplaceUndefinedReceiverWithGlobalProxy() {
327 return is_sloppy(language_mode()) && !is_native() && 327 return is_sloppy(language_mode()) && !is_native() &&
328 scope()->has_this_declaration() && scope()->receiver()->is_used(); 328 scope()->has_this_declaration() && scope()->receiver()->is_used();
329 } 329 }
330 330
331 331
332 class HOptimizedGraphBuilderWithPositions: public HOptimizedGraphBuilder { 332 class HOptimizedGraphBuilderWithPositions: public HOptimizedGraphBuilder {
(...skipping 1419 matching lines...) Expand 10 before | Expand all | Expand 10 after
1752 } 1752 }
1753 1753
1754 #if DEBUG 1754 #if DEBUG
1755 void CompilationInfo::PrintAstForTesting() { 1755 void CompilationInfo::PrintAstForTesting() {
1756 PrintF("--- Source from AST ---\n%s\n", 1756 PrintF("--- Source from AST ---\n%s\n",
1757 PrettyPrinter(isolate(), zone()).PrintProgram(literal())); 1757 PrettyPrinter(isolate(), zone()).PrintProgram(literal()));
1758 } 1758 }
1759 #endif 1759 #endif
1760 } // namespace internal 1760 } // namespace internal
1761 } // namespace v8 1761 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698