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

Side by Side Diff: src/interpreter/bytecode-register-optimizer.cc

Issue 2048203002: [interpreter] Minor clean-up of BytecodeSourceInfo. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@oth-0066-suppress
Patch Set: Add BytecodeSourceInfo::ForceExpressionPosition(). Created 4 years, 6 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
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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/interpreter/bytecode-register-optimizer.h" 5 #include "src/interpreter/bytecode-register-optimizer.h"
6 6
7 namespace v8 { 7 namespace v8 {
8 namespace internal { 8 namespace internal {
9 namespace interpreter { 9 namespace interpreter {
10 10
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 304
305 flush_required_ = false; 305 flush_required_ = false;
306 } 306 }
307 307
308 void BytecodeRegisterOptimizer::WriteToNextStage(BytecodeNode* node) const { 308 void BytecodeRegisterOptimizer::WriteToNextStage(BytecodeNode* node) const {
309 next_stage_->Write(node); 309 next_stage_->Write(node);
310 } 310 }
311 311
312 void BytecodeRegisterOptimizer::WriteToNextStage( 312 void BytecodeRegisterOptimizer::WriteToNextStage(
313 BytecodeNode* node, const BytecodeSourceInfo& source_info) const { 313 BytecodeNode* node, const BytecodeSourceInfo& source_info) const {
314 node->source_info().Update(source_info); 314 if (source_info.is_valid()) {
315 node->source_info().MakeInvalidEqualTo(source_info);
316 }
315 next_stage_->Write(node); 317 next_stage_->Write(node);
316 } 318 }
317 319
318 void BytecodeRegisterOptimizer::OutputRegisterTransfer( 320 void BytecodeRegisterOptimizer::OutputRegisterTransfer(
319 RegisterInfo* input_info, RegisterInfo* output_info, 321 RegisterInfo* input_info, RegisterInfo* output_info,
320 const BytecodeSourceInfo& source_info) { 322 const BytecodeSourceInfo& source_info) {
321 Register input = input_info->register_value(); 323 Register input = input_info->register_value();
322 Register output = output_info->register_value(); 324 Register output = output_info->register_value();
323 DCHECK_NE(input.index(), output.index()); 325 DCHECK_NE(input.index(), output.index());
324 326
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 RegisterInfo* materialized_info = input_info->GetMaterializedEquivalent(); 408 RegisterInfo* materialized_info = input_info->GetMaterializedEquivalent();
407 OutputRegisterTransfer(materialized_info, output_info, source_info); 409 OutputRegisterTransfer(materialized_info, output_info, source_info);
408 } else if (source_info.is_valid()) { 410 } else if (source_info.is_valid()) {
409 // Emit a placeholder nop to maintain source position info. 411 // Emit a placeholder nop to maintain source position info.
410 EmitNopForSourceInfo(source_info); 412 EmitNopForSourceInfo(source_info);
411 } 413 }
412 } 414 }
413 415
414 void BytecodeRegisterOptimizer::EmitNopForSourceInfo( 416 void BytecodeRegisterOptimizer::EmitNopForSourceInfo(
415 const BytecodeSourceInfo& source_info) const { 417 const BytecodeSourceInfo& source_info) const {
418 DCHECK(source_info.is_valid());
416 BytecodeNode nop(Bytecode::kNop); 419 BytecodeNode nop(Bytecode::kNop);
417 nop.source_info().Update(source_info); 420 nop.source_info().MakeInvalidEqualTo(source_info);
418 WriteToNextStage(&nop); 421 WriteToNextStage(&nop);
419 } 422 }
420 423
421 void BytecodeRegisterOptimizer::DoLdar(const BytecodeNode* const node) { 424 void BytecodeRegisterOptimizer::DoLdar(const BytecodeNode* const node) {
422 Register input = GetRegisterInputOperand( 425 Register input = GetRegisterInputOperand(
423 0, node->bytecode(), node->operands(), node->operand_count()); 426 0, node->bytecode(), node->operands(), node->operand_count());
424 RegisterInfo* input_info = GetRegisterInfo(input); 427 RegisterInfo* input_info = GetRegisterInfo(input);
425 RegisterTransfer(input_info, accumulator_info_, node->source_info()); 428 RegisterTransfer(input_info, accumulator_info_, node->source_info());
426 } 429 }
427 430
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 if (info->materialized()) { 620 if (info->materialized()) {
618 CreateMaterializedEquivalent(info); 621 CreateMaterializedEquivalent(info);
619 } 622 }
620 info->MoveToNewEquivalenceSet(kInvalidEquivalenceId, false); 623 info->MoveToNewEquivalenceSet(kInvalidEquivalenceId, false);
621 } 624 }
622 } 625 }
623 626
624 } // namespace interpreter 627 } // namespace interpreter
625 } // namespace internal 628 } // namespace internal
626 } // namespace v8 629 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698