V8 Project
v8::internal::RelocInfo Class Reference

#include <assembler.h>

+ Collaboration diagram for v8::internal::RelocInfo:

Public Types

enum  Mode {
  CODE_TARGET , CODE_TARGET_WITH_ID , CONSTRUCT_CALL , DEBUG_BREAK ,
  EMBEDDED_OBJECT , CELL , RUNTIME_ENTRY , JS_RETURN ,
  COMMENT , POSITION , STATEMENT_POSITION , DEBUG_BREAK_SLOT ,
  EXTERNAL_REFERENCE , INTERNAL_REFERENCE , CONST_POOL , VENEER_POOL ,
  NUMBER_OF_MODES , NONE32 , NONE64 , CODE_AGE_SEQUENCE ,
  FIRST_REAL_RELOC_MODE = CODE_TARGET , LAST_REAL_RELOC_MODE = VENEER_POOL , FIRST_PSEUDO_RELOC_MODE = CODE_AGE_SEQUENCE , LAST_PSEUDO_RELOC_MODE = CODE_AGE_SEQUENCE ,
  LAST_CODE_ENUM = DEBUG_BREAK , LAST_GCED_ENUM = CELL , LAST_COMPACT_ENUM = CODE_TARGET_WITH_ID , LAST_STANDARD_NONCOMPACT_ENUM = INTERNAL_REFERENCE
}
 

Public Member Functions

 RelocInfo ()
 
 RelocInfo (byte *pc, Mode rmode, intptr_t data, Code *host)
 
 RelocInfo (byte *pc, double data64)
 
bytepc () const
 
void set_pc (byte *pc)
 
Mode rmode () const
 
intptr_t data () const
 
double data64 () const
 
uint64_t raw_data64 ()
 
Codehost () const
 
void set_host (Code *host)
 
 INLINE (void apply(intptr_t delta, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED))
 
bool IsCodedSpecially ()
 
bool IsInConstantPool ()
 
 INLINE (Address target_address())
 
 INLINE (void set_target_address(Address target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED))
 
 INLINE (Object *target_object())
 
 INLINE (Handle< Object > target_object_handle(Assembler *origin))
 
 INLINE (void set_target_object(Object *target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED))
 
 INLINE (Address target_runtime_entry(Assembler *origin))
 
 INLINE (void set_target_runtime_entry(Address target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED))
 
 INLINE (Cell *target_cell())
 
 INLINE (Handle< Cell > target_cell_handle())
 
 INLINE (void set_target_cell(Cell *cell, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED))
 
 INLINE (Handle< Object > code_age_stub_handle(Assembler *origin))
 
 INLINE (Code *code_age_stub())
 
 INLINE (void set_code_age_stub(Code *stub, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED))
 
 INLINE (Address constant_pool_entry_address())
 
 INLINE (Address target_address_address())
 
 INLINE (int target_address_size())
 
 INLINE (Address target_reference())
 
 INLINE (Address call_address())
 
 INLINE (void set_call_address(Address target))
 
 INLINE (Object *call_object())
 
 INLINE (void set_call_object(Object *target))
 
 INLINE (Object **call_object_address())
 
 INLINE (void WipeOut())
 
template<typename StaticVisitor >
void Visit (Heap *heap)
 
void Visit (Isolate *isolate, ObjectVisitor *v)
 
void PatchCode (byte *instructions, int instruction_count)
 
void PatchCodeWithCall (Address target, int guard_bytes)
 
 INLINE (bool IsPatchedReturnSequence())
 
 INLINE (bool IsPatchedDebugBreakSlotSequence())
 

Static Public Member Functions

static bool IsRealRelocMode (Mode mode)
 
static bool IsPseudoRelocMode (Mode mode)
 
static bool IsConstructCall (Mode mode)
 
static bool IsCodeTarget (Mode mode)
 
static bool IsEmbeddedObject (Mode mode)
 
static bool IsRuntimeEntry (Mode mode)
 
static bool IsGCRelocMode (Mode mode)
 
static bool IsJSReturn (Mode mode)
 
static bool IsComment (Mode mode)
 
static bool IsConstPool (Mode mode)
 
static bool IsVeneerPool (Mode mode)
 
