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

Side by Side Diff: src/interpreter/bytecode-array-builder.cc

Issue 1924093005: [ignition] Reactivate check for jumps to unbound targets. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-generator.cc » ('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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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-array-builder.h" 5 #include "src/interpreter/bytecode-array-builder.h"
6 #include "src/compiler.h" 6 #include "src/compiler.h"
7 #include "src/interpreter/interpreter-intrinsics.h" 7 #include "src/interpreter/interpreter-intrinsics.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 DCHECK_GE(parameter_count_, 0); 114 DCHECK_GE(parameter_count_, 0);
115 DCHECK_GE(context_register_count_, 0); 115 DCHECK_GE(context_register_count_, 0);
116 DCHECK_GE(local_register_count_, 0); 116 DCHECK_GE(local_register_count_, 0);
117 return_position_ = 117 return_position_ =
118 literal ? std::max(literal->start_position(), literal->end_position() - 1) 118 literal ? std::max(literal->start_position(), literal->end_position() - 1)
119 : RelocInfo::kNoPosition; 119 : RelocInfo::kNoPosition;
120 LOG_CODE_EVENT(isolate_, CodeStartLinePosInfoRecordEvent( 120 LOG_CODE_EVENT(isolate_, CodeStartLinePosInfoRecordEvent(
121 source_position_table_builder())); 121 source_position_table_builder()));
122 } 122 }
123 123
124 BytecodeArrayBuilder::~BytecodeArrayBuilder() { DCHECK_EQ(0, unbound_jumps_); }
125
126 Register BytecodeArrayBuilder::first_context_register() const { 124 Register BytecodeArrayBuilder::first_context_register() const {
127 DCHECK_GT(context_register_count_, 0); 125 DCHECK_GT(context_register_count_, 0);
128 return Register(local_register_count_); 126 return Register(local_register_count_);
129 } 127 }
130 128
131 129
132 Register BytecodeArrayBuilder::last_context_register() const { 130 Register BytecodeArrayBuilder::last_context_register() const {
133 DCHECK_GT(context_register_count_, 0); 131 DCHECK_GT(context_register_count_, 0);
134 return Register(local_register_count_ + context_register_count_ - 1); 132 return Register(local_register_count_ + context_register_count_ - 1);
135 } 133 }
136 134
137 135
138 Register BytecodeArrayBuilder::Parameter(int parameter_index) const { 136 Register BytecodeArrayBuilder::Parameter(int parameter_index) const {
139 DCHECK_GE(parameter_index, 0); 137 DCHECK_GE(parameter_index, 0);
140 return Register::FromParameterIndex(parameter_index, parameter_count()); 138 return Register::FromParameterIndex(parameter_index, parameter_count());
141 } 139 }
142 140
143 141
144 bool BytecodeArrayBuilder::RegisterIsParameterOrLocal(Register reg) const { 142 bool BytecodeArrayBuilder::RegisterIsParameterOrLocal(Register reg) const {
145 return reg.is_parameter() || reg.index() < locals_count(); 143 return reg.is_parameter() || reg.index() < locals_count();
146 } 144 }
147 145
148 146
149 Handle<BytecodeArray> BytecodeArrayBuilder::ToBytecodeArray() { 147 Handle<BytecodeArray> BytecodeArrayBuilder::ToBytecodeArray() {
148 DCHECK_EQ(0, unbound_jumps_);
150 DCHECK_EQ(bytecode_generated_, false); 149 DCHECK_EQ(bytecode_generated_, false);
151 DCHECK(exit_seen_in_block_); 150 DCHECK(exit_seen_in_block_);
152 151
153 int bytecode_size = static_cast<int>(bytecodes_.size()); 152 int bytecode_size = static_cast<int>(bytecodes_.size());
154 int register_count = fixed_and_temporary_register_count(); 153 int register_count = fixed_and_temporary_register_count();
155 int frame_size = register_count * kPointerSize; 154 int frame_size = register_count * kPointerSize;
156 Handle<FixedArray> constant_pool = constant_array_builder()->ToFixedArray(); 155 Handle<FixedArray> constant_pool = constant_array_builder()->ToFixedArray();
157 Handle<FixedArray> handler_table = handler_table_builder()->ToHandlerTable(); 156 Handle<FixedArray> handler_table = handler_table_builder()->ToHandlerTable();
158 Handle<ByteArray> source_position_table = 157 Handle<ByteArray> source_position_table =
159 source_position_table_builder()->ToSourcePositionTable(); 158 source_position_table_builder()->ToSourcePositionTable();
(...skipping 1329 matching lines...) Expand 10 before | Expand all | Expand 10 after
1489 } 1488 }
1490 1489
1491 uint32_t BytecodeArrayBuilder::UnsignedOperand(size_t value) { 1490 uint32_t BytecodeArrayBuilder::UnsignedOperand(size_t value) {
1492 DCHECK_LE(value, kMaxUInt32); 1491 DCHECK_LE(value, kMaxUInt32);
1493 return static_cast<uint32_t>(value); 1492 return static_cast<uint32_t>(value);
1494 } 1493 }
1495 1494
1496 } // namespace interpreter 1495 } // namespace interpreter
1497 } // namespace internal 1496 } // namespace internal
1498 } // namespace v8 1497 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698