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

Unified Diff: src/objects-visiting-inl.h

Issue 181833004: Fix memory leak caused by treating Code::next_code_link as strong in marker. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: fix test Created 6 years, 10 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: src/objects-visiting-inl.h
diff --git a/src/objects-visiting-inl.h b/src/objects-visiting-inl.h
index 010f3068a9e3ce1b7e493cb513e3c8df9fef3562..b1b0b391eeffcef81a210d4d612076a2d5caa339 100644
--- a/src/objects-visiting-inl.h
+++ b/src/objects-visiting-inl.h
@@ -897,7 +897,10 @@ void Code::CodeIterateBody(ObjectVisitor* v) {
IteratePointer(v, kRelocationInfoOffset);
IteratePointer(v, kHandlerTableOffset);
IteratePointer(v, kDeoptimizationDataOffset);
- IteratePointer(v, kTypeFeedbackInfoOffset);
+ if (v->weak_pointer_mode() == VISIT_WEAK_POINTERS || !is_optimized_code()) {
+ // In optimized code this field is a weak next_code_link.
+ IteratePointer(v, kTypeFeedbackInfoOffset);
+ }
IteratePointer(v, kConstantPoolOffset);
RelocIterator it(this, mode_mask);
@@ -929,9 +932,13 @@ void Code::CodeIterateBody(Heap* heap) {
StaticVisitor::VisitPointer(
heap,
reinterpret_cast<Object**>(this->address() + kDeoptimizationDataOffset));
- StaticVisitor::VisitPointer(
- heap,
- reinterpret_cast<Object**>(this->address() + kTypeFeedbackInfoOffset));
+ if (StaticVisitor::weak_pointer_mode() == VISIT_WEAK_POINTERS ||
+ !is_optimized_code()) {
Michael Starzinger 2014/03/04 12:31:12 As discussed offline: AFAICT, currently we can aff
titzer 2014/03/05 08:58:02 +1 unoverlap. I am sorry for overlapping them in t
ulan 2014/03/06 11:13:32 Nope, it is my fault. I remember introducing this
ulan 2014/03/06 11:13:32 Done.
+ // In optimized code this field is a weak next_code_link.
+ StaticVisitor::VisitPointer(
+ heap,
+ reinterpret_cast<Object**>(this->address() + kTypeFeedbackInfoOffset));
+ }
StaticVisitor::VisitPointer(
heap,
reinterpret_cast<Object**>(this->address() + kConstantPoolOffset));

Powered by Google App Engine
This is Rietveld 408576698