40 #ifndef V8_ARM_ASSEMBLER_ARM_H_
41 #define V8_ARM_ASSEMBLER_ARM_H_
97 FLAG_enable_ool_constant_pool ? 8 : 9;
114 const char*
const names[] = {
125 if (FLAG_enable_ool_constant_pool && (index >= 7)) {
126 return names[index + 1];
249 *m = (
code_ & 0x10) >> 4;
320 int encoded_code =
code_ << 1;
321 *m = (encoded_code & 0x10) >> 4;
322 *vm = encoded_code & 0x0F;
422 #define kFirstCalleeSavedDoubleReg d8
423 #define kLastCalleeSavedDoubleReg d15
424 #define kDoubleRegZero d14
425 #define kScratchDoubleReg d15
631 int align()
const {
return align_; }
666 return current_section_;
671 return &number_of_entries_[section];
686 : rinfo_(rinfo), section_(section), merged_index_(merged_index) {}
697 ConstantPoolArray::NumberOfEntries number_of_entries_[2];
1281 const NeonListOperand& dst,
1282 const NeonMemOperand& src);
1284 const NeonListOperand& src,
1285 const NeonMemOperand& dst);
1417 *
reinterpret_cast<Instr*
>(
pc) = instr;
Isolate * isolate() const
DISALLOW_IMPLICIT_CONSTRUCTORS(BlockConstPoolScope)
BlockConstPoolScope(Assembler *assem)
static const int kSpecialTargetSize
void vcmp(const DwVfpRegister src1, const double src2, const Condition cond=al)
void bind_to(Label *L, int pos)
int branch_offset(Label *L, bool jump_elimination_allowed)
void rsb(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void vstr(const SwVfpRegister src, const Register base, int offset, const Condition cond=al)
RelocInfoWriter reloc_info_writer
void pkhtb(Register dst, Register src1, const Operand &src2, Condition cond=al)
void uxtb(Register dst, const Operand &src, Condition cond=al)
void cmp(Register src1, Register src2, Condition cond=al)
void vmrs(const Register dst, const Condition cond=al)
void vmovl(NeonDataType dt, QwNeonRegister dst, DwVfpRegister src)
void umlal(Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
void vcvt_u32_f64(const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
static const int kMaxRelocSize
void ldrd(Register dst1, Register dst2, const MemOperand &src, Condition cond=al)
static const int kInstrSize
void b(Label *L, Condition cond=al)
static bool IsPush(Instr instr)
void usat(Register dst, int satpos, const Operand &src, Condition cond=al)
static bool IsLdrRegFpOffset(Instr instr)
INLINE(static Address constant_pool_entry_address(Address pc, ConstantPoolArray *constant_pool))
void and_(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void vldr(const SwVfpRegister dst, const MemOperand &src, const Condition cond=al)
void vneg(const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
INLINE(static Address break_address_from_return_address(Address pc))
static bool IsCmpRegister(Instr instr)
void vldm(BlockAddrMode am, Register base, DwVfpRegister first, DwVfpRegister last, Condition cond=al)
void RecordConstPool(int size)
static int GetCmpImmediateRawImmediate(Instr instr)
static Address target_address_at(Address pc, ConstantPoolArray *constant_pool)
int first_const_pool_64_use_
void bfi(Register dst, Register src, int lsb, int width, Condition cond=al)
void mov_label_offset(Register dst, Label *label)
void cdp(Coprocessor coproc, int opcode_1, CRegister crd, CRegister crn, CRegister crm, int opcode_2, Condition cond=al)
void cmp_raw_immediate(Register src1, int raw_immediate, Condition cond=al)
void ldc2(Coprocessor coproc, CRegister crd, const MemOperand &src, LFlag l=Short)
void mls(Register dst, Register src1, Register src2, Register srcA, Condition cond=al)
void smull(Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
void addrmod4(Instr instr, Register rn, RegList rl)
void mcr(Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0, Condition cond=al)
static Instr SetLdrRegisterImmediateOffset(Instr instr, int offset)
static bool IsPop(Instr instr)
void mrc(Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0, Condition cond=al)
void sbc(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
TypeFeedbackId RecordedAstId()
static bool IsStrRegisterImmediate(Instr instr)
static Instr GetConsantPoolLoadMask()
void stm(BlockAddrMode am, Register base, RegList src, Condition cond=al)
void vmsr(const Register dst, const Condition cond=al)
int first_const_pool_32_use_
void addrmod3(Instr instr, Register rd, const MemOperand &x)
INLINE(static bool is_constant_pool_load(Address pc))
static bool IsCmpImmediate(Instr instr)
void vstr(const SwVfpRegister src, const MemOperand &dst, const Condition cond=al)
static void instr_at_put(byte *pc, Instr instr)
static bool IsVldrDPpImmediateOffset(Instr instr)
void ClearRecordedAstId()
void mul(Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
TypeFeedbackId recorded_ast_id_
void adc(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
RelocInfo pending_32_bit_reloc_info_[kMaxNumPending32RelocInfo]
void push(Register src, Condition cond=al)
static const int kDebugBreakSlotInstructions
void GetCode(CodeDesc *desc)
static bool IsTstImmediate(Instr instr)
static bool IsNop(Instr instr, int type=NON_MARKING_NOP)
int InstructionsGeneratedSince(Label *label)
bool ImmediateFitsAddrMode2Instruction(int32_t imm32)
void bl(Condition cond, Label *L)
static Instr SetVldrDRegisterImmediateOffset(Instr instr, int offset)
void vldr(const DwVfpRegister dst, const MemOperand &src, const Condition cond=al)
void add(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void CheckConstPool(bool force_emit, bool require_jump)
static const int kPatchDebugBreakSlotAddressOffset
void instr_at_put(int pos, Instr instr)
void teq(Register src1, const Operand &src2, Condition cond=al)
void sub(Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
void sbfx(Register dst, Register src, int lsb, int width, Condition cond=al)
void vldm(BlockAddrMode am, Register base, SwVfpRegister first, SwVfpRegister last, Condition cond=al)
void StartBlockConstPool()
void vsqrt(const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
void msr(SRegisterFieldMask fields, const Operand &src, Condition cond=al)
void vcvt_f64_s32(const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
void set_constant_pool_available(bool available)
static Instr GetConsantPoolLoadPattern()
void vmls(const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
static Instr SetAddRegisterImmediateOffset(Instr instr, int offset)
static const int kPatchDebugBreakSlotReturnOffset
void bl(Label *L, Condition cond=al)
void cmp(Register src1, const Operand &src2, Condition cond=al)
void BlockConstPoolFor(int instructions)
void rsc(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
@ PROPERTY_ACCESS_INLINED
@ PROPERTY_ACCESS_INLINED_CONTEXT
@ PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE
void mov(Register dst, Register src, SBit s=LeaveCC, Condition cond=al)
static Address break_address_from_return_address(Address pc)
bool use_extended_constant_pool() const
void lsr(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void vmla(const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data=0)
static bool IsMovImmed(Instr instr)
static Instr SetStrRegisterImmediateOffset(Instr instr, int offset)
void vmov(const Register dst, const VmovIndex index, const DwVfpRegister src, const Condition cond=al)
static bool IsVldrDPcImmediateOffset(Instr instr)
static Register GetRn(Instr instr)
void blx(Register target, Condition cond=al)
static bool IsStrRegFpOffset(Instr instr)
void ldrsh(Register dst, const MemOperand &src, Condition cond=al)
void vcvt_f64_s32(const DwVfpRegister dst, int fraction_bits, const Condition cond=al)
void addrmod2(Instr instr, Register rd, const MemOperand &x)
INLINE(static Address return_address_from_call_start(Address pc))
void ldrsb(Register dst, const MemOperand &src, Condition cond=al)
void smlal(Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
void RecordRelocInfo(const RelocInfo &rinfo)
void pop(Register dst, Condition cond=al)
void vcvt_f64_f32(const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
bool is_constant_pool_available() const
static Instr instr_at(byte *pc)
static Instr EncodeMovwImmediate(uint32_t immediate)
void str(Register src, const MemOperand &dst, Condition cond=al)
void vstm(BlockAddrMode am, Register base, DwVfpRegister first, DwVfpRegister last, Condition cond=al)
INLINE(static Address target_address_at(Address pc, Code *code))
INLINE(static Address target_address_at(Address pc, ConstantPoolArray *constant_pool))
void b(Condition cond, Label *L)
void ldrh(Register dst, const MemOperand &src, Condition cond=al)
void strd(Register src1, Register src2, const MemOperand &dst, Condition cond=al)
void clz(Register dst, Register src, Condition cond=al)
static Register GetRm(Instr instr)
void mrc2(Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0)
static Instr GetMovWPattern()
void ldc2(Coprocessor coproc, CRegister crd, Register base, int option, LFlag l=Short)
void sub(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
Handle< ConstantPoolArray > NewConstantPool(Isolate *isolate)
void vmov(const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
static Instr PatchShiftImm(Instr instr, int immed)
void movw(Register reg, uint32_t immediate, Condition cond=al)
void udiv(Register dst, Register src1, Register src2, Condition cond=al)
int const_pool_blocked_nesting_
static Register GetRd(Instr instr)
static bool IsBranch(Instr instr)
void vmov(const DwVfpRegister dst, const Register src1, const Register src2, const Condition cond=al)
ConstantPoolArray::LayoutSection ConstantPoolAddEntry(const RelocInfo &rinfo)
void bl(int branch_offset, Condition cond=al)
void vld1(NeonSize size, const NeonListOperand &dst, const NeonMemOperand &src)
static bool IsMovW(Instr instr)
void pkhbt(Register dst, Register src1, const Operand &src2, Condition cond=al)
RelocInfo pending_64_bit_reloc_info_[kMaxNumPending64RelocInfo]
void RecordComment(const char *msg)
void vstr(const DwVfpRegister src, const MemOperand &dst, const Condition cond=al)
friend class PositionsRecorder
static Register GetCmpImmediateRegister(Instr instr)
void strb(Register src, const MemOperand &dst, Condition cond=al)
void blx(int branch_offset)
static bool IsMovT(Instr instr)
void lsl(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void addrmod5(Instr instr, CRegister crd, const MemOperand &x)
void ldrb(Register dst, const MemOperand &src, Condition cond=al)
void vcvt_f32_f64(const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
void vmov(const DwVfpRegister dst, const VmovIndex index, const Register src, const Condition cond=al)
bool is_const_pool_blocked() const
static const int kJSReturnSequenceInstructions
void addrmod1(Instr instr, Register rn, Register rd, const Operand &x)
void vmov(const DwVfpRegister dst, double imm, const Register scratch=no_reg)
void mla(Register dst, Register src1, Register src2, Register srcA, SBit s=LeaveCC, Condition cond=al)
void eor(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void b(int branch_offset, Condition cond=al)
static bool IsVldrDRegisterImmediate(Instr instr)
void vabs(const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
void mvn(Register dst, const Operand &src, SBit s=LeaveCC, Condition cond=al)
void mov(Register dst, const Operand &src, SBit s=LeaveCC, Condition cond=al)
INLINE(static void set_target_address_at(Address pc, Code *code, Address target, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED))
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)
void vdiv(const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
void svc(uint32_t imm24, Condition cond=al)
void SetRecordedAstId(TypeFeedbackId ast_id)
static const int kMaxNumPending64RelocInfo
void strh(Register src, const MemOperand &dst, Condition cond=al)
void ubfx(Register dst, Register src, int lsb, int width, Condition cond=al)
void vstm(BlockAddrMode am, Register base, SwVfpRegister first, SwVfpRegister last, Condition cond=al)
void stop(const char *msg, Condition cond=al, int32_t code=kDefaultStopCode)
void mrs(Register dst, SRegister s, Condition cond=al)
INLINE(static Address target_address_from_return_address(Address pc))
void ldc(Coprocessor coproc, CRegister crd, const MemOperand &src, LFlag l=Short, Condition cond=al)
void vcmp(const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
void vcvt_f64_u32(const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
void orr(Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
static bool IsOrrImmed(Instr instr)
void RecordDebugBreakSlot()
static int GetVldrDRegisterImmediateOffset(Instr instr)
static const int kMaxDistToIntPool
static Address return_address_from_call_start(Address pc)
void uxtb16(Register dst, const Operand &src, Condition cond=al)
static Instr GetLdrPpRegOffsetPattern()
static const int kDebugBreakSlotLength
void target_at_put(int pos, int target_pos)
void sdiv(Register dst, Register src1, Register src2, Condition cond=al)
void vcvt_s32_f64(const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
INLINE(static void set_target_address_at(Address pc, ConstantPoolArray *constant_pool, Address target, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED))
static int DecodeShiftImm(Instr instr)
void move_32_bit_immediate(Register rd, const Operand &x, Condition cond=al)
void umull(Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
static const int kMaxDistToFPPool
static bool IsLdrPpRegOffset(Instr instr)
void movt(Register reg, uint32_t immediate, Condition cond=al)
void orr(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void ldm(BlockAddrMode am, Register base, RegList dst, Condition cond=al)
void vmov(const Register dst, const SwVfpRegister src, const Condition cond=al)
static bool IsLdrPcImmediateOffset(Instr instr)
void vstr(const DwVfpRegister src, const Register base, int offset, const Condition cond=al)
void vmov(const SwVfpRegister dst, const Register src, const Condition cond=al)
void vsub(const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
void tst(Register src1, const Operand &src2, Condition cond=al)
void vcvt_f32_s32(const SwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
int no_const_pool_before_
void pld(const MemOperand &address)
static bool ImmediateFitsAddrMode1Instruction(int32_t imm32)
void emit_code_stub_address(Code *stub)
int num_pending_64_bit_reloc_info_
static const int kPatchReturnSequenceAddressOffset
void ldr(Register dst, const MemOperand &src, Condition cond=al)
void bic(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void uxtab(Register dst, Register src1, const Operand &src2, Condition cond=al)
void vmul(const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
static Condition GetCondition(Instr instr)
static bool IsBlxIp(Instr instr)
static void deserialization_set_special_target_at(Address constant_pool_entry, Code *code, Address target)
void mcr2(Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0)
void tst(Register src1, Register src2, Condition cond=al)
static bool IsLdrPpImmediateOffset(Instr instr)
static bool IsBlxReg(Instr instr)
void vmov(const Register dst1, const Register dst2, const DwVfpRegister src, const Condition cond=al)
int num_pending_32_bit_reloc_info_
void vadd(const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
void bkpt(uint32_t imm16)
static int GetBranchOffset(Instr instr)
bool constant_pool_available_
void cdp2(Coprocessor coproc, int opcode_1, CRegister crd, CRegister crn, CRegister crm, int opcode_2)
void vmov(const SwVfpRegister dst, const SwVfpRegister src, const Condition cond=al)
void bx(Register target, Condition cond=al)
static const int kPcLoadDelta
void vst1(NeonSize size, const NeonListOperand &src, const NeonMemOperand &dst)
static Instr PatchMovwImmediate(Instr instruction, uint32_t immediate)
static bool IsAddRegisterImmediate(Instr instr)
static const int kCheckPoolIntervalInst
void ldc(Coprocessor coproc, CRegister crd, Register base, int option, LFlag l=Short, Condition cond=al)
PositionsRecorder positions_recorder_
Assembler(Isolate *isolate, void *buffer, int buffer_size)
static bool IsStrRegFpNegOffset(Instr instr)
PositionsRecorder * positions_recorder()
static const int kMaxNumPending32RelocInfo
static bool IsLdrRegisterImmediate(Instr instr)
static int GetLdrRegisterImmediateOffset(Instr instr)
int SizeOfCodeGeneratedSince(Label *label)
void vldr(const DwVfpRegister dst, const Register base, int offset, const Condition cond=al)
void cmn(Register src1, const Operand &src2, Condition cond=al)
static bool IsLdrRegFpNegOffset(Instr instr)
static Instr GetMovTPattern()
void bfc(Register dst, int lsb, int width, Condition cond=al)
void add(Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
void asr(Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
void PopulateConstantPool(ConstantPoolArray *constant_pool)
void vldr(const SwVfpRegister dst, const Register base, int offset, const Condition cond=al)
static const int kCheckPoolInterval
ConstantPoolBuilder constant_pool_builder_
bool OffsetIsUint12Encodable() const
INLINE(static Operand Zero())
Operand(Register rm, ShiftOp shift_op, Register rs)
std::vector< ConstantPoolEntry > entries_
DoubleRegister base() const
MemOperand(Register rn, Register rm, AddrMode am=Offset)
ConstantPoolArray::LayoutSection current_section_
void set_offset(int32_t offset)
void Relocate(int pc_delta)
INLINE(static Operand DoubleOffsetFromSmiKey(Register key))
MemOperand(Register rn, Register rm, ShiftOp shift_op, int shift_imm, AddrMode am=Offset)
INLINE(explicit Operand(const ExternalReference &f))
bool must_output_reloc_info(const Assembler *assembler) const
INLINE(static Operand PointerOffsetFromSmiKey(Register key))
NeonMemOperand(Register rn, Register rm, int align=0)
int instructions_required(const Assembler *assembler, Instr instr=0) const
ConstantPoolArray::NumberOfEntries * number_of_entries(ConstantPoolArray::LayoutSection section)
INLINE(explicit Operand(int32_t immediate, RelocInfo::Mode rmode=RelocInfo::NONE32))
ConstantPoolArray::Type GetConstantPoolType(RelocInfo::Mode rmode)
INLINE(bool is_reg() const)
void Populate(Assembler *assm, ConstantPoolArray *constant_pool)
ConstantPoolArray::NumberOfEntries * extended_entries()
Operand(Register rm, ShiftOp shift_op, int shift_imm)
Operand(Handle< Object > handle)
EnsureSpace(Assembler *assembler)
NeonMemOperand(Register rn, AddrMode am=Offset, int align=0)
INLINE(explicit Operand(Smi *value))
void SetAlignment(int align)
ConstantPoolArray::LayoutSection current_section() const
INLINE(explicit Operand(Register rm))
Handle< ConstantPoolArray > New(Isolate *isolate)
MemOperand(Register rn, int32_t offset=0, AddrMode am=Offset)
ConstantPoolArray::LayoutSection AddEntry(Assembler *assm, const RelocInfo &rinfo)
INLINE(static MemOperand PointerAddressFromSmiKey(Register array, Register key, AddrMode am=Offset))
ConstantPoolArray::NumberOfEntries * small_entries()
INLINE(static Operand SmiUntag(Register rm))
int32_t immediate() const
NeonListType type() const
NeonListOperand(DoubleRegister base, int registers_count=1)
ConstantPoolArray * constant_pool()
Operand(Register reg, Shift shift=LSL, unsigned shift_amount=0)
Immediate immediate() const
static TypeFeedbackId None()
enable harmony numeric enable harmony object literal extensions Optimize object size
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 available(X64 only)") DEFINE_BOOL(enable_vfp3
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)
const LowDwVfpRegister d2
const int kRegister_r2_Code
const int32_t kDefaultStopCode
const LowDwVfpRegister d7
const LowDwVfpRegister d6
const LowDwVfpRegister d9
const LowDwVfpRegister d1
const VmovIndex VmovIndexHi
const LowDwVfpRegister d5
const int kRegister_pc_Code
const LowDwVfpRegister d0
const int kDoubleSizeLog2
DwVfpRegister DoubleRegister
const LowDwVfpRegister d8
const LowDwVfpRegister d12
const int kRegister_r5_Code
const int kRegister_ip_Code
const int kRegister_r1_Code
const int kPointerSizeLog2
const int kRegister_r7_Code
Handle< T > handle(T *t, Isolate *isolate)
QwNeonRegister QuadRegister
const int kRegister_r8_Code
const LowDwVfpRegister d11
const int kRegister_r6_Code
const DwVfpRegister no_dreg
const int kRegister_r0_Code
const VmovIndex VmovIndexLo
const int kRegister_r3_Code
const int kRegister_lr_Code
const int kRegister_r4_Code
const int kRegister_r10_Code
const int kRegister_fp_Code
STATIC_ASSERT(sizeof(CPURegister)==sizeof(Register))
const LowDwVfpRegister d13
const LowDwVfpRegister d3
const int kRegister_no_reg_Code
const int kRegister_r9_Code
const LowDwVfpRegister d10
const LowDwVfpRegister d15
const LowDwVfpRegister d14
const LowDwVfpRegister d4
const int kRegister_sp_Code
Debugger support for the V8 JavaScript engine.
ConstantPoolArray::LayoutSection section_
ConstantPoolEntry(RelocInfo rinfo, ConstantPoolArray::LayoutSection section, int merged_index)
bool is(CRegister creg) const
static const int kNumReservedRegisters
static const char * AllocationIndexToString(int index)
bool is(DwVfpRegister reg) const
static int NumAllocatableRegisters()
static DwVfpRegister from_code(int code)
static int NumRegisters()
static int ToAllocationIndex(DwVfpRegister reg)
static const int kMaxNumAllocatableRegisters
void split_code(int *vm, int *m) const
static const int kSizeInBytes
static int NumReservedRegisters()
static int NumAllocatableAliasedRegisters()
static const int kMaxNumRegisters
static DwVfpRegister FromAllocationIndex(int index)
bool is(LowDwVfpRegister reg) const
static LowDwVfpRegister from_code(int code)
SwVfpRegister high() const
SwVfpRegister low() const
bool is(DwVfpRegister reg) const
static const int kMaxNumLowRegisters
void split_code(int *vm, int *m) const
static const int kMaxNumRegisters
bool is(QwNeonRegister reg) const
static QwNeonRegister from_code(int code)
static const int kNumRegisters
static const int kSizeInBytes
static Register from_code(int code)
static Register FromAllocationIndex(int index)
bool is(Register reg) const
static int NumAllocatableRegisters()
static int ToAllocationIndex(Register reg)
static const char * AllocationIndexToString(int index)
static const int kMaxNumAllocatableRegisters
static const int kSizeInBytes
bool is(SwVfpRegister reg) const
void split_code(int *vm, int *m) const