Index: src/json-parser.h |
diff --git a/src/json-parser.h b/src/json-parser.h |
index e4f8f8ceacf6254605badb42638760237cdaa4ac..78ac378c1e09dc4ffc9d8bc4c462e94857257377 100644 |
--- a/src/json-parser.h |
+++ b/src/json-parser.h |
@@ -387,11 +387,9 @@ Handle<Object> JsonParser<seq_ascii>::ParseJsonObject() { |
Representation expected_representation = details.representation(); |
if (value->FitsRepresentation(expected_representation)) { |
- // If the target representation is double and the value is already |
- // double, use the existing box. |
- if (value->IsSmi() && expected_representation.IsDouble()) { |
- value = factory()->NewHeapNumber( |
- Handle<Smi>::cast(value)->value()); |
+ if (expected_representation.IsDouble()) { |
+ value = Object::NewStorageFor(isolate(), value, |
+ expected_representation); |
} else if (expected_representation.IsHeapObject() && |
!target->instance_descriptors()->GetFieldType( |
descriptor)->NowContains(value)) { |