Chromium Code Reviews| Index: src/interpreter/bytecode-array-builder.cc |
| diff --git a/src/interpreter/bytecode-array-builder.cc b/src/interpreter/bytecode-array-builder.cc |
| index 9c937d74370d3cde35fcb47caa36239d048b6137..01c5a91a1a4f4953d2d33c8f0821aab01b960b92 100644 |
| --- a/src/interpreter/bytecode-array-builder.cc |
| +++ b/src/interpreter/bytecode-array-builder.cc |
| @@ -127,8 +127,12 @@ void BytecodeArrayBuilder::Output(Bytecode bytecode) { |
| } |
| -BytecodeArrayBuilder& BytecodeArrayBuilder::BinaryOperation(Token::Value op, |
| - Register reg) { |
| +BytecodeArrayBuilder& BytecodeArrayBuilder::BinaryOperation( |
| + Token::Value op, Register reg, LanguageMode language_mode) { |
| + if (is_strong(strength(language_mode))) { |
| + UNIMPLEMENTED(); |
|
oth
2015/10/02 15:17:44
Nitletino - other updates here take a more conserv
rmcilroy
2015/10/06 13:56:34
I'd prefer not to do this since it is the language
|
| + } |
| + |
| Output(BytecodeForBinaryOperation(op), reg.ToOperand()); |
| return *this; |
| } |
| @@ -136,7 +140,7 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::BinaryOperation(Token::Value op, |
| BytecodeArrayBuilder& BytecodeArrayBuilder::CompareOperation( |
| Token::Value op, Register reg, LanguageMode language_mode) { |
| - if (!is_sloppy(language_mode)) { |
| + if (is_strong(strength(language_mode))) { |
|
oth
2015/10/02 15:17:44
Nitletino -same here.
rmcilroy
2015/10/06 13:56:34
Acknowledged.
|
| UNIMPLEMENTED(); |
| } |
| @@ -226,13 +230,21 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadGlobal(int slot_index) { |
| BytecodeArrayBuilder& BytecodeArrayBuilder::LoadNamedProperty( |
| Register object, int feedback_slot, LanguageMode language_mode) { |
| - if (!is_sloppy(language_mode)) { |
| - UNIMPLEMENTED(); |
| + Bytecode bytecode; |
| + switch (language_mode) { |
| + case SLOPPY: |
| + bytecode = Bytecode::kLoadIC; |
| + break; |
| + case STRICT: |
| + bytecode = Bytecode::kLoadICStrict; |
| + break; |
| + case STRONG: |
| + default: |
| + UNIMPLEMENTED(); |
|
Michael Starzinger
2015/10/05 12:04:45
nit: The strong case is UNIMPLEMENTED but the defa
rmcilroy
2015/10/06 13:56:34
Done.
|
| } |
| if (FitsInIdxOperand(feedback_slot)) { |
| - Output(Bytecode::kLoadIC, object.ToOperand(), |
| - static_cast<uint8_t>(feedback_slot)); |
| + Output(bytecode, object.ToOperand(), static_cast<uint8_t>(feedback_slot)); |
| } else { |
| UNIMPLEMENTED(); |
| } |
| @@ -242,13 +254,21 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadNamedProperty( |
| BytecodeArrayBuilder& BytecodeArrayBuilder::LoadKeyedProperty( |
| Register object, int feedback_slot, LanguageMode language_mode) { |
| - if (!is_sloppy(language_mode)) { |
| - UNIMPLEMENTED(); |
| + Bytecode bytecode; |
| + switch (language_mode) { |
| + case SLOPPY: |
| + bytecode = Bytecode::kKeyedLoadIC; |
| + break; |
| + case STRICT: |
| + bytecode = Bytecode::kKeyedLoadICStrict; |
| + break; |
| + case STRONG: |
| + default: |
| + UNIMPLEMENTED(); |
| } |
| if (FitsInIdxOperand(feedback_slot)) { |
| - Output(Bytecode::kKeyedLoadIC, object.ToOperand(), |
| - static_cast<uint8_t>(feedback_slot)); |
| + Output(bytecode, object.ToOperand(), static_cast<uint8_t>(feedback_slot)); |
| } else { |
| UNIMPLEMENTED(); |
| } |
| @@ -259,12 +279,21 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadKeyedProperty( |
| BytecodeArrayBuilder& BytecodeArrayBuilder::StoreNamedProperty( |
| Register object, Register name, int feedback_slot, |
| LanguageMode language_mode) { |
| - if (!is_sloppy(language_mode)) { |
| - UNIMPLEMENTED(); |
| + Bytecode bytecode; |
| + switch (language_mode) { |
| + case SLOPPY: |
| + bytecode = Bytecode::kStoreIC; |
| + break; |
| + case STRICT: |
| + bytecode = Bytecode::kStoreICStrict; |
| + break; |
| + case STRONG: |
| + default: |
| + UNIMPLEMENTED(); |
| } |
| if (FitsInIdxOperand(feedback_slot)) { |
| - Output(Bytecode::kStoreIC, object.ToOperand(), name.ToOperand(), |
| + Output(bytecode, object.ToOperand(), name.ToOperand(), |
| static_cast<uint8_t>(feedback_slot)); |
| } else { |
| UNIMPLEMENTED(); |
| @@ -276,12 +305,21 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreNamedProperty( |
| BytecodeArrayBuilder& BytecodeArrayBuilder::StoreKeyedProperty( |
| Register object, Register key, int feedback_slot, |
| LanguageMode language_mode) { |
| - if (!is_sloppy(language_mode)) { |
| - UNIMPLEMENTED(); |
| + Bytecode bytecode; |
| + switch (language_mode) { |
| + case SLOPPY: |
| + bytecode = Bytecode::kKeyedStoreIC; |
| + break; |
| + case STRICT: |
| + bytecode = Bytecode::kKeyedStoreICStrict; |
| + break; |
| + case STRONG: |
| + default: |
| + UNIMPLEMENTED(); |
| } |
| if (FitsInIdxOperand(feedback_slot)) { |
| - Output(Bytecode::kKeyedStoreIC, object.ToOperand(), key.ToOperand(), |
| + Output(bytecode, object.ToOperand(), key.ToOperand(), |
| static_cast<uint8_t>(feedback_slot)); |
| } else { |
| UNIMPLEMENTED(); |