Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index ab6fa54859416d80a4601f1d25358bfe2cbd5221..b2609ba8304b50d57226f7ed5790fae5e5c2bf9d 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -8236,6 +8236,25 @@ MaybeHandle<JSObject> JSObject::DeepCopy( |
return copy; |
} |
+class DummyContextObject : public AllocationSiteContext { |
+ public: |
+ explicit DummyContextObject(Isolate* isolate) |
+ : AllocationSiteContext(isolate) {} |
+ |
+ bool ShouldCreateMemento(Handle<JSObject> object) { return false; } |
+ Handle<AllocationSite> EnterNewScope() { return Handle<AllocationSite>(); } |
+ void ExitScope(Handle<AllocationSite> site, Handle<JSObject> object) {} |
+}; |
+ |
+MaybeHandle<JSObject> JSObject::DeepCopy(Handle<JSObject> object, |
+ DeepCopyHints hints) { |
+ DummyContextObject dummy_context_object(object->GetIsolate()); |
+ JSObjectWalkVisitor<DummyContextObject> v(&dummy_context_object, true, hints); |
+ MaybeHandle<JSObject> copy = v.StructureWalk(object); |
+ Handle<JSObject> for_assert; |
+ DCHECK(!copy.ToHandle(&for_assert) || !for_assert.is_identical_to(object)); |
+ return copy; |
+} |
// static |
MaybeHandle<Object> JSReceiver::ToPrimitive(Handle<JSReceiver> receiver, |