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

Unified Diff: src/interpreter/bytecode-array-builder.cc

Issue 2030583002: [Interpreter] Don't try to eliminate dead-code in bytecode-array-builder (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix Test Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-peephole-optimizer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/interpreter/bytecode-array-builder.cc
diff --git a/src/interpreter/bytecode-array-builder.cc b/src/interpreter/bytecode-array-builder.cc
index 7f8134fb1628ecb7279c850eb76e545b04d01bb3..b8e0c605e4e754ae7ea820764800ccf7274a1caf 100644
--- a/src/interpreter/bytecode-array-builder.cc
+++ b/src/interpreter/bytecode-array-builder.cc
@@ -24,7 +24,7 @@ BytecodeArrayBuilder::BytecodeArrayBuilder(Isolate* isolate, Zone* zone,
constant_array_builder_(isolate, zone),
handler_table_builder_(isolate, zone),
source_position_table_builder_(isolate, zone),
- exit_seen_in_block_(false),
+ return_seen_in_block_(false),
unbound_jumps_(0),
parameter_count_(parameter_count),
local_register_count_(locals_count),
@@ -79,7 +79,7 @@ bool BytecodeArrayBuilder::RegisterIsParameterOrLocal(Register reg) const {
Handle<BytecodeArray> BytecodeArrayBuilder::ToBytecodeArray() {
DCHECK_EQ(0, unbound_jumps_);
DCHECK_EQ(bytecode_generated_, false);
- DCHECK(exit_seen_in_block_);
+ DCHECK(return_seen_in_block_);
pipeline()->FlushBasicBlock();
const ZoneVector<uint8_t>* bytecodes = bytecode_array_writer()->bytecodes();
@@ -117,9 +117,6 @@ void BytecodeArrayBuilder::AttachSourceInfo(BytecodeNode* node) {
}
void BytecodeArrayBuilder::Output(Bytecode bytecode) {
- // Don't output dead code.
- if (exit_seen_in_block_) return;
-
BytecodeNode node(bytecode);
AttachSourceInfo(&node);
pipeline()->Write(&node);
@@ -129,8 +126,6 @@ void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode,
OperandScale operand_scale,
uint32_t operand0, uint32_t operand1,
uint32_t operand2, uint32_t operand3) {
- // Don't output dead code.
- if (exit_seen_in_block_) return;
DCHECK(OperandIsValid(bytecode, operand_scale, 0, operand0));
DCHECK(OperandIsValid(bytecode, operand_scale, 1, operand1));
DCHECK(OperandIsValid(bytecode, operand_scale, 2, operand2));
@@ -145,8 +140,6 @@ void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode,
OperandScale operand_scale,
uint32_t operand0, uint32_t operand1,
uint32_t operand2) {
- // Don't output dead code.
- if (exit_seen_in_block_) return;
DCHECK(OperandIsValid(bytecode, operand_scale, 0, operand0));
DCHECK(OperandIsValid(bytecode, operand_scale, 1, operand1));
DCHECK(OperandIsValid(bytecode, operand_scale, 2, operand2));
@@ -158,8 +151,6 @@ void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode,
void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode,
OperandScale operand_scale,
uint32_t operand0, uint32_t operand1) {
- // Don't output dead code.
- if (exit_seen_in_block_) return;
DCHECK(OperandIsValid(bytecode, operand_scale, 0, operand0));
DCHECK(OperandIsValid(bytecode, operand_scale, 1, operand1));
BytecodeNode node(bytecode, operand0, operand1, operand_scale);
@@ -170,8 +161,6 @@ void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode,
void BytecodeArrayBuilder::OutputScaled(Bytecode bytecode,
OperandScale operand_scale,
uint32_t operand0) {
- // Don't output dead code.
- if (exit_seen_in_block_) return;
DCHECK(OperandIsValid(bytecode, operand_scale, 0, operand0));
BytecodeNode node(bytecode, operand0, operand_scale);
AttachSourceInfo(&node);
@@ -666,9 +655,6 @@ void BytecodeArrayBuilder::PatchJump(size_t jump_target, size_t jump_location) {
BytecodeArrayBuilder& BytecodeArrayBuilder::OutputJump(Bytecode jump_bytecode,
BytecodeLabel* label) {
- // Don't emit dead code.
- if (exit_seen_in_block_) return *this;
-
if (label->is_bound()) {
// Label has been bound already so this is a backwards jump.
size_t current_offset = pipeline()->FlushForOffset();
@@ -754,21 +740,19 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::JumpIfNotHole(
BytecodeArrayBuilder& BytecodeArrayBuilder::Throw() {
Output(Bytecode::kThrow);
- exit_seen_in_block_ = true;
return *this;
}
BytecodeArrayBuilder& BytecodeArrayBuilder::ReThrow() {
Output(Bytecode::kReThrow);
- exit_seen_in_block_ = true;
return *this;
}
BytecodeArrayBuilder& BytecodeArrayBuilder::Return() {
Output(Bytecode::kReturn);
- exit_seen_in_block_ = true;
+ return_seen_in_block_ = true;
return *this;
}
@@ -863,17 +847,17 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::MarkTryEnd(int handler_id) {
void BytecodeArrayBuilder::LeaveBasicBlock() {
- exit_seen_in_block_ = false;
pipeline()->FlushBasicBlock();
+ return_seen_in_block_ = false;
}
void BytecodeArrayBuilder::EnsureReturn() {
- if (!exit_seen_in_block_) {
+ if (!return_seen_in_block_) {
LoadUndefined();
SetReturnPosition();
Return();
}
- DCHECK(exit_seen_in_block_);
+ DCHECK(return_seen_in_block_);
}
BytecodeArrayBuilder& BytecodeArrayBuilder::Call(Register callable,
@@ -974,25 +958,21 @@ size_t BytecodeArrayBuilder::GetConstantPoolEntry(Handle<Object> object) {
void BytecodeArrayBuilder::SetReturnPosition() {
if (return_position_ == RelocInfo::kNoPosition) return;
- if (exit_seen_in_block_) return;
latest_source_info_.Update({return_position_, true});
}
void BytecodeArrayBuilder::SetStatementPosition(Statement* stmt) {
if (stmt->position() == RelocInfo::kNoPosition) return;
- if (exit_seen_in_block_) return;
latest_source_info_.Update({stmt->position(), true});
}
void BytecodeArrayBuilder::SetExpressionPosition(Expression* expr) {
if (expr->position() == RelocInfo::kNoPosition) return;
- if (exit_seen_in_block_) return;
latest_source_info_.Update({expr->position(), false});
}
void BytecodeArrayBuilder::SetExpressionAsStatementPosition(Expression* expr) {
if (expr->position() == RelocInfo::kNoPosition) return;
- if (exit_seen_in_block_) return;
latest_source_info_.Update({expr->position(), true});
}
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-peephole-optimizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698