V8 Project
v8::internal::ReplacingVisitor Class Reference
+ Inheritance diagram for v8::internal::ReplacingVisitor:
+ Collaboration diagram for v8::internal::ReplacingVisitor:

Public Member Functions

 ReplacingVisitor (Code *original, Code *substitution)
 
virtual void VisitPointers (Object **start, Object **end)
 
virtual void VisitCodeEntry (Address entry)
 
virtual void VisitCodeTarget (RelocInfo *rinfo)
 
virtual void VisitDebugTarget (RelocInfo *rinfo)
 

Private Attributes

Codeoriginal_
 
Codesubstitution_
 

Detailed Description

Definition at line 929 of file liveedit.cc.

Constructor & Destructor Documentation

◆ ReplacingVisitor()

v8::internal::ReplacingVisitor::ReplacingVisitor ( Code original,
Code substitution 
)
inlineexplicit

Definition at line 931 of file liveedit.cc.

932  : original_(original), substitution_(substitution) {
933  }

Member Function Documentation

◆ VisitCodeEntry()

virtual void v8::internal::ReplacingVisitor::VisitCodeEntry ( Address  entry)
inlinevirtual

Definition at line 943 of file liveedit.cc.

943  {
945  Address substitution_entry = substitution_->instruction_start();
946  Memory::Address_at(entry) = substitution_entry;
947  }
948  }
byte * instruction_start()
Definition: objects-inl.h:6176
static Object * GetObjectFromEntryAddress(Address location_of_address)
Definition: objects-inl.h:5029
static Address & Address_at(Address addr)
Definition: v8memory.h:56
byte * Address
Definition: globals.h:101

References v8::internal::Memory::Address_at(), v8::internal::Code::GetObjectFromEntryAddress(), v8::internal::Code::instruction_start(), original_, and substitution_.

+ Here is the call graph for this function:

◆ VisitCodeTarget()

virtual void v8::internal::ReplacingVisitor::VisitCodeTarget ( RelocInfo rinfo)
inlinevirtual

Definition at line 950 of file liveedit.cc.

950  {
951  if (RelocInfo::IsCodeTarget(rinfo->rmode()) &&
952  Code::GetCodeFromTargetAddress(rinfo->target_address()) == original_) {
953  Address substitution_entry = substitution_->instruction_start();
954  rinfo->set_target_address(substitution_entry);
955  }
956  }
static Code * GetCodeFromTargetAddress(Address address)
Definition: objects-inl.h:5018
static bool IsCodeTarget(Mode mode)
Definition: assembler.h:399

References v8::internal::Code::GetCodeFromTargetAddress(), v8::internal::Code::instruction_start(), v8::internal::RelocInfo::IsCodeTarget(), original_, v8::internal::RelocInfo::rmode(), and substitution_.

Referenced by VisitDebugTarget().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ VisitDebugTarget()

virtual void v8::internal::ReplacingVisitor::VisitDebugTarget ( RelocInfo rinfo)
inlinevirtual

Definition at line 958 of file liveedit.cc.

958  {
959  VisitCodeTarget(rinfo);
960  }
virtual void VisitCodeTarget(RelocInfo *rinfo)
Definition: liveedit.cc:950

References VisitCodeTarget().

+ Here is the call graph for this function:

◆ VisitPointers()

virtual void v8::internal::ReplacingVisitor::VisitPointers ( Object **  start,
Object **  end 
)
inlinevirtual

Definition at line 935 of file liveedit.cc.

935  {
936  for (Object** p = start; p < end; p++) {
937  if (*p == original_) {
938  *p = substitution_;
939  }
940  }
941  }
kSerializedDataOffset Object
Definition: objects-inl.h:5322

References original_, and substitution_.

Member Data Documentation

◆ original_

Code* v8::internal::ReplacingVisitor::original_
private

Definition at line 963 of file liveedit.cc.

Referenced by VisitCodeEntry(), VisitCodeTarget(), and VisitPointers().

◆ substitution_

Code* v8::internal::ReplacingVisitor::substitution_
private

Definition at line 964 of file liveedit.cc.

Referenced by VisitCodeEntry(), VisitCodeTarget(), and VisitPointers().


The documentation for this class was generated from the following file: