37 #ifndef V8_MIPS_ASSEMBLER_MIPS_INL_H_
38 #define V8_MIPS_ASSEMBLER_MIPS_INL_H_
65 imm32_ =
reinterpret_cast<int32_t>(f.address());
72 imm32_ =
reinterpret_cast<intptr_t
>(value);
82 bool Operand::is_reg()
const {
83 return rm_.is_valid();
113 return (reg.
code() / 2);
120 void RelocInfo::apply(intptr_t delta,
ICacheFlushMode icache_flush_mode) {
125 if (scope1 != scope2) {
131 byte* p =
reinterpret_cast<byte*
>(
pc_);
138 Address RelocInfo::target_address() {
144 Address RelocInfo::target_address_address() {
163 return reinterpret_cast<Address>(
168 Address RelocInfo::constant_pool_entry_address() {
174 int RelocInfo::target_address_size() {
179 void RelocInfo::set_target_address(
Address target,
188 host(),
this, HeapObject::cast(target_code));
203 Object* RelocInfo::target_object() {
209 Handle<Object> RelocInfo::target_object_handle(Assembler* origin) {
211 return Handle<Object>(
reinterpret_cast<Object**
>(
216 void RelocInfo::set_target_object(
Object* target,
221 reinterpret_cast<Address>(target),
225 target->IsHeapObject()) {
232 Address RelocInfo::target_reference() {
238 Address RelocInfo::target_runtime_entry(Assembler* origin) {
240 return target_address();
244 void RelocInfo::set_target_runtime_entry(
Address target,
248 if (target_address() != target)
249 set_target_address(target, write_barrier_mode, icache_flush_mode);
253 Handle<Cell> RelocInfo::target_cell_handle() {
256 return Handle<Cell>(
reinterpret_cast<Cell**
>(address));
260 Cell* RelocInfo::target_cell() {
266 void RelocInfo::set_target_cell(Cell* cell,
290 Code* RelocInfo::code_age_stub() {
297 void RelocInfo::set_code_age_stub(Code* stub,
306 Address RelocInfo::call_address() {
316 void RelocInfo::set_call_address(
Address target) {
326 host(),
this, HeapObject::cast(target_code));
331 Object* RelocInfo::call_object() {
332 return *call_object_address();
336 Object** RelocInfo::call_object_address() {
343 void RelocInfo::set_call_object(
Object* target) {
344 *call_object_address() = target;
348 void RelocInfo::WipeOut() {
357 bool RelocInfo::IsPatchedReturnSequence() {
366 return patched_return;
370 bool RelocInfo::IsPatchedDebugBreakSlotSequence() {
379 visitor->VisitEmbeddedPointer(
this);
381 visitor->VisitCodeTarget(
this);
383 visitor->VisitCell(
this);
385 visitor->VisitExternalReference(
this);
387 visitor->VisitCodeAgeSequence(
this);
389 IsPatchedReturnSequence()) ||
391 IsPatchedDebugBreakSlotSequence())) &&
392 isolate->debug()->has_break_points()) {
393 visitor->VisitDebugTarget(
this);
395 visitor->VisitRuntimeEntry(
this);
400 template<
typename StaticVisitor>
404 StaticVisitor::VisitEmbeddedPointer(heap,
this);
406 StaticVisitor::VisitCodeTarget(heap,
this);
408 StaticVisitor::VisitCell(heap,
this);
410 StaticVisitor::VisitExternalReference(
this);
412 StaticVisitor::VisitCodeAgeSequence(heap,
this);
413 }
else if (heap->isolate()->debug()->has_break_points() &&
415 IsPatchedReturnSequence()) ||
417 IsPatchedDebugBreakSlotSequence()))) {
418 StaticVisitor::VisitDebugTarget(heap,
this);
420 StaticVisitor::VisitRuntimeEntry(
this);
#define kLithiumScratchDouble
static const int kSpecialTargetSize
bool is_buffer_growth_blocked() const
static const int kInstrSize
void CheckTrampolinePool()
static Address target_address_at(Address pc, ConstantPoolArray *constant_pool)
static const int kInstructionsFor32BitConstant
void CheckTrampolinePoolQuick()
static bool IsNop(Instr instr, int type=NON_MARKING_NOP)
static const int kPatchDebugBreakSlotReturnOffset
static Address break_address_from_return_address(Address pc)
static void set_target_address_at(Address pc, ConstantPoolArray *constant_pool, Address target, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
static Address target_address_from_return_address(Address pc)
static const int kCallTargetAddressOffset
static void JumpLabelToJumpRegister(Address pc)
static int RelocateInternalReference(byte *pc, intptr_t pc_delta)
static const int kValueOffset
static Cell * FromValueAddress(Address value)
static Code * GetCodeFromTargetAddress(Address address)
byte * instruction_start()
static void FlushICache(void *start, size_t size)
static bool IsSupported(CpuFeature f)
static bool SupportsCrankshaft()
IncrementalMarking * incremental_marking()
static Object *& Object_at(Address addr)
static Address & Address_at(Address addr)
Operand(Register reg, Shift shift=LSL, unsigned shift_amount=0)
Immediate immediate() const
static bool IsDebugBreakSlot(Mode mode)
static bool IsJSReturn(Mode mode)
static bool IsEmbeddedObject(Mode mode)
static bool IsRuntimeEntry(Mode mode)
static bool IsCodeTarget(Mode mode)
static bool IsExternalReference(Mode mode)
static bool IsInternalReference(Mode mode)
static bool IsCodeAgeSequence(Mode mode)
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
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
#define DCHECK(condition)
kSerializedDataOffset Object
const int kFunctionFieldMask
static const int kNoCodeAgeSequenceLength
Debugger support for the V8 JavaScript engine.
static int NumAllocatableRegisters()
static int NumRegisters()
static int NumAllocatableAliasedRegisters()
static const int kMaxNumAllocatableRegisters
static int ToAllocationIndex(FPURegister reg)
bool is(FPURegister creg) const
static const int kMaxNumRegisters
static int NumAllocatableRegisters()
static const int kMaxNumAllocatableRegisters