OLD | NEW |
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 | 6 |
7 namespace v8 { | 7 namespace v8 { |
8 namespace internal { | 8 namespace internal { |
9 namespace interpreter { | 9 namespace interpreter { |
10 | 10 |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 Bytecode BytecodeArrayBuilder::BytecodeForBinaryOperation(Token::Value op) { | 186 Bytecode BytecodeArrayBuilder::BytecodeForBinaryOperation(Token::Value op) { |
187 switch (op) { | 187 switch (op) { |
188 case Token::Value::ADD: | 188 case Token::Value::ADD: |
189 return Bytecode::kAdd; | 189 return Bytecode::kAdd; |
190 case Token::Value::SUB: | 190 case Token::Value::SUB: |
191 return Bytecode::kSub; | 191 return Bytecode::kSub; |
192 case Token::Value::MUL: | 192 case Token::Value::MUL: |
193 return Bytecode::kMul; | 193 return Bytecode::kMul; |
194 case Token::Value::DIV: | 194 case Token::Value::DIV: |
195 return Bytecode::kDiv; | 195 return Bytecode::kDiv; |
| 196 case Token::Value::MOD: |
| 197 return Bytecode::kMod; |
196 default: | 198 default: |
197 UNIMPLEMENTED(); | 199 UNIMPLEMENTED(); |
198 return static_cast<Bytecode>(-1); | 200 return static_cast<Bytecode>(-1); |
199 } | 201 } |
200 } | 202 } |
201 | 203 |
202 | 204 |
203 TemporaryRegisterScope::TemporaryRegisterScope(BytecodeArrayBuilder* builder) | 205 TemporaryRegisterScope::TemporaryRegisterScope(BytecodeArrayBuilder* builder) |
204 : builder_(builder), count_(0), last_register_index_(-1) {} | 206 : builder_(builder), count_(0), last_register_index_(-1) {} |
205 | 207 |
206 | 208 |
207 TemporaryRegisterScope::~TemporaryRegisterScope() { | 209 TemporaryRegisterScope::~TemporaryRegisterScope() { |
208 while (count_-- != 0) { | 210 while (count_-- != 0) { |
209 builder_->ReturnTemporaryRegister(last_register_index_--); | 211 builder_->ReturnTemporaryRegister(last_register_index_--); |
210 } | 212 } |
211 } | 213 } |
212 | 214 |
213 | 215 |
214 Register TemporaryRegisterScope::NewRegister() { | 216 Register TemporaryRegisterScope::NewRegister() { |
215 count_++; | 217 count_++; |
216 last_register_index_ = builder_->BorrowTemporaryRegister(); | 218 last_register_index_ = builder_->BorrowTemporaryRegister(); |
217 return Register(last_register_index_); | 219 return Register(last_register_index_); |
218 } | 220 } |
219 | 221 |
220 } // namespace interpreter | 222 } // namespace interpreter |
221 } // namespace internal | 223 } // namespace internal |
222 } // namespace v8 | 224 } // namespace v8 |
OLD | NEW |