| // Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| #ifndef RUNTIME_VM_OBJECT_GRAPH_COPY_H_ |
| #define RUNTIME_VM_OBJECT_GRAPH_COPY_H_ |
| |
| namespace dart { |
| |
| class Object; |
| class ObjectPtr; |
| |
| // Makes a transitive copy of the object graph referenced by [object]. Will not |
| // copy objects that can be safely shared - due to being immutable. |
| // |
| // The result will be an array of length 3 of the format |
| // |
| // [ |
| // <message>, |
| // <collection-lib-objects-to-rehash>, |
| // <core-lib-objects-to-rehash>, |
| // ] |
| // |
| // If the array of objects to rehash is not `null` the receiver should re-hash |
| // those objects. |
| ObjectPtr CopyMutableObjectGraph(const Object& root); |
| |
| } // namespace dart |
| |
| #endif // RUNTIME_VM_OBJECT_GRAPH_COPY_H_ |