| 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 362 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 373 | 373 | 
| 374 BytecodeArrayBuilder& BytecodeArrayBuilder::MoveRegister(Register from, | 374 BytecodeArrayBuilder& BytecodeArrayBuilder::MoveRegister(Register from, | 
| 375                                                          Register to) { | 375                                                          Register to) { | 
| 376   DCHECK(from != to); | 376   DCHECK(from != to); | 
| 377   Output(Bytecode::kMov, from.ToOperand(), to.ToOperand()); | 377   Output(Bytecode::kMov, from.ToOperand(), to.ToOperand()); | 
| 378   return *this; | 378   return *this; | 
| 379 } | 379 } | 
| 380 | 380 | 
| 381 | 381 | 
| 382 BytecodeArrayBuilder& BytecodeArrayBuilder::LoadGlobal( | 382 BytecodeArrayBuilder& BytecodeArrayBuilder::LoadGlobal( | 
| 383     size_t name_index, int feedback_slot, LanguageMode language_mode, | 383     const Handle<String> name, int feedback_slot, LanguageMode language_mode, | 
| 384     TypeofMode typeof_mode) { | 384     TypeofMode typeof_mode) { | 
| 385   // TODO(rmcilroy): Potentially store language and typeof information in an | 385   // TODO(rmcilroy): Potentially store language and typeof information in an | 
| 386   // operand rather than having extra bytecodes. | 386   // operand rather than having extra bytecodes. | 
| 387   Bytecode bytecode = BytecodeForLoadGlobal(language_mode, typeof_mode); | 387   Bytecode bytecode = BytecodeForLoadGlobal(language_mode, typeof_mode); | 
|  | 388   size_t name_index = GetConstantPoolEntry(name); | 
| 388   if (FitsInIdx8Operand(name_index) && FitsInIdx8Operand(feedback_slot)) { | 389   if (FitsInIdx8Operand(name_index) && FitsInIdx8Operand(feedback_slot)) { | 
| 389     Output(bytecode, static_cast<uint8_t>(name_index), | 390     Output(bytecode, static_cast<uint8_t>(name_index), | 
| 390            static_cast<uint8_t>(feedback_slot)); | 391            static_cast<uint8_t>(feedback_slot)); | 
| 391   } else if (FitsInIdx16Operand(name_index) && | 392   } else if (FitsInIdx16Operand(name_index) && | 
| 392              FitsInIdx16Operand(feedback_slot)) { | 393              FitsInIdx16Operand(feedback_slot)) { | 
| 393     Output(BytecodeForWideOperands(bytecode), static_cast<uint16_t>(name_index), | 394     Output(BytecodeForWideOperands(bytecode), static_cast<uint16_t>(name_index), | 
| 394            static_cast<uint16_t>(feedback_slot)); | 395            static_cast<uint16_t>(feedback_slot)); | 
| 395   } else { | 396   } else { | 
| 396     UNIMPLEMENTED(); | 397     UNIMPLEMENTED(); | 
| 397   } | 398   } | 
| 398   return *this; | 399   return *this; | 
| 399 } | 400 } | 
| 400 | 401 | 
| 401 | 402 | 
| 402 BytecodeArrayBuilder& BytecodeArrayBuilder::StoreGlobal( | 403 BytecodeArrayBuilder& BytecodeArrayBuilder::StoreGlobal( | 
| 403     size_t name_index, int feedback_slot, LanguageMode language_mode) { | 404     const Handle<String> name, int feedback_slot, LanguageMode language_mode) { | 
| 404   Bytecode bytecode = BytecodeForStoreGlobal(language_mode); | 405   Bytecode bytecode = BytecodeForStoreGlobal(language_mode); | 
|  | 406   size_t name_index = GetConstantPoolEntry(name); | 
| 405   if (FitsInIdx8Operand(name_index) && FitsInIdx8Operand(feedback_slot)) { | 407   if (FitsInIdx8Operand(name_index) && FitsInIdx8Operand(feedback_slot)) { | 
| 406     Output(bytecode, static_cast<uint8_t>(name_index), | 408     Output(bytecode, static_cast<uint8_t>(name_index), | 
| 407            static_cast<uint8_t>(feedback_slot)); | 409            static_cast<uint8_t>(feedback_slot)); | 
| 408   } else if (FitsInIdx16Operand(name_index) && | 410   } else if (FitsInIdx16Operand(name_index) && | 
| 409              FitsInIdx16Operand(feedback_slot)) { | 411              FitsInIdx16Operand(feedback_slot)) { | 
| 410     Output(BytecodeForWideOperands(bytecode), static_cast<uint16_t>(name_index), | 412     Output(BytecodeForWideOperands(bytecode), static_cast<uint16_t>(name_index), | 
| 411            static_cast<uint16_t>(feedback_slot)); | 413            static_cast<uint16_t>(feedback_slot)); | 
| 412   } else { | 414   } else { | 
| 413     UNIMPLEMENTED(); | 415     UNIMPLEMENTED(); | 
| 414   } | 416   } | 
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 464   if (FitsInIdx8Operand(name_index)) { | 466   if (FitsInIdx8Operand(name_index)) { | 
| 465     Output(bytecode, static_cast<uint8_t>(name_index)); | 467     Output(bytecode, static_cast<uint8_t>(name_index)); | 
| 466   } else { | 468   } else { | 
| 467     UNIMPLEMENTED(); | 469     UNIMPLEMENTED(); | 
| 468   } | 470   } | 
| 469   return *this; | 471   return *this; | 
| 470 } | 472 } | 
| 471 | 473 | 
| 472 | 474 | 
| 473 BytecodeArrayBuilder& BytecodeArrayBuilder::LoadNamedProperty( | 475 BytecodeArrayBuilder& BytecodeArrayBuilder::LoadNamedProperty( | 
| 474     Register object, size_t name_index, int feedback_slot, | 476     Register object, const Handle<String> name, int feedback_slot, | 
| 475     LanguageMode language_mode) { | 477     LanguageMode language_mode) { | 
| 476   Bytecode bytecode = BytecodeForLoadIC(language_mode); | 478   Bytecode bytecode = BytecodeForLoadIC(language_mode); | 
|  | 479   size_t name_index = GetConstantPoolEntry(name); | 
| 477   if (FitsInIdx8Operand(name_index) && FitsInIdx8Operand(feedback_slot)) { | 480   if (FitsInIdx8Operand(name_index) && FitsInIdx8Operand(feedback_slot)) { | 
| 478     Output(bytecode, object.ToOperand(), static_cast<uint8_t>(name_index), | 481     Output(bytecode, object.ToOperand(), static_cast<uint8_t>(name_index), | 
| 479            static_cast<uint8_t>(feedback_slot)); | 482            static_cast<uint8_t>(feedback_slot)); | 
| 480   } else if (FitsInIdx16Operand(name_index) && | 483   } else if (FitsInIdx16Operand(name_index) && | 
| 481              FitsInIdx16Operand(feedback_slot)) { | 484              FitsInIdx16Operand(feedback_slot)) { | 
| 482     Output(BytecodeForWideOperands(bytecode), object.ToOperand(), | 485     Output(BytecodeForWideOperands(bytecode), object.ToOperand(), | 
| 483            static_cast<uint16_t>(name_index), | 486            static_cast<uint16_t>(name_index), | 
| 484            static_cast<uint16_t>(feedback_slot)); | 487            static_cast<uint16_t>(feedback_slot)); | 
| 485   } else { | 488   } else { | 
| 486     UNIMPLEMENTED(); | 489     UNIMPLEMENTED(); | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 498     Output(BytecodeForWideOperands(bytecode), object.ToOperand(), | 501     Output(BytecodeForWideOperands(bytecode), object.ToOperand(), | 
| 499            static_cast<uint16_t>(feedback_slot)); | 502            static_cast<uint16_t>(feedback_slot)); | 
| 500   } else { | 503   } else { | 
| 501     UNIMPLEMENTED(); | 504     UNIMPLEMENTED(); | 
| 502   } | 505   } | 
| 503   return *this; | 506   return *this; | 
| 504 } | 507 } | 
| 505 | 508 | 
| 506 | 509 | 
| 507 BytecodeArrayBuilder& BytecodeArrayBuilder::StoreNamedProperty( | 510 BytecodeArrayBuilder& BytecodeArrayBuilder::StoreNamedProperty( | 
| 508     Register object, size_t name_index, int feedback_slot, | 511     Register object, const Handle<String> name, int feedback_slot, | 
| 509     LanguageMode language_mode) { | 512     LanguageMode language_mode) { | 
| 510   Bytecode bytecode = BytecodeForStoreIC(language_mode); | 513   Bytecode bytecode = BytecodeForStoreIC(language_mode); | 
|  | 514   size_t name_index = GetConstantPoolEntry(name); | 
| 511   if (FitsInIdx8Operand(name_index) && FitsInIdx8Operand(feedback_slot)) { | 515   if (FitsInIdx8Operand(name_index) && FitsInIdx8Operand(feedback_slot)) { | 
| 512     Output(bytecode, object.ToOperand(), static_cast<uint8_t>(name_index), | 516     Output(bytecode, object.ToOperand(), static_cast<uint8_t>(name_index), | 
| 513            static_cast<uint8_t>(feedback_slot)); | 517            static_cast<uint8_t>(feedback_slot)); | 
| 514   } else if (FitsInIdx16Operand(name_index) && | 518   } else if (FitsInIdx16Operand(name_index) && | 
| 515              FitsInIdx16Operand(feedback_slot)) { | 519              FitsInIdx16Operand(feedback_slot)) { | 
| 516     Output(BytecodeForWideOperands(bytecode), object.ToOperand(), | 520     Output(BytecodeForWideOperands(bytecode), object.ToOperand(), | 
| 517            static_cast<uint16_t>(name_index), | 521            static_cast<uint16_t>(name_index), | 
| 518            static_cast<uint16_t>(feedback_slot)); | 522            static_cast<uint16_t>(feedback_slot)); | 
| 519   } else { | 523   } else { | 
| 520     UNIMPLEMENTED(); | 524     UNIMPLEMENTED(); | 
| (...skipping 1012 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1533   DCHECK_GT(next_consecutive_count_, 0); | 1537   DCHECK_GT(next_consecutive_count_, 0); | 
| 1534   builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); | 1538   builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); | 
| 1535   allocated_.push_back(next_consecutive_register_); | 1539   allocated_.push_back(next_consecutive_register_); | 
| 1536   next_consecutive_count_--; | 1540   next_consecutive_count_--; | 
| 1537   return Register(next_consecutive_register_++); | 1541   return Register(next_consecutive_register_++); | 
| 1538 } | 1542 } | 
| 1539 | 1543 | 
| 1540 }  // namespace interpreter | 1544 }  // namespace interpreter | 
| 1541 }  // namespace internal | 1545 }  // namespace internal | 
| 1542 }  // namespace v8 | 1546 }  // namespace v8 | 
| OLD | NEW | 
|---|