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)); |