| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/objects.h" | 5 #include "src/objects.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <iomanip> | 8 #include <iomanip> |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <sstream> | 10 #include <sstream> |
| (...skipping 10647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10658 return to + ArchiveSpacePerThread(); | 10658 return to + ArchiveSpacePerThread(); |
| 10659 } | 10659 } |
| 10660 | 10660 |
| 10661 | 10661 |
| 10662 // Restore statics that are thread-local. | 10662 // Restore statics that are thread-local. |
| 10663 char* Relocatable::RestoreState(Isolate* isolate, char* from) { | 10663 char* Relocatable::RestoreState(Isolate* isolate, char* from) { |
| 10664 isolate->set_relocatable_top(*reinterpret_cast<Relocatable**>(from)); | 10664 isolate->set_relocatable_top(*reinterpret_cast<Relocatable**>(from)); |
| 10665 return from + ArchiveSpacePerThread(); | 10665 return from + ArchiveSpacePerThread(); |
| 10666 } | 10666 } |
| 10667 | 10667 |
| 10668 | 10668 char* Relocatable::Iterate(RootVisitor* v, char* thread_storage) { |
| 10669 char* Relocatable::Iterate(ObjectVisitor* v, char* thread_storage) { | |
| 10670 Relocatable* top = *reinterpret_cast<Relocatable**>(thread_storage); | 10669 Relocatable* top = *reinterpret_cast<Relocatable**>(thread_storage); |
| 10671 Iterate(v, top); | 10670 Iterate(v, top); |
| 10672 return thread_storage + ArchiveSpacePerThread(); | 10671 return thread_storage + ArchiveSpacePerThread(); |
| 10673 } | 10672 } |
| 10674 | 10673 |
| 10675 | 10674 void Relocatable::Iterate(Isolate* isolate, RootVisitor* v) { |
| 10676 void Relocatable::Iterate(Isolate* isolate, ObjectVisitor* v) { | |
| 10677 Iterate(v, isolate->relocatable_top()); | 10675 Iterate(v, isolate->relocatable_top()); |
| 10678 } | 10676 } |
| 10679 | 10677 |
| 10680 | 10678 void Relocatable::Iterate(RootVisitor* v, Relocatable* top) { |
| 10681 void Relocatable::Iterate(ObjectVisitor* v, Relocatable* top) { | |
| 10682 Relocatable* current = top; | 10679 Relocatable* current = top; |
| 10683 while (current != NULL) { | 10680 while (current != NULL) { |
| 10684 current->IterateInstance(v); | 10681 current->IterateInstance(v); |
| 10685 current = current->prev_; | 10682 current = current->prev_; |
| 10686 } | 10683 } |
| 10687 } | 10684 } |
| 10688 | 10685 |
| 10689 | 10686 |
| 10690 FlatStringReader::FlatStringReader(Isolate* isolate, Handle<String> str) | 10687 FlatStringReader::FlatStringReader(Isolate* isolate, Handle<String> str) |
| 10691 : Relocatable(isolate), | 10688 : Relocatable(isolate), |
| (...skipping 3186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13878 if (entry != kNotFound) { | 13875 if (entry != kNotFound) { |
| 13879 FixedArray* code_map = optimized_code_map(); | 13876 FixedArray* code_map = optimized_code_map(); |
| 13880 DCHECK_LE(entry + kEntryLength, code_map->length()); | 13877 DCHECK_LE(entry + kEntryLength, code_map->length()); |
| 13881 WeakCell* cell = WeakCell::cast(code_map->get(entry + kCachedCodeOffset)); | 13878 WeakCell* cell = WeakCell::cast(code_map->get(entry + kCachedCodeOffset)); |
| 13882 result = cell->cleared() ? nullptr : Code::cast(cell->value()); | 13879 result = cell->cleared() ? nullptr : Code::cast(cell->value()); |
| 13883 } | 13880 } |
| 13884 return result; | 13881 return result; |
| 13885 } | 13882 } |
| 13886 | 13883 |
| 13887 | 13884 |
| 13888 #define DECLARE_TAG(ignore1, name, ignore2) name, | |
| 13889 const char* const VisitorSynchronization::kTags[ | |
| 13890 VisitorSynchronization::kNumberOfSyncTags] = { | |
| 13891 VISITOR_SYNCHRONIZATION_TAGS_LIST(DECLARE_TAG) | |
| 13892 }; | |
| 13893 #undef DECLARE_TAG | |
| 13894 | |
| 13895 | |
| 13896 #define DECLARE_TAG(ignore1, ignore2, name) name, | |
| 13897 const char* const VisitorSynchronization::kTagNames[ | |
| 13898 VisitorSynchronization::kNumberOfSyncTags] = { | |
| 13899 VISITOR_SYNCHRONIZATION_TAGS_LIST(DECLARE_TAG) | |
| 13900 }; | |
| 13901 #undef DECLARE_TAG | |
| 13902 | |
| 13903 | |
| 13904 void ObjectVisitor::VisitCodeTarget(RelocInfo* rinfo) { | 13885 void ObjectVisitor::VisitCodeTarget(RelocInfo* rinfo) { |
| 13905 DCHECK(RelocInfo::IsCodeTarget(rinfo->rmode())); | 13886 DCHECK(RelocInfo::IsCodeTarget(rinfo->rmode())); |
| 13906 Object* old_pointer = Code::GetCodeFromTargetAddress(rinfo->target_address()); | 13887 Object* old_pointer = Code::GetCodeFromTargetAddress(rinfo->target_address()); |
| 13907 Object* new_pointer = old_pointer; | 13888 Object* new_pointer = old_pointer; |
| 13908 VisitPointer(&new_pointer); | 13889 VisitPointer(&new_pointer); |
| 13909 DCHECK_EQ(old_pointer, new_pointer); | 13890 DCHECK_EQ(old_pointer, new_pointer); |
| 13910 } | 13891 } |
| 13911 | 13892 |
| 13912 | 13893 |
| 13913 void ObjectVisitor::VisitCodeAgeSequence(RelocInfo* rinfo) { | 13894 void ObjectVisitor::VisitCodeAgeSequence(RelocInfo* rinfo) { |
| (...skipping 6758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 20672 // depend on this. | 20653 // depend on this. |
| 20673 return DICTIONARY_ELEMENTS; | 20654 return DICTIONARY_ELEMENTS; |
| 20674 } | 20655 } |
| 20675 DCHECK_LE(kind, LAST_ELEMENTS_KIND); | 20656 DCHECK_LE(kind, LAST_ELEMENTS_KIND); |
| 20676 return kind; | 20657 return kind; |
| 20677 } | 20658 } |
| 20678 } | 20659 } |
| 20679 | 20660 |
| 20680 } // namespace internal | 20661 } // namespace internal |
| 20681 } // namespace v8 | 20662 } // namespace v8 |
| OLD | NEW |