static bool IsPosition (Mode mode)
 
static bool IsStatementPosition (Mode mode)
 
static bool IsExternalReference (Mode mode)
 
static bool IsInternalReference (Mode mode)
 
static bool IsDebugBreakSlot (Mode mode)
 
static bool IsNone (Mode mode)
 
static bool IsCodeAgeSequence (Mode mode)
 
static int ModeMask (Mode mode)
 
static bool IsEqual (RelocInfo first, RelocInfo second)
 

Static Public Attributes

static const int kNoPosition = -1
 
static const char *const kFillerCommentString = "DEOPTIMIZATION PADDING"
 
static const int kMinRelocCommentSize = 3 + kPointerSize
 
static const int kMaxCallSize = 6
 
static const int kMaxSmallPCDelta = kSmallPCDeltaMask
 
static const int kCodeTargetMask = (1 << (LAST_CODE_ENUM + 1)) - 1
 
static const int kPositionMask = 1 << POSITION | 1 << STATEMENT_POSITION
 
static const int kDataMask
 
static const int kApplyMask
 

Private Attributes

bytepc_
 
Mode rmode_
 
union {
   intptr_t   data_
 
   double   data64_
 
}; 
 
Codehost_
 
Address reconstructed_adr_ptr_
 

Friends

class RelocIterator
 

Detailed Description

Definition at line 306 of file assembler.h.

Member Enumeration Documentation

◆ Mode

Enumerator
CODE_TARGET 
CODE_TARGET_WITH_ID 
CONSTRUCT_CALL 
DEBUG_BREAK 
EMBEDDED_OBJECT 
CELL 
RUNTIME_ENTRY 
JS_RETURN 
COMMENT 
POSITION 
STATEMENT_POSITION 
DEBUG_BREAK_SLOT 
EXTERNAL_REFERENCE 
INTERNAL_REFERENCE 
CONST_POOL 
VENEER_POOL 
NUMBER_OF_MODES 
NONE32 
NONE64 
CODE_AGE_SEQUENCE 
FIRST_REAL_RELOC_MODE 
LAST_REAL_RELOC_MODE 
FIRST_PSEUDO_RELOC_MODE 
LAST_PSEUDO_RELOC_MODE 
LAST_CODE_ENUM 
LAST_GCED_ENUM 
LAST_COMPACT_ENUM 
LAST_STANDARD_NONCOMPACT_ENUM 

Definition at line 336 of file assembler.h.

336  {
337  // Please note the order is important (see IsCodeTarget, IsGCRelocMode).
338  CODE_TARGET, // Code target which is not any of the above.
340  CONSTRUCT_CALL, // code target that is a call to a JavaScript constructor.
341  DEBUG_BREAK, // Code target for the debugger statement.
343  CELL,
344 
345  // Everything after runtime_entry (inclusive) is not GC'ed.
347  JS_RETURN, // Marks start of the ExitJSFrame code.
348  COMMENT,
349  POSITION, // See comment for kNoPosition above.
350  STATEMENT_POSITION, // See comment for kNoPosition above.
351  DEBUG_BREAK_SLOT, // Additional code inserted for debug break slot.
352  EXTERNAL_REFERENCE, // The address of an external C++ function.
353  INTERNAL_REFERENCE, // An address inside the same function.
354 
355  // Marks constant and veneer pools. Only used on ARM and ARM64.
356  // They use a custom noncompact encoding.
357  CONST_POOL,
358  VENEER_POOL,
359 
360  // add more as needed
361  // Pseudo-types
362  NUMBER_OF_MODES, // There are at most 15 modes with noncompact encoding.
363  NONE32, // never recorded 32-bit value
364  NONE64, // never recorded 64-bit value
365  CODE_AGE_SEQUENCE, // Not stored in RelocInfo array, used explictly by
366  // code aging.
373  // Modes <= LAST_COMPACT_ENUM are guaranteed to have compact encoding.
376  };

Constructor & Destructor Documentation

◆ RelocInfo() [1/3]

v8::internal::RelocInfo::RelocInfo ( )
inline

Definition at line 378 of file assembler.h.

378 {}

◆ RelocInfo() [2/3]

