| 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 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 Output(BytecodeForWideOperands(bytecode), object.ToOperand(), | 437 Output(BytecodeForWideOperands(bytecode), object.ToOperand(), |
| 438 key.ToOperand(), static_cast<uint16_t>(feedback_slot)); | 438 key.ToOperand(), static_cast<uint16_t>(feedback_slot)); |
| 439 } else { | 439 } else { |
| 440 UNIMPLEMENTED(); | 440 UNIMPLEMENTED(); |
| 441 } | 441 } |
| 442 return *this; | 442 return *this; |
| 443 } | 443 } |
| 444 | 444 |
| 445 | 445 |
| 446 BytecodeArrayBuilder& BytecodeArrayBuilder::CreateClosure( | 446 BytecodeArrayBuilder& BytecodeArrayBuilder::CreateClosure( |
| 447 PretenureFlag tenured) { | 447 Handle<SharedFunctionInfo> shared_info, PretenureFlag tenured) { |
| 448 size_t entry = GetConstantPoolEntry(shared_info); |
| 448 DCHECK(FitsInImm8Operand(tenured)); | 449 DCHECK(FitsInImm8Operand(tenured)); |
| 449 Output(Bytecode::kCreateClosure, static_cast<uint8_t>(tenured)); | 450 if (FitsInIdx8Operand(entry)) { |
| 451 Output(Bytecode::kCreateClosure, static_cast<uint8_t>(entry), |
| 452 static_cast<uint8_t>(tenured)); |
| 453 } else if (FitsInIdx16Operand(entry)) { |
| 454 Output(Bytecode::kCreateClosureWide, static_cast<uint16_t>(entry), |
| 455 static_cast<uint8_t>(tenured)); |
| 456 } else { |
| 457 UNIMPLEMENTED(); |
| 458 } |
| 450 return *this; | 459 return *this; |
| 451 } | 460 } |
| 452 | 461 |
| 453 | 462 |
| 454 BytecodeArrayBuilder& BytecodeArrayBuilder::CreateArguments( | 463 BytecodeArrayBuilder& BytecodeArrayBuilder::CreateArguments( |
| 455 CreateArgumentsType type) { | 464 CreateArgumentsType type) { |
| 456 // TODO(rmcilroy): Consider passing the type as a bytecode operand rather | 465 // TODO(rmcilroy): Consider passing the type as a bytecode operand rather |
| 457 // than having two different bytecodes once we have better support for | 466 // than having two different bytecodes once we have better support for |
| 458 // branches in the InterpreterAssembler. | 467 // branches in the InterpreterAssembler. |
| 459 Bytecode bytecode = BytecodeForCreateArguments(type); | 468 Bytecode bytecode = BytecodeForCreateArguments(type); |
| (...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1330 DCHECK_GT(next_consecutive_count_, 0); | 1339 DCHECK_GT(next_consecutive_count_, 0); |
| 1331 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); | 1340 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); |
| 1332 allocated_.push_back(next_consecutive_register_); | 1341 allocated_.push_back(next_consecutive_register_); |
| 1333 next_consecutive_count_--; | 1342 next_consecutive_count_--; |
| 1334 return Register(next_consecutive_register_++); | 1343 return Register(next_consecutive_register_++); |
| 1335 } | 1344 } |
| 1336 | 1345 |
| 1337 } // namespace interpreter | 1346 } // namespace interpreter |
| 1338 } // namespace internal | 1347 } // namespace internal |
| 1339 } // namespace v8 | 1348 } // namespace v8 |
| OLD | NEW |