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

Unified Diff: runtime/vm/object_reload.cc

Issue 2201093002: Make all reload zone allocations use the same zone (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: rasd Created 4 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
« no previous file with comments | « runtime/vm/isolate_reload.cc ('k') | runtime/vm/unit_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object_reload.cc
diff --git a/runtime/vm/object_reload.cc b/runtime/vm/object_reload.cc
index 62a983543f5c14285da60195b28897e94325c890..669ad19f4f8074db834a23393ec10bc63e80ac49 100644
--- a/runtime/vm/object_reload.cc
+++ b/runtime/vm/object_reload.cc
@@ -391,8 +391,8 @@ void Class::MigrateImplicitStaticClosures(IsolateReloadContext* irc,
class EnumClassConflict : public ClassReasonForCancelling {
public:
- EnumClassConflict(const Class& from, const Class& to)
- : ClassReasonForCancelling(from, to) { }
+ EnumClassConflict(Zone* zone, const Class& from, const Class& to)
+ : ClassReasonForCancelling(zone, from, to) { }
RawString* ToString() {
return String::NewFormatted(
@@ -406,8 +406,11 @@ class EnumClassConflict : public ClassReasonForCancelling {
class EnsureFinalizedError : public ClassReasonForCancelling {
public:
- EnsureFinalizedError(const Class& from, const Class& to, const Error& error)
- : ClassReasonForCancelling(from, to), error_(error) { }
+ EnsureFinalizedError(Zone* zone,
+ const Class& from,
+ const Class& to,
+ const Error& error)
+ : ClassReasonForCancelling(zone, from, to), error_(error) { }
private:
const Error& error_;
@@ -422,8 +425,8 @@ class EnsureFinalizedError : public ClassReasonForCancelling {
class NativeFieldsConflict : public ClassReasonForCancelling {
public:
- NativeFieldsConflict(const Class& from, const Class& to)
- : ClassReasonForCancelling(from, to) { }
+ NativeFieldsConflict(Zone* zone, const Class& from, const Class& to)
+ : ClassReasonForCancelling(zone, from, to) { }
private:
RawString* ToString() {
@@ -435,8 +438,8 @@ class NativeFieldsConflict : public ClassReasonForCancelling {
class TypeParametersChanged : public ClassReasonForCancelling {
public:
- TypeParametersChanged(const Class& from, const Class& to)
- : ClassReasonForCancelling(from, to) {}
+ TypeParametersChanged(Zone* zone, const Class& from, const Class& to)
+ : ClassReasonForCancelling(zone, from, to) {}
RawString* ToString() {
return String::NewFormatted(
@@ -457,8 +460,8 @@ class TypeParametersChanged : public ClassReasonForCancelling {
class PreFinalizedConflict : public ClassReasonForCancelling {
public:
- PreFinalizedConflict(const Class& from, const Class& to)
- : ClassReasonForCancelling(from, to) {}
+ PreFinalizedConflict(Zone* zone, const Class& from, const Class& to)
+ : ClassReasonForCancelling(zone, from, to) {}
private:
RawString* ToString() {
@@ -472,8 +475,8 @@ class PreFinalizedConflict : public ClassReasonForCancelling {
class InstanceSizeConflict : public ClassReasonForCancelling {
public:
- InstanceSizeConflict(const Class& from, const Class& to)
- : ClassReasonForCancelling(from, to) {}
+ InstanceSizeConflict(Zone* zone, const Class& from, const Class& to)
+ : ClassReasonForCancelling(zone, from, to) {}
private:
RawString* ToString() {
@@ -490,10 +493,11 @@ class InstanceSizeConflict : public ClassReasonForCancelling {
class UnimplementedDeferredLibrary : public ReasonForCancelling {
public:
- UnimplementedDeferredLibrary(const Library& from,
+ UnimplementedDeferredLibrary(Zone* zone,
+ const Library& from,
const Library& to,
const String& name)
- : ReasonForCancelling(), from_(from), to_(to), name_(name) {}
+ : ReasonForCancelling(zone), from_(from), to_(to), name_(name) {}
private:
const Library& from_;
@@ -519,7 +523,8 @@ void Class::CheckReload(const Class& replacement,
// Class cannot change enum property.
if (is_enum_class() != replacement.is_enum_class()) {
context->AddReasonForCancelling(
- new EnumClassConflict(*this, replacement));
+ new(context->zone())
+ EnumClassConflict(context->zone(), *this, replacement));
return;
}
@@ -529,7 +534,8 @@ void Class::CheckReload(const Class& replacement,
Error::Handle(replacement.EnsureIsFinalized(Thread::Current()));
if (!error.IsNull()) {
context->AddReasonForCancelling(
- new EnsureFinalizedError(*this, replacement, error));
+ new(context->zone())
+ EnsureFinalizedError(context->zone(), *this, replacement, error));
return; // No reason to check other properties.
}
TIR_Print("Finalized replacement class for %s\n", ToCString());
@@ -538,7 +544,8 @@ void Class::CheckReload(const Class& replacement,
// Native field count cannot change.
if (num_native_fields() != replacement.num_native_fields()) {
context->AddReasonForCancelling(
- new NativeFieldsConflict(*this, replacement));
+ new(context->zone())
+ NativeFieldsConflict(context->zone(), *this, replacement));
return;
}
@@ -605,11 +612,14 @@ bool Class::CanReloadFinalized(const Class& replacement,
AbstractType::Handle(replacement.DeclarationType());
if (!dt.Equals(replacement_dt)) {
context->AddReasonForCancelling(
- new TypeParametersChanged(*this, replacement));
+ new(context->zone())
+ TypeParametersChanged(context->zone(), *this, replacement));
return false;
}
if (RequiresInstanceMorphing(replacement)) {
- context->AddInstanceMorpher(new InstanceMorpher(*this, replacement));
+ context->AddInstanceMorpher(
+ new(context->zone())
+ InstanceMorpher(context->zone(), *this, replacement));
}
return true;
}
@@ -620,13 +630,15 @@ bool Class::CanReloadPreFinalized(const Class& replacement,
// The replacement class must also prefinalized.
if (!replacement.is_prefinalized()) {
context->AddReasonForCancelling(
- new PreFinalizedConflict(*this, replacement));
+ new(context->zone())
+ PreFinalizedConflict(context->zone(), *this, replacement));
return false;
}
// Check the instance sizes are equal.
if (instance_size() != replacement.instance_size()) {
context->AddReasonForCancelling(
- new InstanceSizeConflict(*this, replacement));
+ new(context->zone())
+ InstanceSizeConflict(context->zone(), *this, replacement));
return false;
}
return true;
@@ -644,7 +656,9 @@ void Library::CheckReload(const Library& replacement,
if (prefix.is_deferred_load()) {
const String& prefix_name = String::Handle(prefix.name());
context->AddReasonForCancelling(
- new UnimplementedDeferredLibrary(*this, replacement, prefix_name));
+ new(context->zone())
+ UnimplementedDeferredLibrary(context->zone(),
+ *this, replacement, prefix_name));
return;
}
}
« no previous file with comments | « runtime/vm/isolate_reload.cc ('k') | runtime/vm/unit_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698