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

Side by Side Diff: src/crankshaft/hydrogen.cc

Issue 2251673003: Revert of [Interpreter] Introduce InterpreterCompilationJob (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@offheap_peekhole
Patch Set: Created 4 years, 4 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/crankshaft/hydrogen.h ('k') | src/crankshaft/lithium-codegen.h » ('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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/crankshaft/hydrogen.h" 5 #include "src/crankshaft/hydrogen.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/allocation-site-scopes.h" 10 #include "src/allocation-site-scopes.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 #undef DEF_VISIT 107 #undef DEF_VISIT
108 108
109 #define DEF_VISIT(type) \ 109 #define DEF_VISIT(type) \
110 void Visit##type(type* node) override { \ 110 void Visit##type(type* node) override { \
111 HOptimizedGraphBuilder::Visit##type(node); \ 111 HOptimizedGraphBuilder::Visit##type(node); \
112 } 112 }
113 DECLARATION_NODE_LIST(DEF_VISIT) 113 DECLARATION_NODE_LIST(DEF_VISIT)
114 #undef DEF_VISIT 114 #undef DEF_VISIT
115 }; 115 };
116 116
117 HCompilationJob::Status HCompilationJob::PrepareJobImpl() { 117 HCompilationJob::Status HCompilationJob::CreateGraphImpl() {
118 if (!isolate()->use_crankshaft() || 118 if (!isolate()->use_crankshaft() ||
119 info()->shared_info()->dont_crankshaft()) { 119 info()->shared_info()->dont_crankshaft()) {
120 // Crankshaft is entirely disabled. 120 // Crankshaft is entirely disabled.
121 return FAILED; 121 return FAILED;
122 } 122 }
123 123
124 // Optimization requires a version of fullcode with deoptimization support. 124 // Optimization requires a version of fullcode with deoptimization support.
125 // Recompile the unoptimized version of the code if the current version 125 // Recompile the unoptimized version of the code if the current version
126 // doesn't have deoptimization support already. 126 // doesn't have deoptimization support already.
127 // Otherwise, if we are gathering compilation time and space statistics 127 // Otherwise, if we are gathering compilation time and space statistics
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 if (graph_ == NULL) return FAILED; 196 if (graph_ == NULL) return FAILED;
197 197
198 if (info()->dependencies()->HasAborted()) { 198 if (info()->dependencies()->HasAborted()) {
199 // Dependency has changed during graph creation. Let's try again later. 199 // Dependency has changed during graph creation. Let's try again later.
200 return RetryOptimization(kBailedOutDueToDependencyChange); 200 return RetryOptimization(kBailedOutDueToDependencyChange);
201 } 201 }
202 202
203 return SUCCEEDED; 203 return SUCCEEDED;
204 } 204 }
205 205
206 HCompilationJob::Status HCompilationJob::ExecuteJobImpl() { 206 HCompilationJob::Status HCompilationJob::OptimizeGraphImpl() {
207 DCHECK(graph_ != NULL); 207 DCHECK(graph_ != NULL);
208 BailoutReason bailout_reason = kNoReason; 208 BailoutReason bailout_reason = kNoReason;
209 209
210 if (graph_->Optimize(&bailout_reason)) { 210 if (graph_->Optimize(&bailout_reason)) {
211 chunk_ = LChunk::NewChunk(graph_); 211 chunk_ = LChunk::NewChunk(graph_);
212 if (chunk_ != NULL) return SUCCEEDED; 212 if (chunk_ != NULL) return SUCCEEDED;
213 } else if (bailout_reason != kNoReason) { 213 } else if (bailout_reason != kNoReason) {
214 info()->AbortOptimization(bailout_reason); 214 info()->AbortOptimization(bailout_reason);
215 } 215 }
216 216
217 return FAILED; 217 return FAILED;
218 } 218 }
219 219
220 HCompilationJob::Status HCompilationJob::FinalizeJobImpl() { 220 HCompilationJob::Status HCompilationJob::GenerateCodeImpl() {
221 DCHECK(chunk_ != NULL); 221 DCHECK(chunk_ != NULL);
222 DCHECK(graph_ != NULL); 222 DCHECK(graph_ != NULL);
223 { 223 {
224 // Deferred handles reference objects that were accessible during 224 // Deferred handles reference objects that were accessible during
225 // graph creation. To make sure that we don't encounter inconsistencies 225 // graph creation. To make sure that we don't encounter inconsistencies
226 // between graph creation and code generation, we disallow accessing 226 // between graph creation and code generation, we disallow accessing
227 // objects through deferred handles during the latter, with exceptions. 227 // objects through deferred handles during the latter, with exceptions.
228 DisallowDeferredHandleDereference no_deferred_handle_deref; 228 DisallowDeferredHandleDereference no_deferred_handle_deref;
229 Handle<Code> optimized_code = chunk_->Codegen(); 229 Handle<Code> optimized_code = chunk_->Codegen();
230 if (optimized_code.is_null()) { 230 if (optimized_code.is_null()) {
231 if (info()->bailout_reason() == kNoReason) { 231 if (info()->bailout_reason() == kNoReason) {
232 return AbortOptimization(kCodeGenerationFailed); 232 return AbortOptimization(kCodeGenerationFailed);
233 } 233 }
234 return FAILED; 234 return FAILED;
235 } 235 }
236 CompilationJob::RegisterWeakObjectsInOptimizedCode(optimized_code); 236 RegisterWeakObjectsInOptimizedCode(optimized_code);
237 info()->SetCode(optimized_code); 237 info()->SetCode(optimized_code);
238 } 238 }
239 // Add to the weak list of optimized code objects. 239 // Add to the weak list of optimized code objects.
240 info()->context()->native_context()->AddOptimizedCode(*info()->code()); 240 info()->context()->native_context()->AddOptimizedCode(*info()->code());
241 return SUCCEEDED; 241 return SUCCEEDED;
242 } 242 }
243 243
244 HBasicBlock::HBasicBlock(HGraph* graph) 244 HBasicBlock::HBasicBlock(HGraph* graph)
245 : block_id_(graph->GetNextBlockID()), 245 : block_id_(graph->GetNextBlockID()),
246 graph_(graph), 246 graph_(graph),
(...skipping 13185 matching lines...) Expand 10 before | Expand all | Expand 10 after
13432 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13432 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13433 } 13433 }
13434 13434
13435 #ifdef DEBUG 13435 #ifdef DEBUG
13436 graph_->Verify(false); // No full verify. 13436 graph_->Verify(false); // No full verify.
13437 #endif 13437 #endif
13438 } 13438 }
13439 13439
13440 } // namespace internal 13440 } // namespace internal
13441 } // namespace v8 13441 } // namespace v8
OLDNEW
« no previous file with comments | « src/crankshaft/hydrogen.h ('k') | src/crankshaft/lithium-codegen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698