Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(473)

Unified Diff: runtime/vm/object.h

Issue 1309113004: Change trail from GrowableObjectArray to ZoneGrowableArray. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Formatting Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/object.h
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 236814749f8e1fba1a14e091000096b092f4244f..b0f7e91732aba7db06756bc25de038eb33ba3d1a 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -1527,6 +1527,10 @@ class UnresolvedClass : public Object {
};
+// TODO(srdjan): Ideally this should be 'const AbstractType*'.
regis 2015/08/27 02:30:26 Why not just do it?
srdjan 2015/08/27 14:54:00 The size of this change exploded because of change
srdjan 2015/08/27 16:09:49 Done.
+typedef ZoneGrowableArray<const Instance*> Trail;
+typedef ZoneGrowableArray<const Instance*>* TrailPtr;
+
// A TypeArguments is an array of AbstractType.
class TypeArguments : public Object {
public:
@@ -1592,22 +1596,21 @@ class TypeArguments : public Object {
return IsSubvectorEquivalent(other, 0, IsNull() ? 0 : Length());
}
- bool IsEquivalent(const TypeArguments& other,
- GrowableObjectArray* trail = NULL) const {
+ bool IsEquivalent(const TypeArguments& other, TrailPtr trail = NULL) const {
return IsSubvectorEquivalent(other, 0, IsNull() ? 0 : Length(), trail);
}
bool IsSubvectorEquivalent(const TypeArguments& other,
intptr_t from_index,
intptr_t len,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
// Check if the vector is instantiated (it must not be null).
- bool IsInstantiated(GrowableObjectArray* trail = NULL) const {
+ bool IsInstantiated(TrailPtr trail = NULL) const {
return IsSubvectorInstantiated(0, Length(), trail);
}
bool IsSubvectorInstantiated(intptr_t from_index,
intptr_t len,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
bool IsUninstantiatedIdentity() const;
bool CanShareInstantiatorTypeArguments(const Class& instantiator_class) const;
@@ -1628,11 +1631,10 @@ class TypeArguments : public Object {
// arguments, changing the class owner of type parameters.
// Instantiated type arguments are shared.
RawTypeArguments* CloneUninstantiated(
- const Class& new_owner,
- GrowableObjectArray* trail = NULL) const;
+ const Class& new_owner, TrailPtr trail = NULL) const;
// Canonicalize only if instantiated, otherwise returns 'this'.
- RawTypeArguments* Canonicalize(GrowableObjectArray* trail = NULL) const;
+ RawTypeArguments* Canonicalize(TrailPtr trail = NULL) const;
// Return 'this' if this type argument vector is instantiated, i.e. if it does
// not refer to type parameters. Otherwise, return a new type argument vector
@@ -1642,7 +1644,7 @@ class TypeArguments : public Object {
RawTypeArguments* InstantiateFrom(
const TypeArguments& instantiator_type_arguments,
Error* bound_error,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
// Runtime instantiation with canonicalization. Not to be used during type
// finalization at compile time.
@@ -4971,15 +4973,14 @@ class AbstractType : public Instance {
virtual RawUnresolvedClass* unresolved_class() const;
virtual RawTypeArguments* arguments() const;
virtual intptr_t token_pos() const;
- virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const;
+ virtual bool IsInstantiated(TrailPtr trail = NULL) const;
virtual bool CanonicalizeEquals(const Instance& other) const {
return Equals(other);
}
virtual bool Equals(const Instance& other) const {
return IsEquivalent(other);
}
- virtual bool IsEquivalent(const Instance& other,
- GrowableObjectArray* trail = NULL) const;
+ virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const;
virtual bool IsRecursive() const;
// Instantiate this type using the given type argument vector.
@@ -4988,7 +4989,7 @@ class AbstractType : public Instance {
virtual RawAbstractType* InstantiateFrom(
const TypeArguments& instantiator_type_arguments,
Error* bound_error,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
// Return a clone of this unfinalized type or the type itself if it is
// already finalized. Apply recursively to type arguments, i.e. finalized
@@ -5001,25 +5002,22 @@ class AbstractType : public Instance {
// Apply recursively to type arguments, i.e. instantiated type arguments of
// an uninstantiated type are not cloned, but shared.
virtual RawAbstractType* CloneUninstantiated(
- const Class& new_owner,
- GrowableObjectArray* trail = NULL) const;
+ const Class& new_owner, TrailPtr trail = NULL) const;
virtual RawInstance* CheckAndCanonicalize(const char** error_str) const {
return Canonicalize();
}
// Return the canonical version of this type.
- virtual RawAbstractType* Canonicalize(
- GrowableObjectArray* trail = NULL) const;
+ virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const;
// Return the object associated with the receiver in the trail or
// Object::null() if the receiver is not contained in the trail.
regis 2015/08/27 02:30:26 It could be AbstractType::null() instead of Object
srdjan 2015/08/27 16:09:49 Done.
- RawObject* OnlyBuddyInTrail(GrowableObjectArray* trail) const;
+ RawInstance* OnlyBuddyInTrail(TrailPtr trail) const;
regis 2015/08/27 02:30:26 Could be RawAbstracType instead of RawInstance.
srdjan 2015/08/27 16:09:49 Done.
// If the trail is null, allocate a trail, add the pair <receiver, buddy> to
// the trail. The receiver may only be added once with its only buddy.
- void AddOnlyBuddyToTrail(GrowableObjectArray** trail,
- const Object& buddy) const;
+ void AddOnlyBuddyToTrail(TrailPtr* trail, const AbstractType& buddy) const;
// The name of this type, including the names of its type arguments, if any.
virtual RawString* Name() const {
@@ -5158,20 +5156,18 @@ class Type : public AbstractType {
virtual RawTypeArguments* arguments() const;
void set_arguments(const TypeArguments& value) const;
virtual intptr_t token_pos() const { return raw_ptr()->token_pos_; }
- virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const;
- virtual bool IsEquivalent(const Instance& other,
- GrowableObjectArray* trail = NULL) const;
+ virtual bool IsInstantiated(TrailPtr trail = NULL) const;
+ virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const;
virtual bool IsRecursive() const;
virtual RawAbstractType* InstantiateFrom(
const TypeArguments& instantiator_type_arguments,
Error* malformed_error,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
virtual RawAbstractType* CloneUnfinalized() const;
virtual RawAbstractType* CloneUninstantiated(
const Class& new_owner,
- GrowableObjectArray* trail = NULL) const;
- virtual RawAbstractType* Canonicalize(
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
+ virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const;
virtual intptr_t Hash() const;
@@ -5280,33 +5276,31 @@ class TypeRef : public AbstractType {
virtual intptr_t token_pos() const {
return AbstractType::Handle(type()).token_pos();
}
- virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const;
+ virtual bool IsInstantiated(TrailPtr trail = NULL) const;
virtual bool IsEquivalent(const Instance& other,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
virtual bool IsRecursive() const { return true; }
virtual RawTypeRef* InstantiateFrom(
const TypeArguments& instantiator_type_arguments,
Error* bound_error,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
virtual RawTypeRef* CloneUninstantiated(
const Class& new_owner,
- GrowableObjectArray* trail = NULL) const;
- virtual RawAbstractType* Canonicalize(
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
+ virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const;
virtual intptr_t Hash() const;
// Return true if the receiver is contained in the trail.
// Otherwise, if the trail is null, allocate a trail, then add the receiver to
// the trail and return false.
- bool TestAndAddToTrail(GrowableObjectArray** trail) const;
+ bool TestAndAddToTrail(TrailPtr* trail) const;
// Return true if the pair <receiver, buddy> is contained in the trail.
// Otherwise, if the trail is null, allocate a trail, add the pair <receiver,
// buddy> to the trail and return false.
// The receiver may be added several times, each time with a different buddy.
- bool TestAndAddBuddyToTrail(GrowableObjectArray** trail,
- const Object& buddy) const;
+ bool TestAndAddBuddyToTrail(TrailPtr* trail, const Instance& buddy) const;
regis 2015/08/27 02:30:26 AbstractType instead of Instance
static intptr_t InstanceSize() {
return RoundedAllocationSize(sizeof(RawTypeRef));
@@ -5361,22 +5355,19 @@ class TypeParameter : public AbstractType {
const AbstractType& upper_bound,
Error* bound_error) const;
virtual intptr_t token_pos() const { return raw_ptr()->token_pos_; }
- virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const {
+ virtual bool IsInstantiated(TrailPtr trail = NULL) const {
return false;
}
- virtual bool IsEquivalent(const Instance& other,
- GrowableObjectArray* trail = NULL) const;
+ virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const;
virtual bool IsRecursive() const { return false; }
virtual RawAbstractType* InstantiateFrom(
const TypeArguments& instantiator_type_arguments,
Error* bound_error,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
virtual RawAbstractType* CloneUnfinalized() const;
virtual RawAbstractType* CloneUninstantiated(
- const Class& new_owner,
- GrowableObjectArray* trail = NULL) const;
- virtual RawAbstractType* Canonicalize(
- GrowableObjectArray* trail = NULL) const {
+ const Class& new_owner, TrailPtr trail = NULL) const;
+ virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const {
return raw();
}
@@ -5444,26 +5435,23 @@ class BoundedType : public AbstractType {
virtual intptr_t token_pos() const {
return AbstractType::Handle(type()).token_pos();
}
- virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const {
+ virtual bool IsInstantiated(TrailPtr trail = NULL) const {
// It is not possible to encounter an instantiated bounded type with an
// uninstantiated upper bound. Therefore, we do not need to check if the
// bound is instantiated. Moreover, doing so could lead into cycles, as in
// class C<T extends C<C>> { }.
return AbstractType::Handle(type()).IsInstantiated();
}
- virtual bool IsEquivalent(const Instance& other,
- GrowableObjectArray* trail = NULL) const;
+ virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const;
virtual bool IsRecursive() const;
virtual RawAbstractType* InstantiateFrom(
const TypeArguments& instantiator_type_arguments,
Error* bound_error,
- GrowableObjectArray* trail = NULL) const;
+ TrailPtr trail = NULL) const;
virtual RawAbstractType* CloneUnfinalized() const;
virtual RawAbstractType* CloneUninstantiated(
- const Class& new_owner,
- GrowableObjectArray* trail = NULL) const;
- virtual RawAbstractType* Canonicalize(
- GrowableObjectArray* trail = NULL) const {
+ const Class& new_owner, TrailPtr trail = NULL) const;
+ virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const {
return raw();
}

Powered by Google App Engine
This is Rietveld 408576698