Index: src/interpreter/bytecode-generator.cc |
diff --git a/src/interpreter/bytecode-generator.cc b/src/interpreter/bytecode-generator.cc |
index 35739f2889c4caa9eaa6020298b4815c29a12b1a..751acdf0c287c5241c5c3a526fabac7baa3695ba 100644 |
--- a/src/interpreter/bytecode-generator.cc |
+++ b/src/interpreter/bytecode-generator.cc |
@@ -844,9 +844,8 @@ void BytecodeGenerator::VisitForInAssignment(Expression* expr, |
Register value = temporary_register_scope.NewRegister(); |
builder()->StoreAccumulatorInRegister(value); |
Register object = VisitForRegisterValue(property->obj()); |
- size_t name_index = builder()->GetConstantPoolEntry( |
- property->key()->AsLiteral()->AsPropertyName()); |
- builder()->StoreNamedProperty(object, name_index, feedback_index(slot), |
+ Handle<String> name = property->key()->AsLiteral()->AsPropertyName(); |
+ builder()->StoreNamedProperty(object, name, feedback_index(slot), |
language_mode()); |
break; |
} |
@@ -1064,12 +1063,10 @@ void BytecodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
// contains computed properties with an uninitialized value. |
if (literal_key->value()->IsInternalizedString()) { |
if (property->emit_store()) { |
- size_t name_index = |
- builder()->GetConstantPoolEntry(literal_key->AsPropertyName()); |
VisitForAccumulatorValue(property->value()); |
- builder()->StoreNamedProperty(literal, name_index, |
- feedback_index(property->GetSlot(0)), |
- language_mode()); |
+ builder()->StoreNamedProperty( |
+ literal, literal_key->AsPropertyName(), |
+ feedback_index(property->GetSlot(0)), language_mode()); |
} else { |
VisitForEffect(property->value()); |
} |
@@ -1291,9 +1288,8 @@ void BytecodeGenerator::VisitVariableLoad(Variable* variable, |
} |
case VariableLocation::GLOBAL: |
case VariableLocation::UNALLOCATED: { |
- size_t name_index = builder()->GetConstantPoolEntry(variable->name()); |
- builder()->LoadGlobal(name_index, feedback_index(slot), language_mode(), |
- typeof_mode); |
+ builder()->LoadGlobal(variable->name(), feedback_index(slot), |
+ language_mode(), typeof_mode); |
execution_result()->SetResultInAccumulator(); |
break; |
} |
@@ -1372,8 +1368,8 @@ void BytecodeGenerator::VisitVariableAssignment(Variable* variable, |
} |
case VariableLocation::GLOBAL: |
case VariableLocation::UNALLOCATED: { |
- size_t name_index = builder()->GetConstantPoolEntry(variable->name()); |
- builder()->StoreGlobal(name_index, feedback_index(slot), language_mode()); |
+ builder()->StoreGlobal(variable->name(), feedback_index(slot), |
+ language_mode()); |
break; |
} |
case VariableLocation::CONTEXT: { |
@@ -1416,7 +1412,7 @@ void BytecodeGenerator::VisitVariableAssignment(Variable* variable, |
void BytecodeGenerator::VisitAssignment(Assignment* expr) { |
DCHECK(expr->target()->IsValidReferenceExpression()); |
Register object, key; |
- size_t name_index = kMaxUInt32; |
+ Handle<String> name; |
// Left-hand side can only be a property, a global or a variable slot. |
Property* property = expr->target()->AsProperty(); |
@@ -1429,8 +1425,7 @@ void BytecodeGenerator::VisitAssignment(Assignment* expr) { |
break; |
case NAMED_PROPERTY: { |
object = VisitForRegisterValue(property->obj()); |
- name_index = builder()->GetConstantPoolEntry( |
- property->key()->AsLiteral()->AsPropertyName()); |
+ name = property->key()->AsLiteral()->AsPropertyName(); |
break; |
} |
case KEYED_PROPERTY: { |
@@ -1466,7 +1461,7 @@ void BytecodeGenerator::VisitAssignment(Assignment* expr) { |
FeedbackVectorSlot slot = property->PropertyFeedbackSlot(); |
old_value = execution_result()->NewRegister(); |
builder() |
- ->LoadNamedProperty(object, name_index, feedback_index(slot), |
+ ->LoadNamedProperty(object, name, feedback_index(slot), |
language_mode()) |
.StoreAccumulatorInRegister(old_value); |
break; |
@@ -1504,7 +1499,7 @@ void BytecodeGenerator::VisitAssignment(Assignment* expr) { |
break; |
} |
case NAMED_PROPERTY: |
- builder()->StoreNamedProperty(object, name_index, feedback_index(slot), |
+ builder()->StoreNamedProperty(object, name, feedback_index(slot), |
language_mode()); |
break; |
case KEYED_PROPERTY: |
@@ -1535,10 +1530,9 @@ void BytecodeGenerator::VisitPropertyLoad(Register obj, Property* expr) { |
case VARIABLE: |
UNREACHABLE(); |
case NAMED_PROPERTY: { |
- size_t name_index = builder()->GetConstantPoolEntry( |
- expr->key()->AsLiteral()->AsPropertyName()); |
- builder()->LoadNamedProperty(obj, name_index, feedback_index(slot), |
- language_mode()); |
+ builder()->LoadNamedProperty(obj, |
+ expr->key()->AsLiteral()->AsPropertyName(), |
+ feedback_index(slot), language_mode()); |
break; |
} |
case KEYED_PROPERTY: { |
@@ -1824,7 +1818,7 @@ void BytecodeGenerator::VisitCountOperation(CountOperation* expr) { |
// Evaluate LHS expression and get old value. |
Register obj, key, old_value; |
- size_t name_index = kMaxUInt32; |
+ Handle<String> name; |
switch (assign_type) { |
case VARIABLE: { |
VariableProxy* proxy = expr->expression()->AsVariableProxy(); |
@@ -1835,9 +1829,8 @@ void BytecodeGenerator::VisitCountOperation(CountOperation* expr) { |
case NAMED_PROPERTY: { |
FeedbackVectorSlot slot = property->PropertyFeedbackSlot(); |
obj = VisitForRegisterValue(property->obj()); |
- name_index = builder()->GetConstantPoolEntry( |
- property->key()->AsLiteral()->AsPropertyName()); |
- builder()->LoadNamedProperty(obj, name_index, feedback_index(slot), |
+ name = property->key()->AsLiteral()->AsPropertyName(); |
+ builder()->LoadNamedProperty(obj, name, feedback_index(slot), |
language_mode()); |
break; |
} |
@@ -1880,8 +1873,8 @@ void BytecodeGenerator::VisitCountOperation(CountOperation* expr) { |
break; |
} |
case NAMED_PROPERTY: { |
- builder()->StoreNamedProperty( |
- obj, name_index, feedback_index(feedback_slot), language_mode()); |
+ builder()->StoreNamedProperty(obj, name, feedback_index(feedback_slot), |
+ language_mode()); |
break; |
} |
case KEYED_PROPERTY: { |