v8::internal::RelocInfo::RelocInfo ( byte pc,
Mode  rmode,
intptr_t  data,
Code host 
)
inline

Definition at line 380 of file assembler.h.

381  : pc_(pc), rmode_(rmode), data_(data), host_(host) {
382  }
byte * pc() const
Definition: assembler.h:457
Code * host() const
Definition: assembler.h:463
intptr_t data() const
Definition: assembler.h:460
Mode rmode() const
Definition: assembler.h:459

◆ RelocInfo() [3/3]

v8::internal::RelocInfo::RelocInfo ( byte pc,
double  data64 
)
inline

Definition at line 383 of file assembler.h.

385  }
double data64() const
Definition: assembler.h:461
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be NULL

Member Function Documentation

◆ data()

intptr_t v8::internal::RelocInfo::data ( ) const
inline

Definition at line 460 of file assembler.h.

460 { return data_; }

References data_.

Referenced by v8::internal::ComputeCodeOffsetFromPcOffset(), v8::internal::ComputePcOffsetFromCodeOffset(), IsEqual(), v8::internal::BreakLocationIterator::Next(), v8::internal::PatchPositionsInCode(), v8::internal::Code::PrintDeoptLocation(), v8::internal::RUNTIME_FUNCTION(), v8::internal::Code::SourcePosition(), and v8::internal::Code::SourceStatementPosition().

+ Here is the caller graph for this function:

◆ data64()

double v8::internal::RelocInfo::data64 ( ) const
inline

Definition at line 461 of file assembler.h.

461 { return data64_; }

References data64_.

◆ host()

Code* v8::internal::RelocInfo::host ( ) const
inline

Definition at line 463 of file assembler.h.

463 { return host_; }

References host_.

Referenced by v8::internal::Code::ClearInlineCaches(), v8::internal::MarkCompactCollector::RecordRelocSlot(), and set_host().

+ Here is the caller graph for this function:

◆ INLINE() [1/26]

v8::internal::RelocInfo::INLINE ( Address   call_address())

◆ INLINE() [2/26]

v8::internal::RelocInfo::INLINE ( Address   constant_pool_entry_address())

◆ INLINE() [3/26]

v8::internal::RelocInfo::INLINE ( Address   target_address())

◆ INLINE() [4/26]

v8::internal::RelocInfo::INLINE ( Address   target_address_address())

◆ INLINE() [5/26]

v8::internal::RelocInfo::INLINE ( Address   target_reference())

◆ INLINE() [6/26]

v8::internal::RelocInfo::INLINE ( Address   target_runtime_entryAssembler *origin)

◆ INLINE() [7/26]

v8::internal::RelocInfo::INLINE ( bool   IsPatchedDebugBreakSlotSequence())

◆ INLINE() [8/26]

v8::internal::RelocInfo::INLINE ( bool   IsPatchedReturnSequence())

◆ INLINE() [9/26]

v8::internal::RelocInfo::INLINE ( Cell target_cell())

◆ INLINE() [10/26]

v8::internal::RelocInfo::INLINE ( Code code_age_stub())

◆ INLINE() [11/26]

v8::internal::RelocInfo::INLINE ( Handle< Cell >   target_cell_handle())

◆ INLINE() [12/26]

v8::internal::RelocInfo::INLINE ( Handle< Object >   code_age_stub_handleAssembler *origin)

◆ INLINE() [13/26]

v8::internal::RelocInfo::INLINE ( Handle< Object >   target_object_handleAssembler *origin)

◆ INLINE() [14/26]

v8::internal::RelocInfo::INLINE ( int   target_address_size())

◆ INLINE() [15/26]

v8::internal::RelocInfo::INLINE ( Object **  call_object_address())

◆ INLINE() [16/26]

v8::internal::RelocInfo::INLINE ( Object call_object())

◆ INLINE() [17/26]

v8::internal::RelocInfo::INLINE ( Object target_object())

◆ INLINE() [18/26]

v8::internal::RelocInfo::INLINE ( void   applyintptr_t delta, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)

◆ INLINE() [19/26]

v8::internal::RelocInfo::INLINE ( void   set_call_addressAddress target)

◆ INLINE() [20/26]

