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

Side by Side Diff: src/objects.cc

Issue 2810653002: Add a host parameter to ObjectVisitor methods. (Closed)
Patch Set: rebase Created 3 years, 8 months 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
« no previous file with comments | « src/objects.h ('k') | src/objects-body-descriptors-inl.h » ('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 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 13863 matching lines...) Expand 10 before | Expand all | Expand 10 after
13874 int entry = SearchOptimizedCodeMapEntry(native_context); 13874 int entry = SearchOptimizedCodeMapEntry(native_context);
13875 if (entry != kNotFound) { 13875 if (entry != kNotFound) {
13876 FixedArray* code_map = optimized_code_map(); 13876 FixedArray* code_map = optimized_code_map();
13877 DCHECK_LE(entry + kEntryLength, code_map->length()); 13877 DCHECK_LE(entry + kEntryLength, code_map->length());
13878 WeakCell* cell = WeakCell::cast(code_map->get(entry + kCachedCodeOffset)); 13878 WeakCell* cell = WeakCell::cast(code_map->get(entry + kCachedCodeOffset));
13879 result = cell->cleared() ? nullptr : Code::cast(cell->value()); 13879 result = cell->cleared() ? nullptr : Code::cast(cell->value());
13880 } 13880 }
13881 return result; 13881 return result;
13882 } 13882 }
13883 13883
13884 13884 void ObjectVisitor::VisitCodeTarget(Code* host, RelocInfo* rinfo) {
13885 void ObjectVisitor::VisitCodeTarget(RelocInfo* rinfo) {
13886 DCHECK(RelocInfo::IsCodeTarget(rinfo->rmode())); 13885 DCHECK(RelocInfo::IsCodeTarget(rinfo->rmode()));
13887 Object* old_pointer = Code::GetCodeFromTargetAddress(rinfo->target_address()); 13886 Object* old_pointer = Code::GetCodeFromTargetAddress(rinfo->target_address());
13888 Object* new_pointer = old_pointer; 13887 Object* new_pointer = old_pointer;
13889 VisitPointer(&new_pointer); 13888 VisitPointer(host, &new_pointer);
13890 DCHECK_EQ(old_pointer, new_pointer); 13889 DCHECK_EQ(old_pointer, new_pointer);
13891 } 13890 }
13892 13891
13893 13892 void ObjectVisitor::VisitCodeAgeSequence(Code* host, RelocInfo* rinfo) {
13894 void ObjectVisitor::VisitCodeAgeSequence(RelocInfo* rinfo) {
13895 DCHECK(RelocInfo::IsCodeAgeSequence(rinfo->rmode())); 13893 DCHECK(RelocInfo::IsCodeAgeSequence(rinfo->rmode()));
13896 Object* old_pointer = rinfo->code_age_stub(); 13894 Object* old_pointer = rinfo->code_age_stub();
13897 Object* new_pointer = old_pointer; 13895 Object* new_pointer = old_pointer;
13898 if (old_pointer != nullptr) { 13896 if (old_pointer != nullptr) {
13899 VisitPointer(&new_pointer); 13897 VisitPointer(host, &new_pointer);
13900 DCHECK_EQ(old_pointer, new_pointer); 13898 DCHECK_EQ(old_pointer, new_pointer);
13901 } 13899 }
13902 } 13900 }
13903 13901
13904 13902 void ObjectVisitor::VisitCodeEntry(JSFunction* host, Address entry_address) {
13905 void ObjectVisitor::VisitCodeEntry(Address entry_address) {
13906 Object* old_pointer = Code::GetObjectFromEntryAddress(entry_address); 13903 Object* old_pointer = Code::GetObjectFromEntryAddress(entry_address);
13907 Object* new_pointer = old_pointer; 13904 Object* new_pointer = old_pointer;
13908 VisitPointer(&new_pointer); 13905 VisitPointer(host, &new_pointer);
13909 DCHECK_EQ(old_pointer, new_pointer); 13906 DCHECK_EQ(old_pointer, new_pointer);
13910 } 13907 }
13911 13908
13912 13909 void ObjectVisitor::VisitCellPointer(Code* host, RelocInfo* rinfo) {
13913 void ObjectVisitor::VisitCell(RelocInfo* rinfo) {
13914 DCHECK(rinfo->rmode() == RelocInfo::CELL); 13910 DCHECK(rinfo->rmode() == RelocInfo::CELL);
13915 Object* old_pointer = rinfo->target_cell(); 13911 Object* old_pointer = rinfo->target_cell();
13916 Object* new_pointer = old_pointer; 13912 Object* new_pointer = old_pointer;
13917 VisitPointer(&new_pointer); 13913 VisitPointer(host, &new_pointer);
13918 DCHECK_EQ(old_pointer, new_pointer); 13914 DCHECK_EQ(old_pointer, new_pointer);
13919 } 13915 }
13920 13916
13921 13917 void ObjectVisitor::VisitDebugTarget(Code* host, RelocInfo* rinfo) {
13922 void ObjectVisitor::VisitDebugTarget(RelocInfo* rinfo) {
13923 DCHECK(RelocInfo::IsDebugBreakSlot(rinfo->rmode()) && 13918 DCHECK(RelocInfo::IsDebugBreakSlot(rinfo->rmode()) &&
13924 rinfo->IsPatchedDebugBreakSlotSequence()); 13919 rinfo->IsPatchedDebugBreakSlotSequence());
13925 Object* old_pointer = 13920 Object* old_pointer =
13926 Code::GetCodeFromTargetAddress(rinfo->debug_call_address()); 13921 Code::GetCodeFromTargetAddress(rinfo->debug_call_address());
13927 Object* new_pointer = old_pointer; 13922 Object* new_pointer = old_pointer;
13928 VisitPointer(&new_pointer); 13923 VisitPointer(host, &new_pointer);
13929 DCHECK_EQ(old_pointer, new_pointer); 13924 DCHECK_EQ(old_pointer, new_pointer);
13930 } 13925 }
13931 13926
13932 13927 void ObjectVisitor::VisitEmbeddedPointer(Code* host, RelocInfo* rinfo) {
13933 void ObjectVisitor::VisitEmbeddedPointer(RelocInfo* rinfo) {
13934 DCHECK(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT); 13928 DCHECK(rinfo->rmode() == RelocInfo::EMBEDDED_OBJECT);
13935 Object* old_pointer = rinfo->target_object(); 13929 Object* old_pointer = rinfo->target_object();
13936 Object* new_pointer = old_pointer; 13930 Object* new_pointer = old_pointer;
13937 VisitPointer(&new_pointer); 13931 VisitPointer(host, &new_pointer);
13938 DCHECK_EQ(old_pointer, new_pointer); 13932 DCHECK_EQ(old_pointer, new_pointer);
13939 } 13933 }
13940 13934
13941 13935
13942 void ObjectVisitor::VisitExternalReference(RelocInfo* rinfo) {
13943 Address old_reference = rinfo->target_external_reference();
13944 Address new_reference = old_reference;
13945 VisitExternalReference(&new_reference);
13946 DCHECK_EQ(old_reference, new_reference);
13947 }
13948
13949
13950 void Code::InvalidateRelocation() { 13936 void Code::InvalidateRelocation() {
13951 InvalidateEmbeddedObjects(); 13937 InvalidateEmbeddedObjects();
13952 set_relocation_info(GetHeap()->empty_byte_array()); 13938 set_relocation_info(GetHeap()->empty_byte_array());
13953 } 13939 }
13954 13940
13955 13941
13956 void Code::InvalidateEmbeddedObjects() { 13942 void Code::InvalidateEmbeddedObjects() {
13957 HeapObject* undefined = GetHeap()->undefined_value(); 13943 HeapObject* undefined = GetHeap()->undefined_value();
13958 Cell* undefined_cell = GetHeap()->undefined_cell(); 13944 Cell* undefined_cell = GetHeap()->undefined_cell();
13959 int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) | 13945 int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) |
(...skipping 6693 matching lines...) Expand 10 before | Expand all | Expand 10 after
20653 // depend on this. 20639 // depend on this.
20654 return DICTIONARY_ELEMENTS; 20640 return DICTIONARY_ELEMENTS;
20655 } 20641 }
20656 DCHECK_LE(kind, LAST_ELEMENTS_KIND); 20642 DCHECK_LE(kind, LAST_ELEMENTS_KIND);
20657 return kind; 20643 return kind;
20658 } 20644 }
20659 } 20645 }
20660 20646
20661 } // namespace internal 20647 } // namespace internal
20662 } // namespace v8 20648 } // namespace v8
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/objects-body-descriptors-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698