| 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 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 if (FitsInIdx8Operand(feedback_slot)) { | 335 if (FitsInIdx8Operand(feedback_slot)) { |
| 336 Output(bytecode, object.ToOperand(), key.ToOperand(), | 336 Output(bytecode, object.ToOperand(), key.ToOperand(), |
| 337 static_cast<uint8_t>(feedback_slot)); | 337 static_cast<uint8_t>(feedback_slot)); |
| 338 } else { | 338 } else { |
| 339 UNIMPLEMENTED(); | 339 UNIMPLEMENTED(); |
| 340 } | 340 } |
| 341 return *this; | 341 return *this; |
| 342 } | 342 } |
| 343 | 343 |
| 344 | 344 |
| 345 BytecodeArrayBuilder& BytecodeArrayBuilder::GenericStoreKeyedProperty( |
| 346 Register object, Register key) { |
| 347 Output(Bytecode::kKeyedStoreICGeneric, object.ToOperand(), key.ToOperand()); |
| 348 return *this; |
| 349 } |
| 350 |
| 351 |
| 345 BytecodeArrayBuilder& BytecodeArrayBuilder::PushContext(Register context) { | 352 BytecodeArrayBuilder& BytecodeArrayBuilder::PushContext(Register context) { |
| 346 Output(Bytecode::kPushContext, context.ToOperand()); | 353 Output(Bytecode::kPushContext, context.ToOperand()); |
| 347 return *this; | 354 return *this; |
| 348 } | 355 } |
| 349 | 356 |
| 350 | 357 |
| 351 BytecodeArrayBuilder& BytecodeArrayBuilder::PopContext(Register context) { | 358 BytecodeArrayBuilder& BytecodeArrayBuilder::PopContext(Register context) { |
| 352 Output(Bytecode::kPopContext, context.ToOperand()); | 359 Output(Bytecode::kPopContext, context.ToOperand()); |
| 353 return *this; | 360 return *this; |
| 354 } | 361 } |
| 355 | 362 |
| 356 | 363 |
| 364 BytecodeArrayBuilder& BytecodeArrayBuilder::CreateArrayLiteral( |
| 365 int literal_index, int flags) { |
| 366 DCHECK(FitsInImm8Operand(flags)); // Flags should fit in 8 bytes. |
| 367 if (FitsInIdx8Operand(literal_index)) { |
| 368 Output(Bytecode::kCreateArrayLiteral, static_cast<uint8_t>(literal_index), |
| 369 static_cast<uint8_t>(flags)); |
| 370 } else { |
| 371 UNIMPLEMENTED(); |
| 372 } |
| 373 return *this; |
| 374 } |
| 375 |
| 376 |
| 357 BytecodeArrayBuilder& BytecodeArrayBuilder::CastAccumulatorToBoolean() { | 377 BytecodeArrayBuilder& BytecodeArrayBuilder::CastAccumulatorToBoolean() { |
| 358 if (LastBytecodeInSameBlock()) { | 378 if (LastBytecodeInSameBlock()) { |
| 359 // If the previous bytecode puts a boolean in the accumulator | 379 // If the previous bytecode puts a boolean in the accumulator |
| 360 // there is no need to emit an instruction. | 380 // there is no need to emit an instruction. |
| 361 switch (Bytecodes::FromByte(bytecodes()->at(last_bytecode_start_))) { | 381 switch (Bytecodes::FromByte(bytecodes()->at(last_bytecode_start_))) { |
| 362 case Bytecode::kToBoolean: | 382 case Bytecode::kToBoolean: |
| 363 UNREACHABLE(); | 383 UNREACHABLE(); |
| 364 case Bytecode::kLdaTrue: | 384 case Bytecode::kLdaTrue: |
| 365 case Bytecode::kLdaFalse: | 385 case Bytecode::kLdaFalse: |
| 366 case Bytecode::kLogicalNot: | 386 case Bytecode::kLogicalNot: |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 776 | 796 |
| 777 Register TemporaryRegisterScope::NewRegister() { | 797 Register TemporaryRegisterScope::NewRegister() { |
| 778 count_++; | 798 count_++; |
| 779 last_register_index_ = builder_->BorrowTemporaryRegister(); | 799 last_register_index_ = builder_->BorrowTemporaryRegister(); |
| 780 return Register(last_register_index_); | 800 return Register(last_register_index_); |
| 781 } | 801 } |
| 782 | 802 |
| 783 } // namespace interpreter | 803 } // namespace interpreter |
| 784 } // namespace internal | 804 } // namespace internal |
| 785 } // namespace v8 | 805 } // namespace v8 |
| OLD | NEW |