Index: runtime/platform/growable_array.h |
diff --git a/runtime/vm/growable_array.h b/runtime/platform/growable_array.h |
similarity index 63% |
copy from runtime/vm/growable_array.h |
copy to runtime/platform/growable_array.h |
index b2d03e08bf4fedf2d2cc5733a4743f0a89f45c48..4a449e001fa91ac02956ed838467fd597e014ae5 100644 |
--- a/runtime/vm/growable_array.h |
+++ b/runtime/platform/growable_array.h |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+// Copyright (c) 2017, 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. |
// Defines growable array classes, that differ where they are allocated: |
@@ -7,17 +7,15 @@ |
// - MallocGrowableArray: allocates using malloc/realloc; free is only called |
// at destruction. |
-#ifndef RUNTIME_VM_GROWABLE_ARRAY_H_ |
-#define RUNTIME_VM_GROWABLE_ARRAY_H_ |
+#ifndef RUNTIME_PLATFORM_GROWABLE_ARRAY_H_ |
+#define RUNTIME_PLATFORM_GROWABLE_ARRAY_H_ |
+#include "platform/allocation.h" |
#include "platform/utils.h" |
-#include "vm/allocation.h" |
-#include "vm/isolate.h" |
-#include "vm/zone.h" |
namespace dart { |
-template <typename T, typename B, typename Allocator = Zone> |
+template <typename T, typename B, typename Allocator> |
class BaseGrowableArray : public B { |
public: |
explicit BaseGrowableArray(Allocator* allocator) |
@@ -68,7 +66,7 @@ class BaseGrowableArray : public B { |
return operator[](length_ - 1); |
} |
- void AddArray(const BaseGrowableArray<T, B>& src) { |
+ void AddArray(const BaseGrowableArray<T, B, Allocator>& src) { |
for (intptr_t i = 0; i < src.length(); i++) { |
Add(src[i]); |
} |
@@ -168,86 +166,6 @@ void BaseGrowableArray<T, B, Allocator>::SetLength(intptr_t new_length) { |
} |
-template <typename T> |
-class GrowableArray : public BaseGrowableArray<T, ValueObject> { |
- public: |
- GrowableArray(Zone* zone, intptr_t initial_capacity) |
- : BaseGrowableArray<T, ValueObject>(initial_capacity, |
- ASSERT_NOTNULL(zone)) {} |
- explicit GrowableArray(intptr_t initial_capacity) |
- : BaseGrowableArray<T, ValueObject>( |
- initial_capacity, |
- ASSERT_NOTNULL(Thread::Current()->zone())) {} |
- GrowableArray() |
- : BaseGrowableArray<T, ValueObject>( |
- ASSERT_NOTNULL(Thread::Current()->zone())) {} |
-}; |
- |
- |
-template <typename T> |
-class ZoneGrowableArray : public BaseGrowableArray<T, ZoneAllocated> { |
- public: |
- ZoneGrowableArray(Zone* zone, intptr_t initial_capacity) |
- : BaseGrowableArray<T, ZoneAllocated>(initial_capacity, |
- ASSERT_NOTNULL(zone)) {} |
- explicit ZoneGrowableArray(intptr_t initial_capacity) |
- : BaseGrowableArray<T, ZoneAllocated>( |
- initial_capacity, |
- ASSERT_NOTNULL(Thread::Current()->zone())) {} |
- ZoneGrowableArray() |
- : BaseGrowableArray<T, ZoneAllocated>( |
- ASSERT_NOTNULL(Thread::Current()->zone())) {} |
-}; |
- |
- |
-// T must be a Handle type. |
-template <typename T, typename B> |
-class BaseGrowableHandlePtrArray : public B { |
- public: |
- BaseGrowableHandlePtrArray(Zone* zone, intptr_t initial_capacity) |
- : zone_(zone), array_(zone, initial_capacity) {} |
- |
- // Use unique zone handles to store objects. |
- void Add(const T& t) { array_.Add(&T::ZoneHandle(zone_, t.raw())); } |
- |
- T& operator[](intptr_t index) const { return *array_[index]; } |
- |
- const T& At(intptr_t index) const { return operator[](index); } |
- |
- void SetAt(intptr_t index, const T& t) { |
- array_[index] = &T::ZoneHandle(zone_, t.raw()); |
- } |
- |
- intptr_t length() const { return array_.length(); } |
- |
- const GrowableArray<T*>& growable_array() const { return array_; } |
- |
- private: |
- Zone* zone_; |
- GrowableArray<T*> array_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BaseGrowableHandlePtrArray); |
-}; |
- |
- |
-template <typename T> |
-class GrowableHandlePtrArray |
- : public BaseGrowableHandlePtrArray<T, ValueObject> { |
- public: |
- GrowableHandlePtrArray(Zone* zone, intptr_t initial_capacity) |
- : BaseGrowableHandlePtrArray<T, ValueObject>(zone, initial_capacity) {} |
-}; |
- |
- |
-template <typename T> |
-class ZoneGrowableHandlePtrArray |
- : public BaseGrowableHandlePtrArray<T, ZoneAllocated> { |
- public: |
- ZoneGrowableHandlePtrArray(Zone* zone, intptr_t initial_capacity) |
- : BaseGrowableHandlePtrArray<T, ZoneAllocated>(zone, initial_capacity) {} |
-}; |
- |
- |
class Malloc : public AllStatic { |
public: |
template <class T> |
@@ -280,4 +198,4 @@ class MallocGrowableArray : public BaseGrowableArray<T, EmptyBase, Malloc> { |
} // namespace dart |
-#endif // RUNTIME_VM_GROWABLE_ARRAY_H_ |
+#endif // RUNTIME_PLATFORM_GROWABLE_ARRAY_H_ |