| 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 10642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10653 return to + ArchiveSpacePerThread(); | 10653 return to + ArchiveSpacePerThread(); |
| 10654 } | 10654 } |
| 10655 | 10655 |
| 10656 | 10656 |
| 10657 // Restore statics that are thread-local. | 10657 // Restore statics that are thread-local. |
| 10658 char* Relocatable::RestoreState(Isolate* isolate, char* from) { | 10658 char* Relocatable::RestoreState(Isolate* isolate, char* from) { |
| 10659 isolate->set_relocatable_top(*reinterpret_cast<Relocatable**>(from)); | 10659 isolate->set_relocatable_top(*reinterpret_cast<Relocatable**>(from)); |
| 10660 return from + ArchiveSpacePerThread(); | 10660 return from + ArchiveSpacePerThread(); |
| 10661 } | 10661 } |
| 10662 | 10662 |
| 10663 | 10663 char* Relocatable::Iterate(RootVisitor* v, char* thread_storage) { |
| 10664 char* Relocatable::Iterate(ObjectVisitor* v, char* thread_storage) { | |
| 10665 Relocatable* top = *reinterpret_cast<Relocatable**>(thread_storage); | 10664 Relocatable* top = *reinterpret_cast<Relocatable**>(thread_storage); |
| 10666 Iterate(v, top); | 10665 Iterate(v, top); |
| 10667 return thread_storage + ArchiveSpacePerThread(); | 10666 return thread_storage + ArchiveSpacePerThread(); |
| 10668 } | 10667 } |
| 10669 | 10668 |
| 10670 | 10669 void Relocatable::Iterate(Isolate* isolate, RootVisitor* v) { |
| 10671 void Relocatable::Iterate(Isolate* isolate, ObjectVisitor* v) { | |
| 10672 Iterate(v, isolate->relocatable_top()); | 10670 Iterate(v, isolate->relocatable_top()); |
| 10673 } | 10671 } |
| 10674 | 10672 |
| 10675 | 10673 void Relocatable::Iterate(RootVisitor* v, Relocatable* top) { |
| 10676 void Relocatable::Iterate(ObjectVisitor* v, Relocatable* top) { | |
| 10677 Relocatable* current = top; | 10674 Relocatable* current = top; |
| 10678 while (current != NULL) { | 10675 while (current != NULL) { |
| 10679 current->IterateInstance(v); | 10676 current->IterateInstance(v); |
| 10680 current = current->prev_; | 10677 current = current->prev_; |
| 10681 } | 10678 } |
| 10682 } | 10679 } |
| 10683 | 10680 |
| 10684 | 10681 |
| 10685 FlatStringReader::FlatStringReader(Isolate* isolate, Handle<String> str) | 10682 FlatStringReader::FlatStringReader(Isolate* isolate, Handle<String> str) |
| 10686 : Relocatable(isolate), | 10683 : Relocatable(isolate), |
| (...skipping 3180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13867 if (entry != kNotFound) { | 13864 if (entry != kNotFound) { |
| 13868 FixedArray* code_map = optimized_code_map(); | 13865 FixedArray* code_map = optimized_code_map(); |
| 13869 DCHECK_LE(entry + kEntryLength, code_map->length()); | 13866 DCHECK_LE(entry + kEntryLength, code_map->length()); |
| 13870 WeakCell* cell = WeakCell::cast(code_map->get(entry + kCachedCodeOffset)); | 13867 WeakCell* cell = WeakCell::cast(code_map->get(entry + kCachedCodeOffset)); |
| 13871 result = cell->cleared() ? nullptr : Code::cast(cell->value()); | 13868 result = cell->cleared() ? nullptr : Code::cast(cell->value()); |
| 13872 } | 13869 } |
| 13873 return result; | 13870 return result; |
| 13874 } | 13871 } |
| 13875 | 13872 |
| 13876 | 13873 |
| 13877 #define DECLARE_TAG(ignore1, name, ignore2) name, | |
| 13878 const char* const VisitorSynchronization::kTags[ | |
| 13879 VisitorSynchronization::kNumberOfSyncTags] = { | |
| 13880 VISITOR_SYNCHRONIZATION_TAGS_LIST(DECLARE_TAG) | |
| 13881 }; | |
| 13882 #undef DECLARE_TAG | |
| 13883 | |
| 13884 | |
| 13885 #define DECLARE_TAG(ignore1, ignore2, name) name, | |
| 13886 const char* const VisitorSynchronization::kTagNames[ | |
| 13887 VisitorSynchronization::kNumberOfSyncTags] = { | |
| 13888 VISITOR_SYNCHRONIZATION_TAGS_LIST(DECLARE_TAG) | |
| 13889 }; | |
| 13890 #undef DECLARE_TAG | |
| 13891 | |
| 13892 | |
| 13893 void ObjectVisitor::VisitCodeTarget(RelocInfo* rinfo) { | 13874 void ObjectVisitor::VisitCodeTarget(RelocInfo* rinfo) { |
| 13894 DCHECK(RelocInfo::IsCodeTarget(rinfo->rmode())); | 13875 DCHECK(RelocInfo::IsCodeTarget(rinfo->rmode())); |
| 13895 Object* old_pointer = Code::GetCodeFromTargetAddress(rinfo->target_address()); | 13876 Object* old_pointer = Code::GetCodeFromTargetAddress(rinfo->target_address()); |
| 13896 Object* new_pointer = old_pointer; | 13877 Object* new_pointer = old_pointer; |
| 13897 VisitPointer(&new_pointer); | 13878 VisitPointer(&new_pointer); |
| 13898 DCHECK_EQ(old_pointer, new_pointer); | 13879 DCHECK_EQ(old_pointer, new_pointer); |
| 13899 } | 13880 } |
| 13900 | 13881 |
| 13901 | 13882 |
| 13902 void ObjectVisitor::VisitCodeAgeSequence(RelocInfo* rinfo) { | 13883 void ObjectVisitor::VisitCodeAgeSequence(RelocInfo* rinfo) { |
| (...skipping 6551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 20454 // depend on this. | 20435 // depend on this. |
| 20455 return DICTIONARY_ELEMENTS; | 20436 return DICTIONARY_ELEMENTS; |
| 20456 } | 20437 } |
| 20457 DCHECK_LE(kind, LAST_ELEMENTS_KIND); | 20438 DCHECK_LE(kind, LAST_ELEMENTS_KIND); |
| 20458 return kind; | 20439 return kind; |
| 20459 } | 20440 } |
| 20460 } | 20441 } |
| 20461 | 20442 |
| 20462 } // namespace internal | 20443 } // namespace internal |
| 20463 } // namespace v8 | 20444 } // namespace v8 |
| OLD | NEW |