v8::internal::RelocInfo::INLINE ( void   set_call_objectObject *target)

◆ INLINE() [21/26]

v8::internal::RelocInfo::INLINE ( void   set_code_age_stubCode *stub, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)

◆ INLINE() [22/26]

v8::internal::RelocInfo::INLINE ( void   set_target_addressAddress target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)

◆ INLINE() [23/26]

v8::internal::RelocInfo::INLINE ( void   set_target_cellCell *cell, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)

◆ INLINE() [24/26]

v8::internal::RelocInfo::INLINE ( void   set_target_objectObject *target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)

◆ INLINE() [25/26]

v8::internal::RelocInfo::INLINE ( void   set_target_runtime_entryAddress target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)

◆ INLINE() [26/26]

v8::internal::RelocInfo::INLINE ( void   WipeOut())

◆ IsCodeAgeSequence()

static bool v8::internal::RelocInfo::IsCodeAgeSequence ( Mode  mode)
inlinestatic

Definition at line 442 of file assembler.h.

442  {
443  return mode == CODE_AGE_SEQUENCE;
444  }
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long mode(MIPS only)") DEFINE_BOOL(enable_always_align_csp

References CODE_AGE_SEQUENCE, and mode().

Referenced by Visit(), and v8::internal::PointersUpdatingVisitor::VisitCodeAgeSequence().

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

◆ IsCodedSpecially()

bool v8::internal::RelocInfo::IsCodedSpecially ( )

Referenced by v8::internal::Serializer::ObjectSerializer::VisitEmbeddedPointer(), v8::internal::Serializer::ObjectSerializer::VisitExternalReference(), and v8::internal::Serializer::ObjectSerializer::VisitRuntimeEntry().

+ Here is the caller graph for this function:

◆ IsCodeTarget()

static bool v8::internal::RelocInfo::IsCodeTarget ( Mode  mode)
inlinestatic

Definition at line 399 of file assembler.h.

399  {
400  return mode <= LAST_CODE_ENUM;
401  }

References LAST_CODE_ENUM, and mode().

Referenced by v8::internal::Code::CopyFrom(), v8::internal::Assembler::emit_code_target(), v8::internal::BreakLocationIterator::IsStepInLocation(), v8::internal::BreakLocationIterator::Next(), v8::internal::Debug::PrepareStep(), v8::internal::MarkCompactCollector::RecordRelocSlot(), v8::internal::BreakLocationIterator::SetDebugBreakAtIC(), v8::internal::SlotTypeForRMode(), Visit(), v8::internal::PointersUpdatingVisitor::VisitCodeTarget(), and v8::internal::ReplacingVisitor::VisitCodeTarget().

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

◆ IsComment()

static bool v8::internal::RelocInfo::IsComment ( Mode  mode)
inlinestatic

Definition at line 415 of file assembler.h.

415  {
416  return mode == COMMENT;
417  }

References COMMENT, and mode().

+ Here is the call graph for this function:

◆ IsConstPool()

static bool v8::internal::RelocInfo::IsConstPool ( Mode  mode)
inlinestatic

Definition at line 418 of file assembler.h.

418  {
419  return mode == CONST_POOL;
420  }

References CONST_POOL, and mode().

Referenced by v8::internal::ComputeCodeOffsetFromPcOffset(), and v8::internal::ComputePcOffsetFromCodeOffset().

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

◆ IsConstructCall()

static bool v8::internal::RelocInfo::IsConstructCall ( Mode  mode)
inlinestatic

Definition at line 396 of file assembler.h.

396  {
397  return mode == CONSTRUCT_CALL;
398  }

References CONSTRUCT_CALL, and mode().

Referenced by v8::internal::DebugBreakForIC(), v8::internal::BreakLocationIterator::IsStepInLocation(), v8::internal::BreakLocationIterator::Next(), v8::internal::Debug::PrepareStep(), and v8::internal::BreakLocationIterator::PrepareStepIn().

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

◆ IsDebugBreakSlot()

static bool v8::internal::RelocInfo::IsDebugBreakSlot ( Mode  mode)
inlinestatic

Definition at line 436 of file assembler.h.

436  {
437  return mode == DEBUG_BREAK_SLOT;
438  }

