Index: runtime/vm/become.h |
diff --git a/runtime/vm/become.h b/runtime/vm/become.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..977355364628c4bea80a24bbcbd8883a8af5ea7f |
--- /dev/null |
+++ b/runtime/vm/become.h |
@@ -0,0 +1,27 @@ |
+// Copyright (c) 2016, 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 VM_BECOME_H_ |
+#define VM_BECOME_H_ |
+ |
+#include "vm/allocation.h" |
+ |
+namespace dart { |
+ |
+class Array; |
+ |
+// TODO(johnmccutchan): Refactor this class so that it is not all static and |
+// provides utility methods for building the mapping of before and after. |
+class Become : public AllStatic { |
+ public: |
+ // Smalltalk's one-way bulk become (Array>>#elementsForwardIdentityTo:). |
+ // Redirects all pointers to elements of 'before' to the corresponding element |
+ // in 'after'. Every element in 'before' is guaranteed to be not reachable. |
+ // Useful for atomically applying behavior and schema changes. |
+ static void ElementsForwardIdentity(const Array& before, const Array& after); |
+}; |
+ |
+} // namespace dart |
+ |
+#endif // VM_BECOME_H_ |