V8 Project
|
#include <assembler.h>
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) | |
byte * | pc () const |
void | set_pc (byte *pc) |
Mode | rmode () const |
intptr_t | data () const |
double | data64 () const |
uint64_t | raw_data64 () |
Code * | host () 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 | |
byte * | pc_ |
Mode | rmode_ |
union { | |
intptr_t data_ | |
double data64_ | |
}; | |
Code * | host_ |
Address | reconstructed_adr_ptr_ |
Friends | |
class | RelocIterator |
Definition at line 306 of file assembler.h.
Definition at line 336 of file assembler.h.
|
inline |
Definition at line 378 of file assembler.h.
Definition at line 380 of file assembler.h.
|
inline |
Definition at line 383 of file assembler.h.
|
inline |
Definition at line 460 of file assembler.h.
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().
|
inline |
|
inline |
Definition at line 463 of file assembler.h.
References host_.
Referenced by v8::internal::Code::ClearInlineCaches(), v8::internal::MarkCompactCollector::RecordRelocSlot(), and set_host().
v8::internal::RelocInfo::INLINE | ( | Address | call_address() | ) |
v8::internal::RelocInfo::INLINE | ( | Address | constant_pool_entry_address() | ) |
v8::internal::RelocInfo::INLINE | ( | Address | target_address() | ) |
v8::internal::RelocInfo::INLINE | ( | Address | target_address_address() | ) |
v8::internal::RelocInfo::INLINE | ( | Address | target_reference() | ) |
v8::internal::RelocInfo::INLINE | ( | Address | target_runtime_entryAssembler *origin | ) |
v8::internal::RelocInfo::INLINE | ( | bool | IsPatchedDebugBreakSlotSequence() | ) |
v8::internal::RelocInfo::INLINE | ( | bool | IsPatchedReturnSequence() | ) |
v8::internal::RelocInfo::INLINE | ( | Cell * | target_cell() | ) |
v8::internal::RelocInfo::INLINE | ( | Code * | code_age_stub() | ) |
v8::internal::RelocInfo::INLINE | ( | int | target_address_size() | ) |
v8::internal::RelocInfo::INLINE | ( | Object ** | call_object_address() | ) |
v8::internal::RelocInfo::INLINE | ( | Object * | call_object() | ) |
v8::internal::RelocInfo::INLINE | ( | Object * | target_object() | ) |
v8::internal::RelocInfo::INLINE | ( | void | applyintptr_t delta, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED | ) |
v8::internal::RelocInfo::INLINE | ( | void | set_call_addressAddress target | ) |
v8::internal::RelocInfo::INLINE | ( | void | set_call_objectObject *target | ) |
v8::internal::RelocInfo::INLINE | ( | void | set_code_age_stubCode *stub, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED | ) |
v8::internal::RelocInfo::INLINE | ( | void | set_target_addressAddress target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED | ) |
v8::internal::RelocInfo::INLINE | ( | void | set_target_cellCell *cell, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED | ) |
v8::internal::RelocInfo::INLINE | ( | void | set_target_objectObject *target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED | ) |
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 | ) |
v8::internal::RelocInfo::INLINE | ( | void | WipeOut() | ) |
Definition at line 442 of file assembler.h.
References CODE_AGE_SEQUENCE, and mode().
Referenced by Visit(), and v8::internal::PointersUpdatingVisitor::VisitCodeAgeSequence().
bool v8::internal::RelocInfo::IsCodedSpecially | ( | ) |
Referenced by v8::internal::Serializer::ObjectSerializer::VisitEmbeddedPointer(), v8::internal::Serializer::ObjectSerializer::VisitExternalReference(), and v8::internal::Serializer::ObjectSerializer::VisitRuntimeEntry().
Definition at line 399 of file assembler.h.
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().
Definition at line 418 of file assembler.h.
References CONST_POOL, and mode().
Referenced by v8::internal::ComputeCodeOffsetFromPcOffset(), and v8::internal::ComputePcOffsetFromCodeOffset().
Definition at line 396 of file assembler.h.
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().
Definition at line 436 of file assembler.h.
References DEBUG_BREAK_SLOT, and mode().
Referenced by v8::internal::ComputePcOffsetFromCodeOffset(), v8::internal::Debug::SetAfterBreakTarget(), v8::internal::SlotTypeForRMode(), Visit(), and v8::internal::PointersUpdatingVisitor::VisitDebugTarget().
Definition at line 402 of file assembler.h.
References EMBEDDED_OBJECT, and mode().
Referenced by v8::internal::MarkCompactCollector::RecordRelocSlot(), and v8::internal::SlotTypeForRMode().
Definition at line 449 of file assembler.h.
References data(), NONE64, raw_data64(), and rmode().
Definition at line 430 of file assembler.h.
References EXTERNAL_REFERENCE, and mode().
Definition at line 409 of file assembler.h.
References LAST_GCED_ENUM, and mode().
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().
Definition at line 433 of file assembler.h.
References INTERNAL_REFERENCE, and mode().
Definition at line 412 of file assembler.h.
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().
Definition at line 439 of file assembler.h.
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().
Definition at line 424 of file assembler.h.
References mode(), POSITION, and STATEMENT_POSITION.
Referenced by v8::internal::BreakLocationIterator::Next(), and v8::internal::PatchPositionsInCode().
Definition at line 391 of file assembler.h.
References DCHECK, FIRST_PSEUDO_RELOC_MODE, IsRealRelocMode(), LAST_PSEUDO_RELOC_MODE, and mode().
Definition at line 387 of file assembler.h.
References FIRST_REAL_RELOC_MODE, LAST_REAL_RELOC_MODE, and mode().
Referenced by IsPseudoRelocMode(), and v8::internal::PatchPositionsInCode().
Definition at line 405 of file assembler.h.
References mode(), and RUNTIME_ENTRY.
Referenced by v8::internal::Code::CopyFrom(), v8::internal::Assembler::emit_runtime_entry(), v8::internal::Code::PrintDeoptLocation(), and Visit().
Definition at line 427 of file assembler.h.
References mode(), and STATEMENT_POSITION.
Referenced by v8::internal::BreakLocationIterator::Next(), and v8::internal::Code::SourceStatementPosition().
Definition at line 421 of file assembler.h.
References mode(), and VENEER_POOL.
Definition at line 445 of file assembler.h.
References mode().
Referenced by v8::internal::Code::ClearInlineCaches(), v8::internal::Code::CodeIterateBody(), v8::internal::ComputeCodeOffsetFromPcOffset(), v8::internal::ComputePcOffsetFromCodeOffset(), v8::internal::Code::CopyFrom(), v8::internal::Code::FindAllMaps(), v8::internal::Code::FindAndReplace(), v8::internal::Code::FindFirstHandler(), v8::internal::Code::FindFirstName(), v8::internal::Code::FindHandlerForMap(), v8::internal::Code::FindHandlers(), v8::internal::Code::FindNthObject(), v8::internal::TypeFeedbackOracle::GetRelocInfos(), v8::internal::Code::InvalidateEmbeddedObjects(), v8::internal::IC::InvalidateMaps(), v8::internal::Code::PrintDeoptLocation(), v8::internal::BreakLocationIterator::Reset(), v8::internal::RUNTIME_FUNCTION(), and v8::internal::WipeOutRelocations().
|
inline |
Definition at line 457 of file assembler.h.
References pc_.
Referenced by v8::internal::Code::ClearInlineCaches(), v8::internal::ComputeCodeOffsetFromPcOffset(), v8::internal::ComputePcOffsetFromCodeOffset(), v8::internal::Debug::IsBreakAtReturn(), v8::internal::PatchPositionsInCode(), v8::internal::BreakLocationIterator::pc(), v8::internal::MarkCompactCollector::RecordRelocSlot(), v8::internal::TypeFeedbackOracle::RelocateRelocInfos(), v8::internal::RUNTIME_FUNCTION(), set_pc(), v8::internal::Debug::SetAfterBreakTarget(), v8::internal::Code::SourcePosition(), and v8::internal::Serializer::ObjectSerializer::VisitCell().
|
inline |
Definition at line 462 of file assembler.h.
References data64_.
Referenced by IsEqual().
|
inline |
Definition at line 459 of file assembler.h.
References rmode_.
Referenced by v8::internal::ComputeCodeOffsetFromPcOffset(), v8::internal::ComputePcOffsetFromCodeOffset(), v8::internal::Code::FindHandlerForMap(), v8::internal::Debug::IsBreakAtReturn(), IsEqual(), v8::internal::BreakLocationIterator::original_rmode(), v8::internal::PatchPositionsInCode(), v8::internal::Debug::PrepareStep(), v8::internal::Code::PrintDeoptLocation(), v8::internal::MarkCompactCollector::RecordRelocSlot(), v8::internal::BreakLocationIterator::rmode(), v8::internal::compiler::SearchSharedFunctionInfo(), v8::internal::Debug::SetAfterBreakTarget(), v8::internal::Code::SourceStatementPosition(), Visit(), v8::internal::PointersUpdatingVisitor::VisitCodeAgeSequence(), v8::internal::PointersUpdatingVisitor::VisitCodeTarget(), v8::internal::ReplacingVisitor::VisitCodeTarget(), v8::internal::PointersUpdatingVisitor::VisitDebugTarget(), and v8::internal::PointersUpdatingVisitor::VisitEmbeddedPointer().
|
inline |
Definition at line 464 of file assembler.h.
Referenced by v8::internal::TypeFeedbackOracle::RelocateRelocInfos().
|
inline |
Definition at line 458 of file assembler.h.
Referenced by v8::internal::TypeFeedbackOracle::RelocateRelocInfos().
|
inline |
Definition at line 351 of file assembler-arm-inl.h.
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().
|
inline |
Definition at line 326 of file assembler-arm-inl.h.
References CELL, v8::internal::Isolate::debug(), EMBEDDED_OBJECT, EXTERNAL_REFERENCE, v8::internal::Debug::has_break_points(), IsCodeAgeSequence(), IsCodeTarget(), IsDebugBreakSlot(), IsJSReturn(), IsRuntimeEntry(), mode(), and rmode().
|
friend |
Definition at line 610 of file assembler.h.
union { ... } |
double v8::internal::RelocInfo::data64_ |
Definition at line 602 of file assembler.h.
Referenced by data64(), and raw_data64().
intptr_t v8::internal::RelocInfo::data_ |
Definition at line 601 of file assembler.h.
Referenced by v8::internal::RelocIterator::AdvanceReadData(), v8::internal::RelocIterator::AdvanceReadId(), v8::internal::RelocIterator::AdvanceReadPoolData(), v8::internal::RelocIterator::AdvanceReadPosition(), data(), v8::internal::RelocIterator::next(), v8::internal::RelocIterator::ReadTaggedId(), v8::internal::RelocIterator::ReadTaggedPosition(), and v8::internal::RelocIterator::RelocIterator().
|
private |
Definition at line 604 of file assembler.h.
Referenced by host(), v8::internal::RelocIterator::RelocIterator(), and set_host().
|
static |
Definition at line 591 of file assembler.h.
Referenced by v8::internal::Code::CopyFrom(), and v8::internal::Code::Relocate().
|
static |
Definition at line 587 of file assembler.h.
Referenced by v8::internal::Code::CodeIterateBody(), v8::internal::Code::CopyFrom(), and v8::internal::WipeOutRelocations().
|
static |
Definition at line 589 of file assembler.h.
|
static |
Definition at line 323 of file assembler.h.
|
static |
Definition at line 331 of file assembler.h.
|
static |
Definition at line 334 of file assembler.h.
|
static |
Definition at line 328 of file assembler.h.
|
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().
|
static |
Definition at line 588 of file assembler.h.
Referenced by v8::internal::RelocIterator::next(), v8::internal::Code::SourcePosition(), and v8::internal::Code::SourceStatementPosition().
|
private |
Definition at line 598 of file assembler.h.
Referenced by v8::internal::RelocIterator::AdvanceReadPC(), v8::internal::RelocIterator::AdvanceReadVariableLengthPCJump(), v8::internal::RelocIterator::next(), pc(), v8::internal::RelocIterator::ReadTaggedPC(), v8::internal::RelocIterator::RelocIterator(), and set_pc().
|
private |
Definition at line 609 of file assembler.h.
|
private |
Definition at line 599 of file assembler.h.
Referenced by rmode(), and v8::internal::RelocIterator::SetMode().