References DEBUG_BREAK_SLOT, and mode().

Referenced by v8::internal::ComputePcOffsetFromCodeOffset(), v8::internal::Debug::SetAfterBreakTarget(), v8::internal::SlotTypeForRMode(), Visit(), and v8::internal::PointersUpdatingVisitor::VisitDebugTarget().

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

◆ IsEmbeddedObject()

static bool v8::internal::RelocInfo::IsEmbeddedObject ( Mode  mode)
inlinestatic

Definition at line 402 of file assembler.h.

402  {
403  return mode == EMBEDDED_OBJECT;
404  }

References EMBEDDED_OBJECT, and mode().

Referenced by v8::internal::MarkCompactCollector::RecordRelocSlot(), and v8::internal::SlotTypeForRMode().

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

◆ IsEqual()

static bool v8::internal::RelocInfo::IsEqual ( RelocInfo  first,
RelocInfo  second 
)
inlinestatic

Definition at line 449 of file assembler.h.

449  {
450  return first.rmode() == second.rmode() &&
451  (first.rmode() == RelocInfo::NONE64 ?
452  first.raw_data64() == second.raw_data64() :
453  first.data() == second.data());
454  }

References data(), NONE64, raw_data64(), and rmode().

+ Here is the call graph for this function:

◆ IsExternalReference()

static bool v8::internal::RelocInfo::IsExternalReference ( Mode  mode)
inlinestatic

Definition at line 430 of file assembler.h.

430  {
431  return mode == EXTERNAL_REFERENCE;
432  }

References EXTERNAL_REFERENCE, and mode().

+ Here is the call graph for this function:

◆ IsGCRelocMode()

static bool v8::internal::RelocInfo::IsGCRelocMode ( Mode  mode)
inlinestatic

Definition at line 409 of file assembler.h.

409  {
410  return mode <= LAST_GCED_ENUM;
411  }

References LAST_GCED_ENUM, and mode().

+ Here is the call graph for this function:

◆ IsInConstantPool()

bool v8::internal::RelocInfo::IsInConstantPool ( )

Referenced by v8::internal::MarkCompactCollector::RecordRelocSlot(), v8::internal::Serializer::ObjectSerializer::VisitCell(), v8::internal::Serializer::ObjectSerializer::VisitCodeTarget(), and v8::internal::Serializer::ObjectSerializer::VisitEmbeddedPointer().

+ Here is the caller graph for this function:

◆ IsInternalReference()

static bool v8::internal::RelocInfo::IsInternalReference ( Mode  mode)
inlinestatic

Definition at line 433 of file assembler.h.

433  {
434  return mode == INTERNAL_REFERENCE;
435  }

References INTERNAL_REFERENCE, and mode().

+ Here is the call graph for this function:

◆ IsJSReturn()

static bool v8::internal::RelocInfo::IsJSReturn ( Mode  mode)
inlinestatic

Definition at line 412 of file assembler.h.

412  {
413  return mode == JS_RETURN;
414  }

References JS_RETURN, and mode().

Referenced by v8::internal::BreakLocationIterator::ClearDebugBreak(), v8::internal::Debug::IsBreakAtReturn(), v8::internal::BreakLocationIterator::IsDebugBreak(), v8::internal::BreakLocationIterator::IsExit(), v8::internal::BreakLocationIterator::Next(), v8::internal::Debug::SetAfterBreakTarget(), v8::internal::BreakLocationIterator::SetDebugBreak(), v8::internal::SlotTypeForRMode(), Visit(), and v8::internal::PointersUpdatingVisitor::VisitDebugTarget().

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

◆ IsNone()

static bool v8::internal::RelocInfo::IsNone ( Mode  mode)
inlinestatic

Definition at line 439 of file assembler.h.

439  {
440  return mode == NONE32 || mode == NONE64;
441  }

References mode(), NONE32, and NONE64.

Referenced by v8::internal::Assembler::emit(), v8::internal::Assembler::emit_w(), v8::internal::Assembler::emitp(), v8::internal::BASE_EMBEDDED< Visitor >::is_int16(), v8::internal::BASE_EMBEDDED< Visitor >::is_int8(), v8::internal::BASE_EMBEDDED< Visitor >::is_zero(), and v8::internal::MacroAssembler::Move().

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

