mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 00:13:50 +00:00
![Martin Kustermann](/assets/img/avatar_default.png)
We already allow sending closures (if immutable via sharing otherwise via copying). This CL makes use of this to allow the argument to `Isolate.spawn()` to be any closure. Similar to normal message sending, the spawn will fail if the closure cannot be sent (or causes an error on the new isolate, e.g. rehashing error). Issue https://github.com/dart-lang/sdk/issues/46623 TEST=vm/dart{_2,}/isolates/closure_entrypoint_test Change-Id: Iab342267d87bd87bc8c0c82d16aec58a69a3df44 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212295 Reviewed-by: Alexander Aprelev <aam@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com>
31 lines
891 B
C++
31 lines
891 B
C++
// 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_
|