Index: src/json-stringifier.h |
diff --git a/src/json-stringifier.h b/src/json-stringifier.h |
index f89a19fd4a9b06abf2b1dd4e17a86ef09d38cdd0..1ec6873b1104027cb0396b28fa4129f07068cb05 100644 |
--- a/src/json-stringifier.h |
+++ b/src/json-stringifier.h |
@@ -652,8 +652,15 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSObject( |
if (details.IsDontEnum()) continue; |
Handle<Object> property; |
if (details.type() == FIELD && *map == object->map()) { |
- property = Handle<Object>(object->RawFastPropertyAt( |
- FieldIndex::ForDescriptor(*map, i)), isolate_); |
+ FieldIndex field_index = FieldIndex::ForDescriptor(*map, i); |
+ Isolate* isolate = object->GetIsolate(); |
+ if (object->IsUnboxedDoubleField(field_index)) { |
+ double value = object->RawFastDoublePropertyAt(field_index); |
+ property = isolate->factory()->NewHeapNumber(value); |
+ |
+ } else { |
+ property = handle(object->RawFastPropertyAt(field_index), isolate); |
+ } |
} else { |
ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
isolate_, property, |