◆ IsPosition()

static bool v8::internal::RelocInfo::IsPosition ( Mode  mode)
inlinestatic

Definition at line 424 of file assembler.h.

424  {
425  return mode == POSITION || mode == STATEMENT_POSITION;
426  }

References mode(), POSITION, and STATEMENT_POSITION.

Referenced by v8::internal::BreakLocationIterator::Next(), and v8::internal::PatchPositionsInCode().

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

◆ IsPseudoRelocMode()

static bool v8::internal::RelocInfo::IsPseudoRelocMode ( Mode  mode)
inlinestatic

Definition at line 391 of file assembler.h.

391  {
393  return mode >= FIRST_PSEUDO_RELOC_MODE &&
395  }
static bool IsRealRelocMode(Mode mode)
Definition: assembler.h:387
#define DCHECK(condition)
Definition: logging.h:205

References DCHECK, FIRST_PSEUDO_RELOC_MODE, IsRealRelocMode(), LAST_PSEUDO_RELOC_MODE, and mode().

+ Here is the call graph for this function:

◆ IsRealRelocMode()

static bool v8::internal::RelocInfo::IsRealRelocMode ( Mode  mode)
inlinestatic

Definition at line 387 of file assembler.h.

387  {
388  return mode >= FIRST_REAL_RELOC_MODE &&
390  }

References FIRST_REAL_RELOC_MODE, LAST_REAL_RELOC_MODE, and mode().

Referenced by IsPseudoRelocMode(), and v8::internal::PatchPositionsInCode().

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

◆ IsRuntimeEntry()

static bool v8::internal::RelocInfo::IsRuntimeEntry ( Mode  mode)
inlinestatic

Definition at line 405 of file assembler.h.

405  {
406  return mode == RUNTIME_ENTRY;
407  }

References mode(), and RUNTIME_ENTRY.

Referenced by v8::internal::Code::CopyFrom(), v8::internal::Assembler::emit_runtime_entry(), v8::internal::Code::PrintDeoptLocation(), and Visit().

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

◆ IsStatementPosition()

static bool v8::internal::RelocInfo::IsStatementPosition ( Mode  mode)
inlinestatic

Definition at line 427 of file assembler.h.

427  {
428  return mode == STATEMENT_POSITION;
429  }

References mode(), and STATEMENT_POSITION.

Referenced by v8::internal::BreakLocationIterator::Next(), and v8::internal::Code::SourceStatementPosition().

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

◆ IsVeneerPool()

static bool v8::internal::RelocInfo::IsVeneerPool ( Mode  mode)
inlinestatic

Definition at line 421 of file assembler.h.

421  {
422  return mode == VENEER_POOL;
423  }

References mode(), and VENEER_POOL.

+ Here is the call graph for this function:

◆ ModeMask()

◆ PatchCode()

void v8::internal::RelocInfo::PatchCode ( byte instructions,
int  instruction_count 
)

◆ PatchCodeWithCall()

void v8::internal::RelocInfo::PatchCodeWithCall ( Address  target,
int  guard_bytes 
)

◆ pc()

◆ raw_data64()

uint64_t v8::internal::RelocInfo::raw_data64 ( )
inline

Definition at line 462 of file assembler.h.

462 { return bit_cast<uint64_t>(data64_); }

References data64_.

Referenced by IsEqual().

+ Here is the caller graph for this function:

◆ rmode()

◆ set_host()

void v8::internal::RelocInfo::set_host ( Code host)
inline

Definition at line 464 of file assembler.h.

464 { host_ = host; }

References host(), and host_.

Referenced by v8::internal::TypeFeedbackOracle::RelocateRelocInfos().

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

◆ set_pc()

void v8::internal::RelocInfo::set_pc ( byte pc)
inline

Definition at line 458 of file assembler.h.

458 { pc_ = pc; }

References pc(), and pc_.

Referenced by v8::internal::TypeFeedbackOracle::RelocateRelocInfos().

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

◆ Visit() [1/2]

template<typename StaticVisitor >
void v8::internal::RelocInfo::Visit ( Heap heap)
inline

Definition at line 351 of file assembler-arm-inl.h.

