OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/api.h" | 7 #include "src/api.h" |
8 #include "src/global-handles.h" | 8 #include "src/global-handles.h" |
9 | 9 |
10 #include "src/vm-state-inl.h" | 10 #include "src/vm-state-inl.h" |
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
838 object_group_connections_.Add(ObjectGroupConnection(id, handle)); | 838 object_group_connections_.Add(ObjectGroupConnection(id, handle)); |
839 } | 839 } |
840 | 840 |
841 | 841 |
842 void GlobalHandles::SetRetainedObjectInfo(UniqueId id, | 842 void GlobalHandles::SetRetainedObjectInfo(UniqueId id, |
843 RetainedObjectInfo* info) { | 843 RetainedObjectInfo* info) { |
844 retainer_infos_.Add(ObjectGroupRetainerInfo(id, info)); | 844 retainer_infos_.Add(ObjectGroupRetainerInfo(id, info)); |
845 } | 845 } |
846 | 846 |
847 | 847 |
848 void GlobalHandles::AddImplicitReferences(HeapObject** parent, | |
849 Object*** children, | |
850 size_t length) { | |
851 #ifdef DEBUG | |
852 DCHECK(!Node::FromLocation(BitCast<Object**>(parent))->is_independent()); | |
853 for (size_t i = 0; i < length; ++i) { | |
854 DCHECK(!Node::FromLocation(children[i])->is_independent()); | |
855 } | |
856 #endif | |
857 if (length == 0) return; | |
858 ImplicitRefGroup* group = new ImplicitRefGroup(parent, length); | |
859 for (size_t i = 0; i < length; ++i) | |
860 group->children[i] = children[i]; | |
861 implicit_ref_groups_.Add(group); | |
862 } | |
863 | |
864 | |
865 void GlobalHandles::SetReferenceFromGroup(UniqueId id, Object** child) { | 848 void GlobalHandles::SetReferenceFromGroup(UniqueId id, Object** child) { |
866 DCHECK(!Node::FromLocation(child)->is_independent()); | 849 DCHECK(!Node::FromLocation(child)->is_independent()); |
867 implicit_ref_connections_.Add(ObjectGroupConnection(id, child)); | 850 implicit_ref_connections_.Add(ObjectGroupConnection(id, child)); |
868 } | 851 } |
869 | 852 |
870 | 853 |
871 void GlobalHandles::SetReference(HeapObject** parent, Object** child) { | 854 void GlobalHandles::SetReference(HeapObject** parent, Object** child) { |
872 DCHECK(!Node::FromLocation(child)->is_independent()); | 855 DCHECK(!Node::FromLocation(child)->is_independent()); |
873 ImplicitRefGroup* group = new ImplicitRefGroup(parent, 1); | 856 ImplicitRefGroup* group = new ImplicitRefGroup(parent, 1); |
874 group->children[0] = child; | 857 group->children[0] = child; |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1064 DCHECK_EQ(isolate->heap()->the_hole_value(), blocks_[block][offset]); | 1047 DCHECK_EQ(isolate->heap()->the_hole_value(), blocks_[block][offset]); |
1065 blocks_[block][offset] = object; | 1048 blocks_[block][offset] = object; |
1066 if (isolate->heap()->InNewSpace(object)) { | 1049 if (isolate->heap()->InNewSpace(object)) { |
1067 new_space_indices_.Add(size_); | 1050 new_space_indices_.Add(size_); |
1068 } | 1051 } |
1069 *index = size_++; | 1052 *index = size_++; |
1070 } | 1053 } |
1071 | 1054 |
1072 | 1055 |
1073 } } // namespace v8::internal | 1056 } } // namespace v8::internal |
OLD | NEW |