Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index c0976988ea3c077800842816c03981ee5cf7b248..ccb3f64e10dcb0ae9269b6b0d60f7bdc171dd078 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -3035,7 +3035,7 @@ Handle<Object> Parser::GetBoilerplateValue(Expression* expression) { |
// Defined in ast.cc |
bool IsEqualString(void* first, void* second); |
-bool IsEqualSmi(void* first, void* second); |
+bool IsEqualNumber(void* first, void* second); |
// Validation per 11.1.5 Object Initialiser |
@@ -3043,7 +3043,7 @@ class ObjectLiteralPropertyChecker { |
public: |
ObjectLiteralPropertyChecker(Parser* parser, bool strict) : |
props(&IsEqualString), |
- elems(&IsEqualSmi), |
+ elems(&IsEqualNumber), |
parser_(parser), |
strict_(strict) { |
} |
@@ -3092,13 +3092,12 @@ void ObjectLiteralPropertyChecker::CheckProperty( |
uint32_t hash; |
HashMap* map; |
void* key; |
- Smi* smi_key_location; |
if (handle->IsSymbol()) { |
Handle<String> name(String::cast(*handle)); |
if (name->AsArrayIndex(&hash)) { |
- smi_key_location = Smi::FromInt(hash); |
- key = &smi_key_location; |
+ Handle<Object> key_handle = Factory::NewNumberFromUint(hash); |
+ key = key_handle.location(); |
map = &elems; |
} else { |
key = handle.location(); |