351  {
354  StaticVisitor::VisitEmbeddedPointer(heap, this);
355  } else if (RelocInfo::IsCodeTarget(mode)) {
356  StaticVisitor::VisitCodeTarget(heap, this);
357  } else if (mode == RelocInfo::CELL) {
358  StaticVisitor::VisitCell(heap, this);
359  } else if (mode == RelocInfo::EXTERNAL_REFERENCE) {
360  StaticVisitor::VisitExternalReference(this);
361  } else if (RelocInfo::IsCodeAgeSequence(mode)) {
362  StaticVisitor::VisitCodeAgeSequence(heap, this);
363  } else if (heap->isolate()->debug()->has_break_points() &&
365  IsPatchedReturnSequence()) ||
367  IsPatchedDebugBreakSlotSequence()))) {
368  StaticVisitor::VisitDebugTarget(heap, this);
369  } else if (RelocInfo::IsRuntimeEntry(mode)) {
370  StaticVisitor::VisitRuntimeEntry(this);
371  }
372 }
static bool IsDebugBreakSlot(Mode mode)
Definition: assembler.h:436
static bool IsJSReturn(Mode mode)
Definition: assembler.h:412
static bool IsRuntimeEntry(Mode mode)
Definition: assembler.h:405
static bool IsCodeTarget(Mode mode)
Definition: assembler.h:399
static bool IsCodeAgeSequence(Mode mode)
Definition: assembler.h:442

References CELL, v8::internal::Isolate::debug(), EMBEDDED_OBJECT, EXTERNAL_REFERENCE, v8::internal::Debug::has_break_points(), IsCodeAgeSequence(), IsCodeTarget(), IsDebugBreakSlot(), IsJSReturn(), v8::internal::Heap::isolate(), IsRuntimeEntry(), mode(), and rmode().

Referenced by v8::internal::Code::CodeIterateBody(), and v8::internal::UpdateSlot().

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

◆ Visit() [2/2]

void v8::internal::RelocInfo::Visit ( Isolate isolate,
ObjectVisitor v 
)
inline

Definition at line 326 of file assembler-arm-inl.h.

326  {
329  visitor->VisitEmbeddedPointer(this);
330  } else if (RelocInfo::IsCodeTarget(mode)) {
331  visitor->VisitCodeTarget(this);
332  } else if (mode == RelocInfo::CELL) {
333  visitor->VisitCell(this);
334  } else if (mode == RelocInfo::EXTERNAL_REFERENCE) {
335  visitor->VisitExternalReference(this);
336  } else if (RelocInfo::IsCodeAgeSequence(mode)) {
337  visitor->VisitCodeAgeSequence(this);
338  } else if (((RelocInfo::IsJSReturn(mode) &&
339  IsPatchedReturnSequence()) ||
341  IsPatchedDebugBreakSlotSequence())) &&
342  isolate->debug()->has_break_points()) {
343  visitor->VisitDebugTarget(this);
344  } else if (RelocInfo::IsRuntimeEntry(mode)) {
345  visitor->VisitRuntimeEntry(this);
346  }
347 }

References CELL, v8::internal::Isolate::debug(), EMBEDDED_OBJECT, EXTERNAL_REFERENCE, v8::internal::Debug::has_break_points(), IsCodeAgeSequence(), IsCodeTarget(), IsDebugBreakSlot(), IsJSReturn(), IsRuntimeEntry(), mode(), and rmode().

+ Here is the call graph for this function:

Friends And Related Function Documentation

◆ RelocIterator

friend class RelocIterator
friend

Definition at line 610 of file assembler.h.

Member Data Documentation

◆ 

union { ... }

◆ data64_

double v8::internal::RelocInfo::data64_

Definition at line 602 of file assembler.h.

Referenced by data64(), and raw_data64().

◆ data_

◆ host_

Code* v8::internal::RelocInfo::host_
private

Definition at line 604 of file assembler.h.

Referenced by host(), v8::internal::RelocIterator::RelocIterator(), and set_host().

◆ kApplyMask

const int v8::internal::RelocInfo::kApplyMask
static

Definition at line 591 of file assembler.h.

