Index: runtime/vm/class_finalizer.cc |
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc |
index 288e05698389fed9323d941b3c02cae9f5e03dc9..28004997392313cec53675270167c8772d010142 100644 |
--- a/runtime/vm/class_finalizer.cc |
+++ b/runtime/vm/class_finalizer.cc |
@@ -321,7 +321,7 @@ void ClassFinalizer::ResolveRedirectingFactory(const Class& cls, |
Type& type = Type::Handle(factory.RedirectionType()); |
if (!type.IsMalformed() && IsLoaded(type)) { |
const GrowableObjectArray& visited_factories = |
- GrowableObjectArray::Handle(GrowableObjectArray::New()); |
+ GrowableObjectArray::Handle(GrowableObjectArray::New(Heap::kOld)); |
ResolveRedirectingFactoryTarget(cls, factory, visited_factories); |
} |
if (factory.is_const()) { |
@@ -349,7 +349,7 @@ void ClassFinalizer::ResolveRedirectingFactoryTarget( |
String::Handle(factory.name()).ToCString()); |
} |
} |
- visited_factories.Add(factory); |
+ visited_factories.Add(factory, Heap::kOld); |
// Check if target is already resolved. |
Type& type = Type::Handle(factory.RedirectionType()); |
@@ -388,11 +388,11 @@ void ClassFinalizer::ResolveRedirectingFactoryTarget( |
} |
const Class& target_class = Class::Handle(type.type_class()); |
String& target_class_name = String::Handle(target_class.Name()); |
- String& target_name = |
- String::Handle(String::Concat(target_class_name, Symbols::Dot())); |
+ String& target_name = String::Handle( |
+ String::Concat(target_class_name, Symbols::Dot(), Heap::kOld)); |
const String& identifier = String::Handle(factory.RedirectionIdentifier()); |
if (!identifier.IsNull()) { |
- target_name = String::Concat(target_name, identifier); |
+ target_name = String::Concat(target_name, identifier, Heap::kOld); |
} |
// Verify that the target constructor of the redirection exists. |
@@ -2305,8 +2305,8 @@ void ClassFinalizer::CreateForwardingConstructors( |
// Build constructor name from mixin application class name |
// and name of cloned super class constructor. |
const String& ctor_name = String::Handle(Z, func.name()); |
- String& clone_name = |
- String::Handle(Z, String::SubString(ctor_name, super_name.Length())); |
+ String& clone_name = String::Handle( |
+ Z, String::SubString(ctor_name, super_name.Length(), Heap::kOld)); |
clone_name = Symbols::FromConcat(T, mixin_name, clone_name); |
if (FLAG_trace_class_finalization) { |
@@ -2340,7 +2340,8 @@ void ClassFinalizer::CreateForwardingConstructors( |
ASSERT(parameter_names.Length() == num_parameters); |
clone.set_parameter_names(parameter_names); |
// The parameter types of the cloned constructor are 'dynamic'. |
- clone.set_parameter_types(Array::Handle(Z, Array::New(num_parameters))); |
+ clone.set_parameter_types( |
+ Array::Handle(Z, Array::New(num_parameters, Heap::kOld))); |
for (intptr_t n = 0; n < num_parameters; n++) { |
clone.SetParameterTypeAt(n, Object::dynamic_type()); |
} |
@@ -2373,7 +2374,7 @@ void ClassFinalizer::ApplyMixinMembers(const Class& cls) { |
} |
const GrowableObjectArray& cloned_funcs = |
- GrowableObjectArray::Handle(zone, GrowableObjectArray::New()); |
+ GrowableObjectArray::Handle(zone, GrowableObjectArray::New(Heap::kOld)); |
Array& functions = Array::Handle(zone); |
Function& func = Function::Handle(zone); |
@@ -2405,7 +2406,7 @@ void ClassFinalizer::ApplyMixinMembers(const Class& cls) { |
const Script& script = Script::Handle(cls.script()); |
const Error& error = Error::Handle(LanguageError::NewFormatted( |
Error::Handle(), script, func.token_pos(), Report::AtLocation, |
- Report::kError, Heap::kNew, |
+ Report::kError, Heap::kOld, |
"constructor '%s' is illegal in mixin class %s", |
String::Handle(func.UserVisibleName()).ToCString(), |
String::Handle(zone, mixin_cls.Name()).ToCString())); |
@@ -2419,7 +2420,7 @@ void ClassFinalizer::ApplyMixinMembers(const Class& cls) { |
if (!func.is_static() && !func.IsMethodExtractor() && |
!func.IsNoSuchMethodDispatcher() && !func.IsInvokeFieldDispatcher()) { |
func = func.Clone(cls); |
- cloned_funcs.Add(func); |
+ cloned_funcs.Add(func, Heap::kOld); |
} |
} |
functions = Array::MakeArray(cloned_funcs); |
@@ -2650,7 +2651,7 @@ void ClassFinalizer::FinalizeClass(const Class& cls) { |
if (cls.is_mixin_app_alias() && |
(cls.functions() == Object::empty_array().raw())) { |
const GrowableObjectArray& cloned_funcs = |
- GrowableObjectArray::Handle(GrowableObjectArray::New()); |
+ GrowableObjectArray::Handle(GrowableObjectArray::New(Heap::kOld)); |
const Class& mixin_app_class = Class::Handle(cls.SuperClass()); |
const Type& mixin_type = Type::Handle(mixin_app_class.mixin()); |
@@ -2706,7 +2707,7 @@ void ClassFinalizer::AllocateEnumValues(const Class& enum_cls) { |
Array::Handle(zone, Array::RawCast(values_field.StaticValue())); |
const String& enum_name = String::Handle(enum_cls.ScrubbedName()); |
const String& name_prefix = |
- String::Handle(String::Concat(enum_name, Symbols::Dot())); |
+ String::Handle(String::Concat(enum_name, Symbols::Dot(), Heap::kOld)); |
Field& field = Field::Handle(zone); |
Instance& ordinal_value = Instance::Handle(zone); |