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

Side by Side Diff: src/objects.h

Issue 8822019: Reapply r10158: Distinguish weak references in heap snapshots, group GC roots. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/heap.cc ('k') | src/objects.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 7844 matching lines...) Expand 10 before | Expand all | Expand 10 after
7855 7855
7856 private: 7856 private:
7857 DISALLOW_IMPLICIT_CONSTRUCTORS(BreakPointInfo); 7857 DISALLOW_IMPLICIT_CONSTRUCTORS(BreakPointInfo);
7858 }; 7858 };
7859 #endif // ENABLE_DEBUGGER_SUPPORT 7859 #endif // ENABLE_DEBUGGER_SUPPORT
7860 7860
7861 7861
7862 #undef DECL_BOOLEAN_ACCESSORS 7862 #undef DECL_BOOLEAN_ACCESSORS
7863 #undef DECL_ACCESSORS 7863 #undef DECL_ACCESSORS
7864 7864
7865 #define VISITOR_SYNCHRONIZATION_TAGS_LIST(V) \
7866 V(kSymbolTable, "symbol_table", "(Symbols)") \
7867 V(kExternalStringsTable, "external_strings_table", "(External strings)") \
7868 V(kStrongRootList, "strong_root_list", "(Strong roots)") \
7869 V(kSymbol, "symbol", "(Symbol)") \
7870 V(kBootstrapper, "bootstrapper", "(Bootstrapper)") \
7871 V(kTop, "top", "(Isolate)") \
7872 V(kRelocatable, "relocatable", "(Relocatable)") \
7873 V(kDebug, "debug", "(Debugger)") \
7874 V(kCompilationCache, "compilationcache", "(Compilation cache)") \
7875 V(kHandleScope, "handlescope", "(Handle scope)") \
7876 V(kBuiltins, "builtins", "(Builtins)") \
7877 V(kGlobalHandles, "globalhandles", "(Global handles)") \
7878 V(kThreadManager, "threadmanager", "(Thread manager)") \
7879 V(kExtensions, "Extensions", "(Extensions)")
7880
7881 class VisitorSynchronization : public AllStatic {
7882 public:
7883 #define DECLARE_ENUM(enum_item, ignore1, ignore2) enum_item,
7884 enum SyncTag {
7885 VISITOR_SYNCHRONIZATION_TAGS_LIST(DECLARE_ENUM)
7886 kNumberOfSyncTags
7887 };
7888 #undef DECLARE_ENUM
7889
7890 static const char* const kTags[kNumberOfSyncTags];
7891 static const char* const kTagNames[kNumberOfSyncTags];
7892 };
7865 7893
7866 // Abstract base class for visiting, and optionally modifying, the 7894 // Abstract base class for visiting, and optionally modifying, the
7867 // pointers contained in Objects. Used in GC and serialization/deserialization. 7895 // pointers contained in Objects. Used in GC and serialization/deserialization.
7868 class ObjectVisitor BASE_EMBEDDED { 7896 class ObjectVisitor BASE_EMBEDDED {
7869 public: 7897 public:
7870 virtual ~ObjectVisitor() {} 7898 virtual ~ObjectVisitor() {}
7871 7899
7872 // Visits a contiguous arrays of pointers in the half-open range 7900 // Visits a contiguous arrays of pointers in the half-open range
7873 // [start, end). Any or all of the values may be modified on return. 7901 // [start, end). Any or all of the values may be modified on return.
7874 virtual void VisitPointers(Object** start, Object** end) = 0; 7902 virtual void VisitPointers(Object** start, Object** end) = 0;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
7910 7938
7911 virtual void VisitExternalReference(RelocInfo* rinfo); 7939 virtual void VisitExternalReference(RelocInfo* rinfo);
7912 7940
7913 inline void VisitExternalReference(Address* p) { 7941 inline void VisitExternalReference(Address* p) {
7914 VisitExternalReferences(p, p + 1); 7942 VisitExternalReferences(p, p + 1);
7915 } 7943 }
7916 7944
7917 // Visits a handle that has an embedder-assigned class ID. 7945 // Visits a handle that has an embedder-assigned class ID.
7918 virtual void VisitEmbedderReference(Object** p, uint16_t class_id) {} 7946 virtual void VisitEmbedderReference(Object** p, uint16_t class_id) {}
7919 7947
7920 #ifdef DEBUG
7921 // Intended for serialization/deserialization checking: insert, or 7948 // Intended for serialization/deserialization checking: insert, or
7922 // check for the presence of, a tag at this position in the stream. 7949 // check for the presence of, a tag at this position in the stream.
7923 virtual void Synchronize(const char* tag) {} 7950 // Also used for marking up GC roots in heap snapshots.
7924 #else 7951 virtual void Synchronize(VisitorSynchronization::SyncTag tag) {}
7925 inline void Synchronize(const char* tag) {}
7926 #endif
7927 }; 7952 };
7928 7953
7929 7954
7930 class StructBodyDescriptor : public 7955 class StructBodyDescriptor : public
7931 FlexibleBodyDescriptor<HeapObject::kHeaderSize> { 7956 FlexibleBodyDescriptor<HeapObject::kHeaderSize> {
7932 public: 7957 public:
7933 static inline int SizeOf(Map* map, HeapObject* object) { 7958 static inline int SizeOf(Map* map, HeapObject* object) {
7934 return map->instance_size(); 7959 return map->instance_size();
7935 } 7960 }
7936 }; 7961 };
(...skipping 21 matching lines...) Expand all
7958 } else { 7983 } else {
7959 value &= ~(1 << bit_position); 7984 value &= ~(1 << bit_position);
7960 } 7985 }
7961 return value; 7986 return value;
7962 } 7987 }
7963 }; 7988 };
7964 7989
7965 } } // namespace v8::internal 7990 } } // namespace v8::internal
7966 7991
7967 #endif // V8_OBJECTS_H_ 7992 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/heap.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698