Referenced by v8::internal::Code::CopyFrom(), and v8::internal::Code::Relocate().

◆ kCodeTargetMask

const int v8::internal::RelocInfo::kCodeTargetMask = (1 << (LAST_CODE_ENUM + 1)) - 1
static

◆ kDataMask

const int v8::internal::RelocInfo::kDataMask
static
Initial value:
=
static const int kPositionMask
Definition: assembler.h:588

Definition at line 589 of file assembler.h.

◆ kFillerCommentString

const char *const v8::internal::RelocInfo::kFillerCommentString = "DEOPTIMIZATION PADDING"
static

Definition at line 323 of file assembler.h.

◆ kMaxCallSize

const int v8::internal::RelocInfo::kMaxCallSize = 6
static

Definition at line 331 of file assembler.h.

◆ kMaxSmallPCDelta

const int v8::internal::RelocInfo::kMaxSmallPCDelta = kSmallPCDeltaMask
static

Definition at line 334 of file assembler.h.

◆ kMinRelocCommentSize

const int v8::internal::RelocInfo::kMinRelocCommentSize = 3 + kPointerSize
static

Definition at line 328 of file assembler.h.

◆ kNoPosition

const int v8::internal::RelocInfo::kNoPosition = -1
static

Definition at line 317 of file assembler.h.

Referenced by v8::internal::Parser::CheckConflictingVarDeclarations(), v8::internal::Debug::ClearStepNext(), v8::internal::CompileToplevel(), v8::internal::DebugEvaluate(), v8::internal::Parser::DesugarLetBindingsInForStatement(), v8::internal::Debug::FindSharedFunctionInfoInScript(), v8::internal::ParserTraits::GetIterator(), v8::internal::ParserTraits::GetLiteralTheHole(), v8::internal::Parser::InitializeForEachStatement(), v8::internal::HSourcePosition::IsUnknown(), v8::internal::CompilationCacheTable::Lookup(), v8::internal::CompilationCache::LookupEval(), v8::internal::Scope::LookupFunctionVar(), v8::internal::ParserBase< Traits >::ParseArrowFunctionLiteral(), v8::internal::Parser::ParseBlock(), v8::internal::Parser::ParseClassDeclaration(), v8::internal::Parser::ParseEagerFunctionBody(), v8::internal::Parser::ParseForStatement(), v8::internal::Parser::ParseFunctionDeclaration(), v8::internal::Parser::ParseFunctionLiteral(), v8::internal::Parser::ParseIfStatement(), v8::internal::Parser::ParseImportDeclaration(), v8::internal::Parser::ParseLazy(), v8::internal::Parser::ParseModuleLiteral(), v8::internal::Parser::ParseModuleUrl(), v8::internal::Parser::ParseNativeDeclaration(), v8::internal::ParserBase< Traits >::ParsePropertyDefinition(), v8::internal::Parser::ParseScopedBlock(), v8::internal::Parser::ParseStatement(), v8::internal::Parser::ParseTryStatement(), v8::internal::Parser::ParseVariableDeclarations(), v8::internal::PreParserExpression::position(), v8::internal::CompilationCacheTable::Put(), v8::internal::CompilationCache::PutEval(), v8::internal::LCodeGen::RecordAndWritePosition(), v8::internal::Rewriter::Rewrite(), v8::internal::RUNTIME_FUNCTION(), v8::internal::Scope::SetDefaults(), v8::internal::Processor::SetResult(), v8::internal::FullCodeGenerator::SetSourcePosition(), v8::internal::HGraphBuilder::SetSourcePosition(), v8::internal::Code::SourcePosition(), v8::internal::Debug::ThreadInit(), and v8::internal::HSourcePosition::Unknown().

◆ kPositionMask

const int v8::internal::RelocInfo::kPositionMask = 1 << POSITION | 1 << STATEMENT_POSITION
static

◆ pc_

◆ reconstructed_adr_ptr_

Address v8::internal::RelocInfo::reconstructed_adr_ptr_
private

Definition at line 609 of file assembler.h.

◆ rmode_

Mode v8::internal::RelocInfo::rmode_
private

Definition at line 599 of file assembler.h.

Referenced by rmode(), and v8::internal::RelocIterator::SetMode().


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