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

Side by Side Diff: src/compiler.cc

Issue 1356363004: Add CompilationInfo::output_code_kind to allow overriding the kind of code generated. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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 | « 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 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 } 147 }
148 } 148 }
149 149
150 150
151 CompilationInfo::CompilationInfo(CodeStub* stub, Isolate* isolate, Zone* zone) 151 CompilationInfo::CompilationInfo(CodeStub* stub, Isolate* isolate, Zone* zone)
152 : CompilationInfo(nullptr, stub, CodeStub::MajorName(stub->MajorKey()), 152 : CompilationInfo(nullptr, stub, CodeStub::MajorName(stub->MajorKey()),
153 STUB, isolate, zone) {} 153 STUB, isolate, zone) {}
154 154
155 CompilationInfo::CompilationInfo(const char* debug_name, Isolate* isolate, 155 CompilationInfo::CompilationInfo(const char* debug_name, Isolate* isolate,
156 Zone* zone) 156 Zone* zone)
157 : CompilationInfo(nullptr, nullptr, debug_name, STUB, isolate, zone) {} 157 : CompilationInfo(nullptr, nullptr, debug_name, STUB, isolate, zone) {
158 set_output_code_kind(Code::STUB);
159 }
158 160
159 CompilationInfo::CompilationInfo(ParseInfo* parse_info, CodeStub* code_stub, 161 CompilationInfo::CompilationInfo(ParseInfo* parse_info, CodeStub* code_stub,
160 const char* debug_name, Mode mode, 162 const char* debug_name, Mode mode,
161 Isolate* isolate, Zone* zone) 163 Isolate* isolate, Zone* zone)
162 : parse_info_(parse_info), 164 : parse_info_(parse_info),
163 isolate_(isolate), 165 isolate_(isolate),
164 flags_(0), 166 flags_(0),
165 code_stub_(code_stub), 167 code_stub_(code_stub),
166 mode_(mode), 168 mode_(mode),
167 osr_ast_id_(BailoutId::None()), 169 osr_ast_id_(BailoutId::None()),
(...skipping 13 matching lines...) Expand all
181 osr_expr_stack_height_(0), 183 osr_expr_stack_height_(0),
182 function_type_(nullptr), 184 function_type_(nullptr),
183 debug_name_(debug_name) { 185 debug_name_(debug_name) {
184 // Parameter count is number of stack parameters. 186 // Parameter count is number of stack parameters.
185 if (code_stub_ != NULL) { 187 if (code_stub_ != NULL) {
186 CodeStubDescriptor descriptor(code_stub_); 188 CodeStubDescriptor descriptor(code_stub_);
187 parameter_count_ = descriptor.GetStackParameterCount(); 189 parameter_count_ = descriptor.GetStackParameterCount();
188 if (descriptor.function_mode() == NOT_JS_FUNCTION_STUB_MODE) { 190 if (descriptor.function_mode() == NOT_JS_FUNCTION_STUB_MODE) {
189 parameter_count_--; 191 parameter_count_--;
190 } 192 }
193 set_output_code_kind(code_stub->GetCodeKind());
194 } else {
195 set_output_code_kind(Code::FUNCTION);
191 } 196 }
192 } 197 }
193 198
194 199
195 CompilationInfo::~CompilationInfo() { 200 CompilationInfo::~CompilationInfo() {
196 DisableFutureOptimization(); 201 DisableFutureOptimization();
197 delete deferred_handles_; 202 delete deferred_handles_;
198 delete no_frame_ranges_; 203 delete no_frame_ranges_;
199 #ifdef DEBUG 204 #ifdef DEBUG
200 // Check that no dependent maps have been added or added dependent maps have 205 // Check that no dependent maps have been added or added dependent maps have
201 // been rolled back or committed. 206 // been rolled back or committed.
202 DCHECK(dependencies()->IsEmpty()); 207 DCHECK(dependencies()->IsEmpty());
203 #endif // DEBUG 208 #endif // DEBUG
204 } 209 }
205 210
206 211
207 void CompilationInfo::SetStub(CodeStub* code_stub) { 212 void CompilationInfo::SetStub(CodeStub* code_stub) {
208 SetMode(STUB); 213 SetMode(STUB);
209 code_stub_ = code_stub; 214 code_stub_ = code_stub;
210 debug_name_ = CodeStub::MajorName(code_stub->MajorKey()); 215 debug_name_ = CodeStub::MajorName(code_stub->MajorKey());
216 set_output_code_kind(code_stub->GetCodeKind());
211 } 217 }
212 218
213 219
214 int CompilationInfo::num_parameters() const { 220 int CompilationInfo::num_parameters() const {
215 return has_scope() ? scope()->num_parameters() : parameter_count_; 221 return has_scope() ? scope()->num_parameters() : parameter_count_;
216 } 222 }
217 223
218 224
219 int CompilationInfo::num_parameters_including_this() const { 225 int CompilationInfo::num_parameters_including_this() const {
220 return num_parameters() + (is_this_defined() ? 1 : 0); 226 return num_parameters() + (is_this_defined() ? 1 : 0);
(...skipping 1534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1755 } 1761 }
1756 1762
1757 #if DEBUG 1763 #if DEBUG
1758 void CompilationInfo::PrintAstForTesting() { 1764 void CompilationInfo::PrintAstForTesting() {
1759 PrintF("--- Source from AST ---\n%s\n", 1765 PrintF("--- Source from AST ---\n%s\n",
1760 PrettyPrinter(isolate(), zone()).PrintProgram(literal())); 1766 PrettyPrinter(isolate(), zone()).PrintProgram(literal()));
1761 } 1767 }
1762 #endif 1768 #endif
1763 } // namespace internal 1769 } // namespace internal
1764 } // namespace v8 1770 } // 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