Index: src/objects-visiting.h |
=================================================================== |
--- src/objects-visiting.h (revision 9327) |
+++ src/objects-visiting.h (working copy) |
@@ -30,22 +30,6 @@ |
#include "allocation.h" |
-#if V8_TARGET_ARCH_IA32 |
-#include "ia32/assembler-ia32.h" |
-#include "ia32/assembler-ia32-inl.h" |
-#elif V8_TARGET_ARCH_X64 |
-#include "x64/assembler-x64.h" |
-#include "x64/assembler-x64-inl.h" |
-#elif V8_TARGET_ARCH_ARM |
-#include "arm/assembler-arm.h" |
-#include "arm/assembler-arm-inl.h" |
-#elif V8_TARGET_ARCH_MIPS |
-#include "mips/assembler-mips.h" |
-#include "mips/assembler-mips-inl.h" |
-#else |
-#error Unsupported target architecture. |
-#endif |
- |
// This file provides base classes and auxiliary methods for defining |
// static object visitors used during GC. |
// Visiting HeapObject body with a normal ObjectVisitor requires performing |
@@ -67,6 +51,7 @@ |
kVisitSeqTwoByteString, |
kVisitShortcutCandidate, |
kVisitByteArray, |
+ kVisitFreeSpace, |
kVisitFixedArray, |
kVisitFixedDoubleArray, |
kVisitGlobalContext, |
@@ -236,7 +221,7 @@ |
static inline ReturnType Visit(Map* map, HeapObject* object) { |
int object_size = BodyDescriptor::SizeOf(map, object); |
BodyVisitorBase<StaticVisitor>::IteratePointers( |
- map->heap(), |
+ map->GetHeap(), |
object, |
BodyDescriptor::kStartOffset, |
object_size); |
@@ -247,7 +232,7 @@ |
static inline ReturnType VisitSpecialized(Map* map, HeapObject* object) { |
ASSERT(BodyDescriptor::SizeOf(map, object) == object_size); |
BodyVisitorBase<StaticVisitor>::IteratePointers( |
- map->heap(), |
+ map->GetHeap(), |
object, |
BodyDescriptor::kStartOffset, |
object_size); |
@@ -261,7 +246,7 @@ |
public: |
static inline ReturnType Visit(Map* map, HeapObject* object) { |
BodyVisitorBase<StaticVisitor>::IteratePointers( |
- map->heap(), |
+ map->GetHeap(), |
object, |
BodyDescriptor::kStartOffset, |
BodyDescriptor::kEndOffset); |
@@ -289,64 +274,8 @@ |
template<typename StaticVisitor> |
class StaticNewSpaceVisitor : public StaticVisitorBase { |
public: |
- static void Initialize() { |
- table_.Register(kVisitShortcutCandidate, |
- &FixedBodyVisitor<StaticVisitor, |
- ConsString::BodyDescriptor, |
- int>::Visit); |
+ static void Initialize(); |
- table_.Register(kVisitConsString, |
- &FixedBodyVisitor<StaticVisitor, |
- ConsString::BodyDescriptor, |
- int>::Visit); |
- |
- table_.Register(kVisitSlicedString, |
- &FixedBodyVisitor<StaticVisitor, |
- SlicedString::BodyDescriptor, |
- int>::Visit); |
- |
- table_.Register(kVisitFixedArray, |
- &FlexibleBodyVisitor<StaticVisitor, |
- FixedArray::BodyDescriptor, |
- int>::Visit); |
- |
- table_.Register(kVisitFixedDoubleArray, &VisitFixedDoubleArray); |
- |
- table_.Register(kVisitGlobalContext, |
- &FixedBodyVisitor<StaticVisitor, |
- Context::ScavengeBodyDescriptor, |
- int>::Visit); |
- |
- table_.Register(kVisitByteArray, &VisitByteArray); |
- |
- table_.Register(kVisitSharedFunctionInfo, |
- &FixedBodyVisitor<StaticVisitor, |
- SharedFunctionInfo::BodyDescriptor, |
- int>::Visit); |
- |
- table_.Register(kVisitJSWeakMap, &VisitJSObject); |
- |
- table_.Register(kVisitJSRegExp, &VisitJSObject); |
- |
- table_.Register(kVisitSeqAsciiString, &VisitSeqAsciiString); |
- |
- table_.Register(kVisitSeqTwoByteString, &VisitSeqTwoByteString); |
- |
- table_.Register(kVisitJSFunction, |
- &JSObjectVisitor:: |
- template VisitSpecialized<JSFunction::kSize>); |
- |
- table_.RegisterSpecializations<DataObjectVisitor, |
- kVisitDataObject, |
- kVisitDataObjectGeneric>(); |
- table_.RegisterSpecializations<JSObjectVisitor, |
- kVisitJSObject, |
- kVisitJSObjectGeneric>(); |
- table_.RegisterSpecializations<StructVisitor, |
- kVisitStruct, |
- kVisitStructGeneric>(); |
- } |
- |
static inline int IterateBody(Map* map, HeapObject* obj) { |
return table_.GetVisitor(map)(map, obj); |
} |
@@ -379,6 +308,10 @@ |
SeqTwoByteStringSize(map->instance_type()); |
} |
+ static inline int VisitFreeSpace(Map* map, HeapObject* object) { |
+ return FreeSpace::cast(object)->Size(); |
+ } |
+ |
class DataObjectVisitor { |
public: |
template<int object_size> |
@@ -410,55 +343,6 @@ |
StaticNewSpaceVisitor<StaticVisitor>::table_; |
-void Code::CodeIterateBody(ObjectVisitor* v) { |
- int mode_mask = RelocInfo::kCodeTargetMask | |
- RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) | |
- RelocInfo::ModeMask(RelocInfo::GLOBAL_PROPERTY_CELL) | |
- RelocInfo::ModeMask(RelocInfo::EXTERNAL_REFERENCE) | |
- RelocInfo::ModeMask(RelocInfo::JS_RETURN) | |
- RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT) | |
- RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY); |
- |
- // Use the relocation info pointer before it is visited by |
- // the heap compaction in the next statement. |
- RelocIterator it(this, mode_mask); |
- |
- IteratePointer(v, kRelocationInfoOffset); |
- IteratePointer(v, kDeoptimizationDataOffset); |
- |
- for (; !it.done(); it.next()) { |
- it.rinfo()->Visit(v); |
- } |
-} |
- |
- |
-template<typename StaticVisitor> |
-void Code::CodeIterateBody(Heap* heap) { |
- int mode_mask = RelocInfo::kCodeTargetMask | |
- RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) | |
- RelocInfo::ModeMask(RelocInfo::GLOBAL_PROPERTY_CELL) | |
- RelocInfo::ModeMask(RelocInfo::EXTERNAL_REFERENCE) | |
- RelocInfo::ModeMask(RelocInfo::JS_RETURN) | |
- RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT) | |
- RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY); |
- |
- // Use the relocation info pointer before it is visited by |
- // the heap compaction in the next statement. |
- RelocIterator it(this, mode_mask); |
- |
- StaticVisitor::VisitPointer( |
- heap, |
- reinterpret_cast<Object**>(this->address() + kRelocationInfoOffset)); |
- StaticVisitor::VisitPointer( |
- heap, |
- reinterpret_cast<Object**>(this->address() + kDeoptimizationDataOffset)); |
- |
- for (; !it.done(); it.next()) { |
- it.rinfo()->template Visit<StaticVisitor>(heap); |
- } |
-} |
- |
- |
} } // namespace v8::internal |
#endif // V8_OBJECTS_VISITING_H_ |