v8  3.25.30(node0.11.13)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PatchingAssembler Class Reference

#include <assembler-arm64.h>

Inheritance diagram for PatchingAssembler:
Collaboration diagram for PatchingAssembler:

Public Member Functions

 PatchingAssembler (Instruction *start, unsigned count)
 
 PatchingAssembler (byte *start, unsigned count)
 
 ~PatchingAssembler ()
 
- Public Member Functions inherited from Assembler
 Assembler (Isolate *isolate, void *buffer, int buffer_size)
 
virtual ~Assembler ()
 
void GetCode (CodeDesc *desc)
 
void bind (Label *L)
 
int branch_offset (Label *L, bool jump_elimination_allowed)
 
 INLINE (static Address target_pointer_address_at(Address pc))
 
 INLINE (static Address target_constant_pool_address_at(Address pc, ConstantPoolArray *constant_pool))
 
 INLINE (static Address target_address_at(Address pc, ConstantPoolArray *constant_pool))
 
 INLINE (static void set_target_address_at(Address pc, ConstantPoolArray *constant_pool, Address target))
 
 INLINE (static Address target_address_at(Address pc, Code *code))
 
 INLINE (static void set_target_address_at(Address pc, Code *code, Address target))
 
 INLINE (static Address target_address_from_return_address(Address pc))
 
 INLINE (static Address return_address_from_call_start(Address pc))
 
void Align (int m)
 
void CodeTargetAlign ()
 
void b (int branch_offset, Condition cond=al)
 
void bl (int branch_offset, Condition cond=al)
 
void blx (int branch_offset)
 
void blx (Register target, Condition cond=al)
 
void bx (Register target, Condition cond=al)
 
void b (Label *L, Condition cond=al)
 
void b (Condition cond, Label *L)
 
void bl (Label *L, Condition cond=al)
 
void bl (Condition cond, Label *L)
 
void blx (Label *L)
 
void and_ (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void eor (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void sub (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void sub (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void rsb (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void add (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void add (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void adc (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void sbc (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void rsc (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void tst (Register src1, const Operand &src2, Condition cond=al)
 
void tst (Register src1, Register src2, Condition cond=al)
 
void teq (Register src1, const Operand &src2, Condition cond=al)
 
void cmp (Register src1, const Operand &src2, Condition cond=al)
 
void cmp (Register src1, Register src2, Condition cond=al)
 
void cmp_raw_immediate (Register src1, int raw_immediate, Condition cond=al)
 
void cmn (Register src1, const Operand &src2, Condition cond=al)
 
void orr (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void orr (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void mov (Register dst, const Operand &src, SBit s=LeaveCC, Condition cond=al)
 
void mov (Register dst, Register src, SBit s=LeaveCC, Condition cond=al)
 
void mov_label_offset (Register dst, Label *label)
 
void movw (Register reg, uint32_t immediate, Condition cond=al)
 
void movt (Register reg, uint32_t immediate, Condition cond=al)
 
void bic (Register dst, Register src1, const Operand &src2, SBit s=LeaveCC, Condition cond=al)
 
void mvn (Register dst, const Operand &src, SBit s=LeaveCC, Condition cond=al)
 
void mla (Register dst, Register src1, Register src2, Register srcA, SBit s=LeaveCC, Condition cond=al)
 
void mls (Register dst, Register src1, Register src2, Register srcA, Condition cond=al)
 
void sdiv (Register dst, Register src1, Register src2, Condition cond=al)
 
void mul (Register dst, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void smlal (Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void smull (Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void umlal (Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void umull (Register dstL, Register dstH, Register src1, Register src2, SBit s=LeaveCC, Condition cond=al)
 
void clz (Register dst, Register src, Condition cond=al)
 
void usat (Register dst, int satpos, const Operand &src, Condition cond=al)
 
void ubfx (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void sbfx (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void bfc (Register dst, int lsb, int width, Condition cond=al)
 
void bfi (Register dst, Register src, int lsb, int width, Condition cond=al)
 
void pkhbt (Register dst, Register src1, const Operand &src2, Condition cond=al)
 
void pkhtb (Register dst, Register src1, const Operand &src2, Condition cond=al)
 
void uxtb (Register dst, const Operand &src, Condition cond=al)
 
void uxtab (Register dst, Register src1, const Operand &src2, Condition cond=al)
 
void uxtb16 (Register dst, const Operand &src, Condition cond=al)
 
void mrs (Register dst, SRegister s, Condition cond=al)
 
void msr (SRegisterFieldMask fields, const Operand &src, Condition cond=al)
 
void ldr (Register dst, const MemOperand &src, Condition cond=al)
 
void str (Register src, const MemOperand &dst, Condition cond=al)
 
void ldrb (Register dst, const MemOperand &src, Condition cond=al)
 
void strb (Register src, const MemOperand &dst, Condition cond=al)
 
void ldrh (Register dst, const MemOperand &src, Condition cond=al)
 
void strh (Register src, const MemOperand &dst, Condition cond=al)
 
void ldrsb (Register dst, const MemOperand &src, Condition cond=al)
 
void ldrsh (Register dst, const MemOperand &src, Condition cond=al)
 
void ldrd (Register dst1, Register dst2, const MemOperand &src, Condition cond=al)
 
void strd (Register src1, Register src2, const MemOperand &dst, Condition cond=al)
 
void pld (const MemOperand &address)
 
void ldm (BlockAddrMode am, Register base, RegList dst, Condition cond=al)
 
void stm (BlockAddrMode am, Register base, RegList src, Condition cond=al)
 
void stop (const char *msg, Condition cond=al, int32_t code=kDefaultStopCode)
 
void bkpt (uint32_t imm16)
 
void svc (uint32_t imm24, Condition cond=al)
 
void cdp (Coprocessor coproc, int opcode_1, CRegister crd, CRegister crn, CRegister crm, int opcode_2, Condition cond=al)
 
void cdp2 (Coprocessor coproc, int opcode_1, CRegister crd, CRegister crn, CRegister crm, int opcode_2)
 
void mcr (Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0, Condition cond=al)
 
void mcr2 (Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0)
 
void mrc (Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0, Condition cond=al)
 
void mrc2 (Coprocessor coproc, int opcode_1, Register rd, CRegister crn, CRegister crm, int opcode_2=0)
 
void ldc (Coprocessor coproc, CRegister crd, const MemOperand &src, LFlag l=Short, Condition cond=al)
 
void ldc (Coprocessor coproc, CRegister crd, Register base, int option, LFlag l=Short, Condition cond=al)
 
void ldc2 (Coprocessor coproc, CRegister crd, const MemOperand &src, LFlag l=Short)
 
void ldc2 (Coprocessor coproc, CRegister crd, Register base, int option, LFlag l=Short)
 
void vldr (const DwVfpRegister dst, const Register base, int offset, const Condition cond=al)
 
void vldr (const DwVfpRegister dst, const MemOperand &src, const Condition cond=al)
 
void vldr (const SwVfpRegister dst, const Register base, int offset, const Condition cond=al)
 
void vldr (const SwVfpRegister dst, const MemOperand &src, const Condition cond=al)
 
void vstr (const DwVfpRegister src, const Register base, int offset, const Condition cond=al)
 
void vstr (const DwVfpRegister src, const MemOperand &dst, const Condition cond=al)
 
void vstr (const SwVfpRegister src, const Register base, int offset, const Condition cond=al)
 
void vstr (const SwVfpRegister src, const MemOperand &dst, const Condition cond=al)
 
void vldm (BlockAddrMode am, Register base, DwVfpRegister first, DwVfpRegister last, Condition cond=al)
 
void vstm (BlockAddrMode am, Register base, DwVfpRegister first, DwVfpRegister last, Condition cond=al)
 
void vldm (BlockAddrMode am, Register base, SwVfpRegister first, SwVfpRegister last, Condition cond=al)
 
void vstm (BlockAddrMode am, Register base, SwVfpRegister first, SwVfpRegister last, Condition cond=al)
 
void vmov (const DwVfpRegister dst, double imm, const Register scratch=no_reg)
 
void vmov (const SwVfpRegister dst, const SwVfpRegister src, const Condition cond=al)
 
void vmov (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vmov (const DwVfpRegister dst, const VmovIndex index, const Register src, const Condition cond=al)
 
void vmov (const Register dst, const VmovIndex index, const DwVfpRegister src, const Condition cond=al)
 
void vmov (const DwVfpRegister dst, const Register src1, const Register src2, const Condition cond=al)
 
void vmov (const Register dst1, const Register dst2, const DwVfpRegister src, const Condition cond=al)
 
void vmov (const SwVfpRegister dst, const Register src, const Condition cond=al)
 
void vmov (const Register dst, const SwVfpRegister src, const Condition cond=al)
 
void vcvt_f64_s32 (const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f32_s32 (const SwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f64_u32 (const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_s32_f64 (const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_u32_f64 (const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f64_f32 (const DwVfpRegister dst, const SwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f32_f64 (const SwVfpRegister dst, const DwVfpRegister src, VFPConversionMode mode=kDefaultRoundToZero, const Condition cond=al)
 
void vcvt_f64_s32 (const DwVfpRegister dst, int fraction_bits, const Condition cond=al)
 
void vneg (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vabs (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vadd (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vsub (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vmul (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vmla (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vmls (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vdiv (const DwVfpRegister dst, const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vcmp (const DwVfpRegister src1, const DwVfpRegister src2, const Condition cond=al)
 
void vcmp (const DwVfpRegister src1, const double src2, const Condition cond=al)
 
void vmrs (const Register dst, const Condition cond=al)
 
void vmsr (const Register dst, const Condition cond=al)
 
void vsqrt (const DwVfpRegister dst, const DwVfpRegister src, const Condition cond=al)
 
void vld1 (NeonSize size, const NeonListOperand &dst, const NeonMemOperand &src)
 
void vst1 (NeonSize size, const NeonListOperand &src, const NeonMemOperand &dst)
 
void vmovl (NeonDataType dt, QwNeonRegister dst, DwVfpRegister src)
 
void nop (int type=0)
 
void push (Register src, Condition cond=al)
 
void pop (Register dst, Condition cond=al)
 
void pop ()
 
void jmp (Label *L)
 
int SizeOfCodeGeneratedSince (Label *label)
 
int InstructionsGeneratedSince (Label *label)
 
bool ImmediateFitsAddrMode1Instruction (int32_t imm32)
 
bool ImmediateFitsAddrMode2Instruction (int32_t imm32)
 
void RecordJSReturn ()
 
void RecordDebugBreakSlot ()
 
void SetRecordedAstId (TypeFeedbackId ast_id)
 
TypeFeedbackId RecordedAstId ()
 
void ClearRecordedAstId ()
 
void RecordComment (const char *msg)
 
void RecordConstPool (int size)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void emit_code_stub_address (Code *stub)
 
PositionsRecorderpositions_recorder ()
 
Instr instr_at (int pos)
 
void instr_at_put (int pos, Instr instr)
 
void BlockConstPoolFor (int instructions)
 
void CheckConstPool (bool force_emit, bool require_jump)
 
MaybeObject * AllocateConstantPool (Heap *heap)
 
void PopulateConstantPool (ConstantPoolArray *constant_pool)
 
bool can_use_constant_pool () const
 
void set_constant_pool_full ()
 
 Assembler (Isolate *arg_isolate, void *buffer, int buffer_size)
 
virtual ~Assembler ()
 
virtual void AbortedCodeGeneration ()
 
void Reset ()
 
void GetCode (CodeDesc *desc)
 
void Align (int m)
 
void Unreachable ()
 
void bind (Label *label)
 
void RecordRelocInfo (RelocInfo::Mode rmode, intptr_t data=0)
 
uint64_t SizeOfGeneratedCode () const
 
uint64_t SizeOfCodeGeneratedSince (const Label *label)
 
void AssertSizeOfCodeGeneratedSince (const Label *label, ptrdiff_t size)
 
int InstructionsGeneratedSince (const Label *label)
 
void StartBlockConstPool ()
 
void EndBlockConstPool ()
 
bool is_const_pool_blocked () const
 
void ConstantPoolMarker (uint32_t size)
 
void EmitPoolGuard ()
 
void ConstantPoolGuard ()
 
void StartBlockVeneerPool ()
 
void EndBlockVeneerPool ()
 
bool is_veneer_pool_blocked () const
 
void StartBlockPools ()
 
void EndBlockPools ()
 
PositionsRecorderpositions_recorder ()
 
void RecordComment (const char *msg)
 
int buffer_space () const
 
void RecordJSReturn ()
 
void RecordDebugBreakSlot ()
 
void RecordConstPool (int size)
 
void br (const Register &xn)
 
void blr (const Register &xn)
 
void ret (const Register &xn=lr)
 
void b (Label *label)
 
void b (Label *label, Condition cond)
 
void b (int imm26)
 
void b (int imm19, Condition cond)
 
void bl (Label *label)
 
void bl (int imm26)
 
void cbz (const Register &rt, Label *label)
 
void cbz (const Register &rt, int imm19)
 
void cbnz (const Register &rt, Label *label)
 
void cbnz (const Register &rt, int imm19)
 
void tbz (const Register &rt, unsigned bit_pos, Label *label)
 
void tbz (const Register &rt, unsigned bit_pos, int imm14)
 
void tbnz (const Register &rt, unsigned bit_pos, Label *label)
 
void tbnz (const Register &rt, unsigned bit_pos, int imm14)
 
void adr (const Register &rd, Label *label)
 
void adr (const Register &rd, int imm21)
 
void add (const Register &rd, const Register &rn, const Operand &operand)
 
void adds (const Register &rd, const Register &rn, const Operand &operand)
 
void cmn (const Register &rn, const Operand &operand)
 
void sub (const Register &rd, const Register &rn, const Operand &operand)
 
void subs (const Register &rd, const Register &rn, const Operand &operand)
 
void cmp (const Register &rn, const Operand &operand)
 
void neg (const Register &rd, const Operand &operand)
 
void negs (const Register &rd, const Operand &operand)
 
void adc (const Register &rd, const Register &rn, const Operand &operand)
 
void adcs (const Register &rd, const Register &rn, const Operand &operand)
 
void sbc (const Register &rd, const Register &rn, const Operand &operand)
 
void sbcs (const Register &rd, const Register &rn, const Operand &operand)
 
void ngc (const Register &rd, const Operand &operand)
 
void ngcs (const Register &rd, const Operand &operand)
 
void and_ (const Register &rd, const Register &rn, const Operand &operand)
 
void ands (const Register &rd, const Register &rn, const Operand &operand)
 
void tst (const Register &rn, const Operand &operand)
 
void bic (const Register &rd, const Register &rn, const Operand &operand)
 
void bics (const Register &rd, const Register &rn, const Operand &operand)
 
void orr (const Register &rd, const Register &rn, const Operand &operand)
 
void orn (const Register &rd, const Register &rn, const Operand &operand)
 
void eor (const Register &rd, const Register &rn, const Operand &operand)
 
void eon (const Register &rd, const Register &rn, const Operand &operand)
 
void lslv (const Register &rd, const Register &rn, const Register &rm)
 
void lsrv (const Register &rd, const Register &rn, const Register &rm)
 
void asrv (const Register &rd, const Register &rn, const Register &rm)
 
void rorv (const Register &rd, const Register &rn, const Register &rm)
 
void bfm (const Register &rd, const Register &rn, unsigned immr, unsigned imms)
 
void sbfm (const Register &rd, const Register &rn, unsigned immr, unsigned imms)
 
void ubfm (const Register &rd, const Register &rn, unsigned immr, unsigned imms)
 
void bfi (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void bfxil (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void asr (const Register &rd, const Register &rn, unsigned shift)
 
void sbfiz (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void sbfx (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void sxtb (const Register &rd, const Register &rn)
 
void sxth (const Register &rd, const Register &rn)
 
void sxtw (const Register &rd, const Register &rn)
 
void lsl (const Register &rd, const Register &rn, unsigned shift)
 
void lsr (const Register &rd, const Register &rn, unsigned shift)
 
void ubfiz (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void ubfx (const Register &rd, const Register &rn, unsigned lsb, unsigned width)
 
void uxtb (const Register &rd, const Register &rn)
 
void uxth (const Register &rd, const Register &rn)
 
void uxtw (const Register &rd, const Register &rn)
 
void extr (const Register &rd, const Register &rn, const Register &rm, unsigned lsb)
 
void csel (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void csinc (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void csinv (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void csneg (const Register &rd, const Register &rn, const Register &rm, Condition cond)
 
void cset (const Register &rd, Condition cond)
 
void csetm (const Register &rd, Condition cond)
 
void cinc (const Register &rd, const Register &rn, Condition cond)
 
void cinv (const Register &rd, const Register &rn, Condition cond)
 
void cneg (const Register &rd, const Register &rn, Condition cond)
 
void ror (const Register &rd, const Register &rs, unsigned shift)
 
void ccmn (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond)
 
void ccmp (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond)
 
void mul (const Register &rd, const Register &rn, const Register &rm)
 
void madd (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void mneg (const Register &rd, const Register &rn, const Register &rm)
 
void msub (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void smull (const Register &rd, const Register &rn, const Register &rm)
 
void smulh (const Register &rd, const Register &rn, const Register &rm)
 
void smaddl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void umaddl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void smsubl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void umsubl (const Register &rd, const Register &rn, const Register &rm, const Register &ra)
 
void sdiv (const Register &rd, const Register &rn, const Register &rm)
 
void udiv (const Register &rd, const Register &rn, const Register &rm)
 
void rbit (const Register &rd, const Register &rn)
 
void rev16 (const Register &rd, const Register &rn)
 
void rev32 (const Register &rd, const Register &rn)
 
void rev (const Register &rd, const Register &rn)
 
void clz (const Register &rd, const Register &rn)
 
void cls (const Register &rd, const Register &rn)
 
void LoadLiteral (const CPURegister &rt, int offset_from_pc)
 
void ldr (const CPURegister &rt, const MemOperand &src)
 
void str (const CPURegister &rt, const MemOperand &dst)
 
void ldrsw (const Register &rt, const MemOperand &src)
 
void ldrb (const Register &rt, const MemOperand &src)
 
void strb (const Register &rt, const MemOperand &dst)
 
void ldrsb (const Register &rt, const MemOperand &src)
 
void ldrh (const Register &rt, const MemOperand &src)
 
void strh (const Register &rt, const MemOperand &dst)
 
void ldrsh (const Register &rt, const MemOperand &src)
 
void ldp (const CPURegister &rt, const CPURegister &rt2, const MemOperand &src)
 
void stp (const CPURegister &rt, const CPURegister &rt2, const MemOperand &dst)
 
void ldpsw (const Register &rt, const Register &rt2, const MemOperand &src)
 
void ldnp (const CPURegister &rt, const CPURegister &rt2, const MemOperand &src)
 
void stnp (const CPURegister &rt, const CPURegister &rt2, const MemOperand &dst)
 
void ldr (const Register &rt, uint64_t imm)
 
void ldr (const FPRegister &ft, double imm)
 
void ldr (const FPRegister &ft, float imm)
 
void movk (const Register &rd, uint64_t imm, int shift=-1)
 
void movn (const Register &rd, uint64_t imm, int shift=-1)
 
void movz (const Register &rd, uint64_t imm, int shift=-1)
 
void brk (int code)
 
void hlt (int code)
 
void mov (const Register &rd, const Register &rn)
 
void mvn (const Register &rd, const Operand &operand)
 
void mrs (const Register &rt, SystemRegister sysreg)
 
void msr (SystemRegister sysreg, const Register &rt)
 
void hint (SystemHint code)
 
void dmb (BarrierDomain domain, BarrierType type)
 
void dsb (BarrierDomain domain, BarrierType type)
 
void isb ()
 
void nop ()
 
void nop (NopMarkerTypes n)
 
void fmov (FPRegister fd, double imm)
 
void fmov (FPRegister fd, float imm)
 
void fmov (Register rd, FPRegister fn)
 
void fmov (FPRegister fd, Register rn)
 
void fmov (FPRegister fd, FPRegister fn)
 
void fadd (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm)
 
void fsub (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm)
 
void fmul (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm)
 
void fmadd (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm, const FPRegister &fa)
 
void fmsub (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm, const FPRegister &fa)
 
void fnmadd (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm, const FPRegister &fa)
 
void fnmsub (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm, const FPRegister &fa)
 
void fdiv (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm)
 
void fmax (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm)
 
void fmin (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm)
 
void fmaxnm (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm)
 
void fminnm (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm)
 
void fabs (const FPRegister &fd, const FPRegister &fn)
 
void fneg (const FPRegister &fd, const FPRegister &fn)
 
void fsqrt (const FPRegister &fd, const FPRegister &fn)
 
void frinta (const FPRegister &fd, const FPRegister &fn)
 
void frintn (const FPRegister &fd, const FPRegister &fn)
 
void frintz (const FPRegister &fd, const FPRegister &fn)
 
void fcmp (const FPRegister &fn, const FPRegister &fm)
 
void fcmp (const FPRegister &fn, double value)
 
void fccmp (const FPRegister &fn, const FPRegister &fm, StatusFlags nzcv, Condition cond)
 
void fcsel (const FPRegister &fd, const FPRegister &fn, const FPRegister &fm, Condition cond)
 
void FPConvertToInt (const Register &rd, const FPRegister &fn, FPIntegerConvertOp op)
 
void fcvt (const FPRegister &fd, const FPRegister &fn)
 
void fcvtau (const Register &rd, const FPRegister &fn)
 
void fcvtas (const Register &rd, const FPRegister &fn)
 
void fcvtmu (const Register &rd, const FPRegister &fn)
 
void fcvtms (const Register &rd, const FPRegister &fn)
 
void fcvtnu (const Register &rd, const FPRegister &fn)
 
void fcvtns (const Register &rd, const FPRegister &fn)
 
void fcvtzu (const Register &rd, const FPRegister &fn)
 
void fcvtzs (const Register &rd, const FPRegister &fn)
 
void scvtf (const FPRegister &fd, const Register &rn, unsigned fbits=0)
 
void ucvtf (const FPRegister &fd, const Register &rn, unsigned fbits=0)
 
void dci (Instr raw_inst)
 
void dc8 (uint8_t data)
 
void dc32 (uint32_t data)
 
void dc64 (uint64_t data)
 
void EmitStringData (const char *string)
 
void debug (const char *message, uint32_t code, Instr params=BREAK)
 
void dd (uint32_t data)
 
void db (uint8_t data)
 
unsigned num_pending_reloc_info () const
 
InstructionInstructionAt (int offset) const
 
void CheckConstPool (bool force_emit, bool require_jump)
 
MaybeObject * AllocateConstantPool (Heap *heap)
 
void PopulateConstantPool (ConstantPoolArray *constant_pool)
 
bool ShouldEmitVeneer (int max_reachable_pc, int margin=kVeneerDistanceMargin)
 
bool ShouldEmitVeneers (int margin=kVeneerDistanceMargin)
 
void RecordVeneerPool (int location_offset, int size)
 
void EmitVeneers (bool force_emit, bool need_protection, int margin=kVeneerDistanceMargin)
 
void EmitVeneersGuard ()
 
void CheckVeneerPool (bool force_emit, bool require_jump, int margin=kVeneerDistanceMargin)
 
void LoadRelocated (const CPURegister &rt, const Operand &operand)
 
 Assembler (Isolate *isolate, void *buffer, int buffer_size)
 
virtual ~Assembler ()
 
void GetCode (CodeDesc *desc)
 
void Align (int m)
 
void Nop (int bytes=1)
 
void CodeTargetAlign ()
 
void pushad ()
 
void popad ()
 
void pushfd ()
 
void popfd ()
 
void push (const Immediate &x)
 
void push_imm32 (int32_t imm32)
 
void push (Register src)
 
void push (const Operand &src)
 
void pop (Register dst)
 
void pop (const Operand &dst)
 
void enter (const Immediate &size)
 
void leave ()
 
void mov_b (Register dst, Register src)
 
void mov_b (Register dst, const Operand &src)
 
void mov_b (Register dst, int8_t imm8)
 
void mov_b (const Operand &dst, int8_t imm8)
 
void mov_b (const Operand &dst, Register src)
 
void mov_w (Register dst, const Operand &src)
 
void mov_w (const Operand &dst, Register src)
 
void mov_w (const Operand &dst, int16_t imm16)
 
void mov (Register dst, int32_t imm32)
 
void mov (Register dst, const Immediate &x)
 
void mov (Register dst, Handle< Object > handle)
 
void mov (Register dst, const Operand &src)
 
void mov (Register dst, Register src)
 
void mov (const Operand &dst, const Immediate &x)
 
void mov (const Operand &dst, Handle< Object > handle)
 
void mov (const Operand &dst, Register src)
 
void movsx_b (Register dst, Register src)
 
void movsx_b (Register dst, const Operand &src)
 
void movsx_w (Register dst, Register src)
 
void movsx_w (Register dst, const Operand &src)
 
void movzx_b (Register dst, Register src)
 
void movzx_b (Register dst, const Operand &src)
 
void movzx_w (Register dst, Register src)
 
void movzx_w (Register dst, const Operand &src)
 
void cmov (Condition cc, Register dst, Register src)
 
void cmov (Condition cc, Register dst, const Operand &src)
 
void cld ()
 
void rep_movs ()
 
void rep_stos ()
 
void stos ()
 
void xchg (Register dst, Register src)
 
void adc (Register dst, int32_t imm32)
 
void adc (Register dst, const Operand &src)
 
void add (Register dst, Register src)
 
void add (Register dst, const Operand &src)
 
void add (const Operand &dst, Register src)
 
void add (Register dst, const Immediate &imm)
 
void add (const Operand &dst, const Immediate &x)
 
void and_ (Register dst, int32_t imm32)
 
void and_ (Register dst, const Immediate &x)
 
void and_ (Register dst, Register src)
 
void and_ (Register dst, const Operand &src)
 
void and_ (const Operand &dst, Register src)
 
void and_ (const Operand &dst, const Immediate &x)
 
void cmpb (Register reg, int8_t imm8)
 
void cmpb (const Operand &op, int8_t imm8)
 
void cmpb (Register reg, const Operand &op)
 
void cmpb (const Operand &op, Register reg)
 
void cmpb_al (const Operand &op)
 
void cmpw_ax (const Operand &op)
 
void cmpw (const Operand &op, Immediate imm16)
 
void cmp (Register reg, int32_t imm32)
 
void cmp (Register reg, Handle< Object > handle)
 
void cmp (Register reg0, Register reg1)
 
void cmp (Register reg, const Operand &op)
 
void cmp (Register reg, const Immediate &imm)
 
void cmp (const Operand &op, const Immediate &imm)
 
void cmp (const Operand &op, Handle< Object > handle)
 
void dec_b (Register dst)
 
void dec_b (const Operand &dst)
 
void dec (Register dst)
 
void dec (const Operand &dst)
 
void cdq ()
 
void idiv (Register src)
 
void imul (Register src)
 
void imul (Register dst, Register src)
 
void imul (Register dst, const Operand &src)
 
void imul (Register dst, Register src, int32_t imm32)
 
void inc (Register dst)
 
void inc (const Operand &dst)
 
void lea (Register dst, const Operand &src)
 
void mul (Register src)
 
void neg (Register dst)
 
void not_ (Register dst)
 
void or_ (Register dst, int32_t imm32)
 
void or_ (Register dst, Register src)
 
void or_ (Register dst, const Operand &src)
 
void or_ (const Operand &dst, Register src)
 
void or_ (Register dst, const Immediate &imm)
 
void or_ (const Operand &dst, const Immediate &x)
 
void rcl (Register dst, uint8_t imm8)
 
void rcr (Register dst, uint8_t imm8)
 
void ror (Register dst, uint8_t imm8)
 
void ror_cl (Register dst)
 
void sar (Register dst, uint8_t imm8)
 
void sar_cl (Register dst)
 
void sbb (Register dst, const Operand &src)
 
void shld (Register dst, Register src)
 
void shld (Register dst, const Operand &src)
 
void shl (Register dst, uint8_t imm8)
 
void shl_cl (Register dst)
 
void shrd (Register dst, Register src)
 
void shrd (Register dst, const Operand &src)
 
void shr (Register dst, uint8_t imm8)
 
void shr_cl (Register dst)
 
void sub (Register dst, const Immediate &imm)
 
void sub (const Operand &dst, const Immediate &x)
 
void sub (Register dst, Register src)
 
void sub (Register dst, const Operand &src)
 
void sub (const Operand &dst, Register src)
 
void test (Register reg, const Immediate &imm)
 
void test (Register reg0, Register reg1)
 
void test (Register reg, const Operand &op)
 
void test_b (Register reg, const Operand &op)
 
void test (const Operand &op, const Immediate &imm)
 
void test_b (Register reg, uint8_t imm8)
 
void test_b (const Operand &op, uint8_t imm8)
 
void xor_ (Register dst, int32_t imm32)
 
void xor_ (Register dst, Register src)
 
void xor_ (Register dst, const Operand &src)
 
void xor_ (const Operand &dst, Register src)
 
void xor_ (Register dst, const Immediate &imm)
 
void xor_ (const Operand &dst, const Immediate &x)
 
void bt (const Operand &dst, Register src)
 
void bts (Register dst, Register src)
 
void bts (const Operand &dst, Register src)
 
void bsr (Register dst, Register src)
 
void bsr (Register dst, const Operand &src)
 
void hlt ()
 
void int3 ()
 
void nop ()
 
void ret (int imm16)
 
void bind (Label *L)
 
void call (Label *L)
 
void call (byte *entry, RelocInfo::Mode rmode)
 
int CallSize (const Operand &adr)
 
void call (Register reg)
 
void call (const Operand &adr)
 
int CallSize (Handle< Code > code, RelocInfo::Mode mode)
 
void call (Handle< Code > code, RelocInfo::Mode rmode, TypeFeedbackId id=TypeFeedbackId::None())
 
void jmp (Label *L, Label::Distance distance=Label::kFar)
 
void jmp (byte *entry, RelocInfo::Mode rmode)
 
void jmp (Register reg)
 
void jmp (const Operand &adr)
 
void jmp (Handle< Code > code, RelocInfo::Mode rmode)
 
void j (Condition cc, Label *L, Label::Distance distance=Label::kFar)
 
void j (Condition cc, byte *entry, RelocInfo::Mode rmode)
 
void j (Condition cc, Handle< Code > code)
 
void fld (int i)
 
void fstp (int i)
 
void fld1 ()
 
void fldz ()
 
void fldpi ()
 
void fldln2 ()
 
void fld_s (const Operand &adr)
 
void fld_d (const Operand &adr)
 
void fstp_s (const Operand &adr)
 
void fst_s (const Operand &adr)
 
void fstp_d (const Operand &adr)
 
void fst_d (const Operand &adr)
 
void fild_s (const Operand &adr)
 
void fild_d (const Operand &adr)
 
void fist_s (const Operand &adr)
 
void fistp_s (const Operand &adr)
 
void fistp_d (const Operand &adr)
 
void fisttp_s (const Operand &adr)
 
void fisttp_d (const Operand &adr)
 
void fabs ()
 
void fchs ()
 
void fcos ()
 
void fsin ()
 
void fptan ()
 
void fyl2x ()
 
void f2xm1 ()
 
void fscale ()
 
void fninit ()
 
void fadd (int i)
 
void fadd_i (int i)
 
void fsub (int i)
 
void fsub_i (int i)
 
void fmul (int i)
 
void fmul_i (int i)
 
void fdiv (int i)
 
void fdiv_i (int i)
 
void fisub_s (const Operand &adr)
 
void faddp (int i=1)
 
void fsubp (int i=1)
 
void fsubrp (int i=1)
 
void fmulp (int i=1)
 
void fdivp (int i=1)
 
void fprem ()
 
void fprem1 ()
 
void fxch (int i=1)
 
void fincstp ()
 
void ffree (int i=0)
 
void ftst ()
 
void fucomp (int i)
 
void fucompp ()
 
void fucomi (int i)
 
void fucomip ()
 
void fcompp ()
 
void fnstsw_ax ()
 
void fwait ()
 
void fnclex ()
 
void frndint ()
 
void sahf ()
 
void setcc (Condition cc, Register reg)
 
void cpuid ()
 
void movaps (XMMRegister dst, XMMRegister src)
 
void shufps (XMMRegister dst, XMMRegister src, byte imm8)
 
void andps (XMMRegister dst, const Operand &src)
 
void andps (XMMRegister dst, XMMRegister src)
 
void xorps (XMMRegister dst, const Operand &src)
 
void xorps (XMMRegister dst, XMMRegister src)
 
void orps (XMMRegister dst, const Operand &src)
 
void orps (XMMRegister dst, XMMRegister src)
 
void addps (XMMRegister dst, const Operand &src)
 
void addps (XMMRegister dst, XMMRegister src)
 
void subps (XMMRegister dst, const Operand &src)
 
void subps (XMMRegister dst, XMMRegister src)
 
void mulps (XMMRegister dst, const Operand &src)
 
void mulps (XMMRegister dst, XMMRegister src)
 
void divps (XMMRegister dst, const Operand &src)
 
void divps (XMMRegister dst, XMMRegister src)
 
void cvttss2si (Register dst, const Operand &src)
 
void cvttss2si (Register dst, XMMRegister src)
 
void cvttsd2si (Register dst, const Operand &src)
 
void cvtsd2si (Register dst, XMMRegister src)
 
void cvtsi2sd (XMMRegister dst, Register src)
 
void cvtsi2sd (XMMRegister dst, const Operand &src)
 
void cvtss2sd (XMMRegister dst, XMMRegister src)
 
void cvtsd2ss (XMMRegister dst, XMMRegister src)
 
void addsd (XMMRegister dst, XMMRegister src)
 
void addsd (XMMRegister dst, const Operand &src)
 
void subsd (XMMRegister dst, XMMRegister src)
 
void mulsd (XMMRegister dst, XMMRegister src)
 
void mulsd (XMMRegister dst, const Operand &src)
 
void divsd (XMMRegister dst, XMMRegister src)
 
void xorpd (XMMRegister dst, XMMRegister src)
 
void sqrtsd (XMMRegister dst, XMMRegister src)
 
void andpd (XMMRegister dst, XMMRegister src)
 
void orpd (XMMRegister dst, XMMRegister src)
 
void ucomisd (XMMRegister dst, XMMRegister src)
 
void ucomisd (XMMRegister dst, const Operand &src)
 
void roundsd (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void movmskpd (Register dst, XMMRegister src)
 
void movmskps (Register dst, XMMRegister src)
 
void cmpltsd (XMMRegister dst, XMMRegister src)
 
void pcmpeqd (XMMRegister dst, XMMRegister src)
 
void movdqa (XMMRegister dst, const Operand &src)
 
void movdqa (const Operand &dst, XMMRegister src)
 
void movdqu (XMMRegister dst, const Operand &src)
 
void movdqu (const Operand &dst, XMMRegister src)
 
void movdq (bool aligned, XMMRegister dst, const Operand &src)
 
void movd (XMMRegister dst, Register src)
 
void movd (XMMRegister dst, const Operand &src)
 
void movd (Register dst, XMMRegister src)
 
void movd (const Operand &dst, XMMRegister src)
 
void movsd (XMMRegister dst, XMMRegister src)
 
void movsd (XMMRegister dst, const Operand &src)
 
void movsd (const Operand &dst, XMMRegister src)
 
void movss (XMMRegister dst, const Operand &src)
 
void movss (const Operand &dst, XMMRegister src)
 
void movss (XMMRegister dst, XMMRegister src)
 
void extractps (Register dst, XMMRegister src, byte imm8)
 
void pand (XMMRegister dst, XMMRegister src)
 
void pxor (XMMRegister dst, XMMRegister src)
 
void por (XMMRegister dst, XMMRegister src)
 
void ptest (XMMRegister dst, XMMRegister src)
 
void psllq (XMMRegister reg, int8_t shift)
 
void psllq (XMMRegister dst, XMMRegister src)
 
void psrlq (XMMRegister reg, int8_t shift)
 
void psrlq (XMMRegister dst, XMMRegister src)
 
void pshufd (XMMRegister dst, XMMRegister src, uint8_t shuffle)
 
void pextrd (Register dst, XMMRegister src, int8_t offset)
 
void pextrd (const Operand &dst, XMMRegister src, int8_t offset)
 
void pinsrd (XMMRegister dst, Register src, int8_t offset)
 
void pinsrd (XMMRegister dst, const Operand &src, int8_t offset)
 
void movntdqa (XMMRegister dst, const Operand &src)
 
void movntdq (const Operand &dst, XMMRegister src)
 
void prefetch (const Operand &src, int level)
 
void Print ()
 
int SizeOfCodeGeneratedSince (Label *label)
 
void RecordJSReturn ()
 
void RecordDebugBreakSlot ()
 
void RecordComment (const char *msg, bool force=false)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
bool buffer_overflow () const
 
int available_space () const
 
PositionsRecorderpositions_recorder ()
 
int relocation_writer_size ()
 
byte byte_at (int pos)
 
void set_byte_at (int pos, byte value)
 
MaybeObject * AllocateConstantPool (Heap *heap)
 
void PopulateConstantPool (ConstantPoolArray *constant_pool)
 
 Assembler (Isolate *isolate, void *buffer, int buffer_size)
 
virtual ~Assembler ()
 
void GetCode (CodeDesc *desc)
 
void bind (Label *L)
 
bool is_near (Label *L)
 
int32_t branch_offset (Label *L, bool jump_elimination_allowed)
 
int32_t shifted_branch_offset (Label *L, bool jump_elimination_allowed)
 
uint32_t jump_address (Label *L)
 
void label_at_put (Label *L, int at_offset)
 
 INLINE (static Address target_address_at(Address pc, ConstantPoolArray *constant_pool))
 
 INLINE (static void set_target_address_at(Address pc, ConstantPoolArray *constant_pool, Address target))
 
 INLINE (static Address target_address_at(Address pc, Code *code))
 
 INLINE (static void set_target_address_at(Address pc, Code *code, Address target))
 
void Align (int m)
 
void CodeTargetAlign ()
 
void nop (unsigned int type=0)
 
void b (int16_t offset)
 
void b (Label *L)
 
void bal (int16_t offset)
 
void bal (Label *L)
 
void beq (Register rs, Register rt, int16_t offset)
 
void beq (Register rs, Register rt, Label *L)
 
void bgez (Register rs, int16_t offset)
 
void bgezal (Register rs, int16_t offset)
 
void bgtz (Register rs, int16_t offset)
 
void blez (Register rs, int16_t offset)
 
void bltz (Register rs, int16_t offset)
 
void bltzal (Register rs, int16_t offset)
 
void bne (Register rs, Register rt, int16_t offset)
 
void bne (Register rs, Register rt, Label *L)
 
void j (int32_t target)
 
void jal (int32_t target)
 
void jalr (Register rs, Register rd=ra)
 
void jr (Register target)
 
void j_or_jr (int32_t target, Register rs)
 
void jal_or_jalr (int32_t target, Register rs)
 
void addu (Register rd, Register rs, Register rt)
 
void subu (Register rd, Register rs, Register rt)
 
void mult (Register rs, Register rt)
 
void multu (Register rs, Register rt)
 
void div (Register rs, Register rt)
 
void divu (Register rs, Register rt)
 
void mul (Register rd, Register rs, Register rt)
 
void addiu (Register rd, Register rs, int32_t j)
 
void and_ (Register rd, Register rs, Register rt)
 
void or_ (Register rd, Register rs, Register rt)
 
void xor_ (Register rd, Register rs, Register rt)
 
void nor (Register rd, Register rs, Register rt)
 
void andi (Register rd, Register rs, int32_t j)
 
void ori (Register rd, Register rs, int32_t j)
 
void xori (Register rd, Register rs, int32_t j)
 
void lui (Register rd, int32_t j)
 
void sll (Register rd, Register rt, uint16_t sa, bool coming_from_nop=false)
 
void sllv (Register rd, Register rt, Register rs)
 
void srl (Register rd, Register rt, uint16_t sa)
 
void srlv (Register rd, Register rt, Register rs)
 
void sra (Register rt, Register rd, uint16_t sa)
 
void srav (Register rt, Register rd, Register rs)
 
void rotr (Register rd, Register rt, uint16_t sa)
 
void rotrv (Register rd, Register rt, Register rs)
 
void lb (Register rd, const MemOperand &rs)
 
void lbu (Register rd, const MemOperand &rs)
 
void lh (Register rd, const MemOperand &rs)
 
void lhu (Register rd, const MemOperand &rs)
 
void lw (Register rd, const MemOperand &rs)
 
void lwl (Register rd, const MemOperand &rs)
 
void lwr (Register rd, const MemOperand &rs)
 
void sb (Register rd, const MemOperand &rs)
 
void sh (Register rd, const MemOperand &rs)
 
void sw (Register rd, const MemOperand &rs)
 
void swl (Register rd, const MemOperand &rs)
 
void swr (Register rd, const MemOperand &rs)
 
void pref (int32_t hint, const MemOperand &rs)
 
void break_ (uint32_t code, bool break_as_stop=false)
 
void stop (const char *msg, uint32_t code=kMaxStopCode)
 
void tge (Register rs, Register rt, uint16_t code)
 
void tgeu (Register rs, Register rt, uint16_t code)
 
void tlt (Register rs, Register rt, uint16_t code)
 
void tltu (Register rs, Register rt, uint16_t code)
 
void teq (Register rs, Register rt, uint16_t code)
 
void tne (Register rs, Register rt, uint16_t code)
 
void mfhi (Register rd)
 
void mflo (Register rd)
 
void slt (Register rd, Register rs, Register rt)
 
void sltu (Register rd, Register rs, Register rt)
 
void slti (Register rd, Register rs, int32_t j)
 
void sltiu (Register rd, Register rs, int32_t j)
 
void movz (Register rd, Register rs, Register rt)
 
void movn (Register rd, Register rs, Register rt)
 
void movt (Register rd, Register rs, uint16_t cc=0)
 
void movf (Register rd, Register rs, uint16_t cc=0)
 
void clz (Register rd, Register rs)
 
void ins_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void ext_ (Register rt, Register rs, uint16_t pos, uint16_t size)
 
void lwc1 (FPURegister fd, const MemOperand &src)
 
void ldc1 (FPURegister fd, const MemOperand &src)
 
void swc1 (FPURegister fs, const MemOperand &dst)
 
void sdc1 (FPURegister fs, const MemOperand &dst)
 
void mtc1 (Register rt, FPURegister fs)
 
void mfc1 (Register rt, FPURegister fs)
 
void ctc1 (Register rt, FPUControlRegister fs)
 
void cfc1 (Register rt, FPUControlRegister fs)
 
void add_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void sub_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void mul_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void madd_d (FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft)
 
void div_d (FPURegister fd, FPURegister fs, FPURegister ft)
 
void abs_d (FPURegister fd, FPURegister fs)
 
void mov_d (FPURegister fd, FPURegister fs)
 
void neg_d (FPURegister fd, FPURegister fs)
 
void sqrt_d (FPURegister fd, FPURegister fs)
 
void cvt_w_s (FPURegister fd, FPURegister fs)
 
void cvt_w_d (FPURegister fd, FPURegister fs)
 
void trunc_w_s (FPURegister fd, FPURegister fs)
 
void trunc_w_d (FPURegister fd, FPURegister fs)
 
void round_w_s (FPURegister fd, FPURegister fs)
 
void round_w_d (FPURegister fd, FPURegister fs)
 
void floor_w_s (FPURegister fd, FPURegister fs)
 
void floor_w_d (FPURegister fd, FPURegister fs)
 
void ceil_w_s (FPURegister fd, FPURegister fs)
 
void ceil_w_d (FPURegister fd, FPURegister fs)
 
void cvt_l_s (FPURegister fd, FPURegister fs)
 
void cvt_l_d (FPURegister fd, FPURegister fs)
 
void trunc_l_s (FPURegister fd, FPURegister fs)
 
void trunc_l_d (FPURegister fd, FPURegister fs)
 
void round_l_s (FPURegister fd, FPURegister fs)
 
void round_l_d (FPURegister fd, FPURegister fs)
 
void floor_l_s (FPURegister fd, FPURegister fs)
 
void floor_l_d (FPURegister fd, FPURegister fs)
 
void ceil_l_s (FPURegister fd, FPURegister fs)
 
void ceil_l_d (FPURegister fd, FPURegister fs)
 
void cvt_s_w (FPURegister fd, FPURegister fs)
 
void cvt_s_l (FPURegister fd, FPURegister fs)
 
void cvt_s_d (FPURegister fd, FPURegister fs)
 
void cvt_d_w (FPURegister fd, FPURegister fs)
 
void cvt_d_l (FPURegister fd, FPURegister fs)
 
void cvt_d_s (FPURegister fd, FPURegister fs)
 
void c (FPUCondition cond, SecondaryField fmt, FPURegister ft, FPURegister fs, uint16_t cc=0)
 
void bc1f (int16_t offset, uint16_t cc=0)
 
void bc1f (Label *L, uint16_t cc=0)
 
void bc1t (int16_t offset, uint16_t cc=0)
 
void bc1t (Label *L, uint16_t cc=0)
 
void fcmp (FPURegister src1, const double src2, FPUCondition cond)
 
int SizeOfCodeGeneratedSince (Label *label)
 
int InstructionsGeneratedSince (Label *label)
 
void RecordJSReturn ()
 
void RecordDebugBreakSlot ()
 
void SetRecordedAstId (TypeFeedbackId ast_id)
 
TypeFeedbackId RecordedAstId ()
 
void ClearRecordedAstId ()
 
void RecordComment (const char *msg)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
void emit_code_stub_address (Code *stub)
 
PositionsRecorderpositions_recorder ()
 
void BlockTrampolinePoolFor (int instructions)
 
bool overflow () const
 
int available_space () const
 
Instr instr_at (int pos)
 
void instr_at_put (int pos, Instr instr)
 
void CheckTrampolinePool ()
 
MaybeObject * AllocateConstantPool (Heap *heap)
 
void PopulateConstantPool (ConstantPoolArray *constant_pool)
 
 Assembler (Isolate *isolate, void *buffer, int buffer_size)
 
virtual ~Assembler ()
 
void GetCode (CodeDesc *desc)
 
Handle< Objectcode_target_object_handle_at (Address pc)
 
Address runtime_entry_at (Address pc)
 
void Align (int m)
 
void Nop (int bytes=1)
 
void CodeTargetAlign ()
 
void pushfq ()
 
void popfq ()
 
void pushq (Immediate value)
 
void pushq_imm32 (int32_t imm32)
 
void pushq (Register src)
 
void pushq (const Operand &src)
 
void popq (Register dst)
 
void popq (const Operand &dst)
 
void enter (Immediate size)
 
void leave ()
 
void movb (Register dst, const Operand &src)
 
void movb (Register dst, Immediate imm)
 
void movb (const Operand &dst, Register src)
 
void movb (const Operand &dst, Immediate imm)
 
void movw (Register dst, const Operand &src)
 
void movw (const Operand &dst, Register src)
 
void movw (const Operand &dst, Immediate imm)
 
void movl (const Operand &dst, Label *src)
 
void movp (Register dst, void *ptr, RelocInfo::Mode rmode)
 
void movq (Register dst, int64_t value)
 
void movq (Register dst, uint64_t value)
 
void movsxbq (Register dst, const Operand &src)
 
void movsxwq (Register dst, const Operand &src)
 
void movsxlq (Register dst, Register src)
 
void movsxlq (Register dst, const Operand &src)
 
void repmovsb ()
 
void repmovsw ()
 
void repmovsp ()
 
void repmovsl ()
 
void repmovsq ()
 
void load_rax (void *ptr, RelocInfo::Mode rmode)
 
void load_rax (ExternalReference ext)
 
void cmovq (Condition cc, Register dst, Register src)
 
void cmovq (Condition cc, Register dst, const Operand &src)
 
void cmovl (Condition cc, Register dst, Register src)
 
void cmovl (Condition cc, Register dst, const Operand &src)
 
void cmpb (Register dst, Immediate src)
 
void cmpb_al (Immediate src)
 
void cmpb (Register dst, Register src)
 
void cmpb (Register dst, const Operand &src)
 
void cmpb (const Operand &dst, Register src)
 
void cmpb (const Operand &dst, Immediate src)
 
void cmpw (const Operand &dst, Immediate src)
 
void cmpw (Register dst, Immediate src)
 
void cmpw (Register dst, const Operand &src)
 
void cmpw (Register dst, Register src)
 
void cmpw (const Operand &dst, Register src)
 
void andb (Register dst, Immediate src)
 
void decb (Register dst)
 
void decb (const Operand &dst)
 
void cqo ()
 
void cdq ()
 
void mul (Register src)
 
void rcl (Register dst, Immediate imm8)
 
void rol (Register dst, Immediate imm8)
 
void roll (Register dst, Immediate imm8)
 
void rcr (Register dst, Immediate imm8)
 
void ror (Register dst, Immediate imm8)
 
void rorl (Register dst, Immediate imm8)
 
void rorl_cl (Register dst)
 
void shld (Register dst, Register src)
 
void shrd (Register dst, Register src)
 
void sar (Register dst, Immediate shift_amount)
 
void sarl (Register dst, Immediate shift_amount)
 
void sar_cl (Register dst)
 
void sarl_cl (Register dst)
 
void shl (Register dst, Immediate shift_amount)
 
void shl_cl (Register dst)
 
void shll_cl (Register dst)
 
void shll (Register dst, Immediate shift_amount)
 
void shr (Register dst, Immediate shift_amount)
 
void shr_cl (Register dst)
 
void shrl_cl (Register dst)
 
void shrl (Register dst, Immediate shift_amount)
 
void store_rax (void *dst, RelocInfo::Mode mode)
 
void store_rax (ExternalReference ref)
 
void subb (Register dst, Immediate src)
 
void testb (Register dst, Register src)
 
void testb (Register reg, Immediate mask)
 
void testb (const Operand &op, Immediate mask)
 
void testb (const Operand &op, Register reg)
 
void bt (const Operand &dst, Register src)
 
void bts (const Operand &dst, Register src)
 
void bsrl (Register dst, Register src)
 
void clc ()
 
void cld ()
 
void cpuid ()
 
void hlt ()
 
void int3 ()
 
void nop ()
 
void ret (int imm16)
 
void setcc (Condition cc, Register reg)
 
void bind (Label *L)
 
void call (Label *L)
 
void call (Address entry, RelocInfo::Mode rmode)
 
void call (Handle< Code > target, RelocInfo::Mode rmode=RelocInfo::CODE_TARGET, TypeFeedbackId ast_id=TypeFeedbackId::None())
 
void call (Address target)
 
void call (Register adr)
 
void jmp (Label *L, Label::Distance distance=Label::kFar)
 
void jmp (Address entry, RelocInfo::Mode rmode)
 
void jmp (Handle< Code > target, RelocInfo::Mode rmode)
 
void jmp (Register adr)
 
void j (Condition cc, Label *L, Label::Distance distance=Label::kFar)
 
void j (Condition cc, Address entry, RelocInfo::Mode rmode)
 
void j (Condition cc, Handle< Code > target, RelocInfo::Mode rmode)
 
void fld (int i)
 
void fld1 ()
 
void fldz ()
 
void fldpi ()
 
void fldln2 ()
 
void fld_s (const Operand &adr)
 
void fld_d (const Operand &adr)
 
void fstp_s (const Operand &adr)
 
void fstp_d (const Operand &adr)
 
void fstp (int index)
 
void fild_s (const Operand &adr)
 
void fild_d (const Operand &adr)
 
void fist_s (const Operand &adr)
 
void fistp_s (const Operand &adr)
 
void fistp_d (const Operand &adr)
 
void fisttp_s (const Operand &adr)
 
void fisttp_d (const Operand &adr)
 
void fabs ()
 
void fchs ()
 
void fadd (int i)
 
void fsub (int i)
 
void fmul (int i)
 
void fdiv (int i)
 
void fisub_s (const Operand &adr)
 
void faddp (int i=1)
 
void fsubp (int i=1)
 
void fsubrp (int i=1)
 
void fmulp (int i=1)
 
void fdivp (int i=1)
 
void fprem ()
 
void fprem1 ()
 
void fxch (int i=1)
 
void fincstp ()
 
void ffree (int i=0)
 
void ftst ()
 
void fucomp (int i)
 
void fucompp ()
 
void fucomi (int i)
 
void fucomip ()
 
void fcompp ()
 
void fnstsw_ax ()
 
void fwait ()
 
void fnclex ()
 
void fsin ()
 
void fcos ()
 
void fptan ()
 
void fyl2x ()
 
void f2xm1 ()
 
void fscale ()
 
void fninit ()
 
void frndint ()
 
void sahf ()
 
void movaps (XMMRegister dst, XMMRegister src)
 
void movss (XMMRegister dst, const Operand &src)
 
void movss (const Operand &dst, XMMRegister src)
 
void shufps (XMMRegister dst, XMMRegister src, byte imm8)
 
void cvttss2si (Register dst, const Operand &src)
 
void cvttss2si (Register dst, XMMRegister src)
 
void cvtlsi2ss (XMMRegister dst, Register src)
 
void andps (XMMRegister dst, XMMRegister src)
 
void andps (XMMRegister dst, const Operand &src)
 
void orps (XMMRegister dst, XMMRegister src)
 
void orps (XMMRegister dst, const Operand &src)
 
void xorps (XMMRegister dst, XMMRegister src)
 
void xorps (XMMRegister dst, const Operand &src)
 
void addps (XMMRegister dst, XMMRegister src)
 
void addps (XMMRegister dst, const Operand &src)
 
void subps (XMMRegister dst, XMMRegister src)
 
void subps (XMMRegister dst, const Operand &src)
 
void mulps (XMMRegister dst, XMMRegister src)
 
void mulps (XMMRegister dst, const Operand &src)
 
void divps (XMMRegister dst, XMMRegister src)
 
void divps (XMMRegister dst, const Operand &src)
 
void movmskps (Register dst, XMMRegister src)
 
void movd (XMMRegister dst, Register src)
 
void movd (Register dst, XMMRegister src)
 
void movq (XMMRegister dst, Register src)
 
void movq (Register dst, XMMRegister src)
 
void movq (XMMRegister dst, XMMRegister src)
 
void movsd (XMMRegister dst, XMMRegister src)
 
void movsd (const Operand &dst, XMMRegister src)
 
void movsd (XMMRegister dst, const Operand &src)
 
void movdqa (const Operand &dst, XMMRegister src)
 
void movdqa (XMMRegister dst, const Operand &src)
 
void movdqu (const Operand &dst, XMMRegister src)
 
void movdqu (XMMRegister dst, const Operand &src)
 
void movapd (XMMRegister dst, XMMRegister src)
 
void psllq (XMMRegister reg, byte imm8)
 
void cvttsd2si (Register dst, const Operand &src)
 
void cvttsd2si (Register dst, XMMRegister src)
 
void cvttsd2siq (Register dst, XMMRegister src)
 
void cvtlsi2sd (XMMRegister dst, const Operand &src)
 
void cvtlsi2sd (XMMRegister dst, Register src)
 
void cvtqsi2sd (XMMRegister dst, const Operand &src)
 
void cvtqsi2sd (XMMRegister dst, Register src)
 
void cvtss2sd (XMMRegister dst, XMMRegister src)
 
void cvtss2sd (XMMRegister dst, const Operand &src)
 
void cvtsd2ss (XMMRegister dst, XMMRegister src)
 
void cvtsd2si (Register dst, XMMRegister src)
 
void cvtsd2siq (Register dst, XMMRegister src)
 
void addsd (XMMRegister dst, XMMRegister src)
 
void addsd (XMMRegister dst, const Operand &src)
 
void subsd (XMMRegister dst, XMMRegister src)
 
void mulsd (XMMRegister dst, XMMRegister src)
 
void mulsd (XMMRegister dst, const Operand &src)
 
void divsd (XMMRegister dst, XMMRegister src)
 
void andpd (XMMRegister dst, XMMRegister src)
 
void orpd (XMMRegister dst, XMMRegister src)
 
void xorpd (XMMRegister dst, XMMRegister src)
 
void sqrtsd (XMMRegister dst, XMMRegister src)
 
void ucomisd (XMMRegister dst, XMMRegister src)
 
void ucomisd (XMMRegister dst, const Operand &src)
 
void cmpltsd (XMMRegister dst, XMMRegister src)
 
void movmskpd (Register dst, XMMRegister src)
 
void extractps (Register dst, XMMRegister src, byte imm8)
 
void roundsd (XMMRegister dst, XMMRegister src, RoundingMode mode)
 
void Print ()
 
int SizeOfCodeGeneratedSince (Label *label)
 
void RecordJSReturn ()
 
void RecordDebugBreakSlot ()
 
void RecordComment (const char *msg, bool force=false)
 
MaybeObject * AllocateConstantPool (Heap *heap)
 
void PopulateConstantPool (ConstantPoolArray *constant_pool)
 
void db (uint8_t data)
 
void dd (uint32_t data)
 
PositionsRecorderpositions_recorder ()
 
bool buffer_overflow () const
 
int available_space () const
 
byte byte_at (int pos)
 
void set_byte_at (int pos, byte value)
 
- Public Member Functions inherited from AssemblerBase
 AssemblerBase (Isolate *isolate, void *buffer, int buffer_size)
 
virtual ~AssemblerBase ()
 
Isolateisolate () const
 
int jit_cookie () const
 
bool emit_debug_code () const
 
void set_emit_debug_code (bool value)
 
bool predictable_code_size () const
 
void set_predictable_code_size (bool value)
 
uint64_t enabled_cpu_features () const
 
void set_enabled_cpu_features (uint64_t features)
 
bool IsEnabled (CpuFeature f)
 
int pc_offset () const
 
- Public Member Functions inherited from Malloced
void * operator new (size_t size)
 
void operator delete (void *p)
 

Additional Inherited Members

- Public Types inherited from Assembler
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0, DEBUG_BREAK_NOP, PROPERTY_ACCESS_INLINED, PROPERTY_ACCESS_INLINED_CONTEXT,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE, LAST_CODE_MARKER, FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED, DEBUG_BREAK_NOP,
  INTERRUPT_CODE_NOP, FIRST_NOP_MARKER = DEBUG_BREAK_NOP, LAST_NOP_MARKER = INTERRUPT_CODE_NOP, NON_MARKING_NOP = 0,
  DEBUG_BREAK_NOP, PROPERTY_ACCESS_INLINED, PROPERTY_ACCESS_INLINED_CONTEXT, PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE,
  LAST_CODE_MARKER, FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED, CODE_AGE_MARKER_NOP = 6, CODE_AGE_SEQUENCE_NOP
}
 
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0, DEBUG_BREAK_NOP, PROPERTY_ACCESS_INLINED, PROPERTY_ACCESS_INLINED_CONTEXT,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE, LAST_CODE_MARKER, FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED, DEBUG_BREAK_NOP,
  INTERRUPT_CODE_NOP, FIRST_NOP_MARKER = DEBUG_BREAK_NOP, LAST_NOP_MARKER = INTERRUPT_CODE_NOP, NON_MARKING_NOP = 0,
  DEBUG_BREAK_NOP, PROPERTY_ACCESS_INLINED, PROPERTY_ACCESS_INLINED_CONTEXT, PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE,
  LAST_CODE_MARKER, FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED, CODE_AGE_MARKER_NOP = 6, CODE_AGE_SEQUENCE_NOP
}
 
enum  RoundingMode {
  kRoundToNearest = 0x0, kRoundDown = 0x1, kRoundUp = 0x2, kRoundToZero = 0x3,
  kRoundToNearest = 0x0, kRoundDown = 0x1, kRoundUp = 0x2, kRoundToZero = 0x3
}
 
enum  NopMarkerTypes {
  NON_MARKING_NOP = 0, DEBUG_BREAK_NOP, PROPERTY_ACCESS_INLINED, PROPERTY_ACCESS_INLINED_CONTEXT,
  PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE, LAST_CODE_MARKER, FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED, DEBUG_BREAK_NOP,
  INTERRUPT_CODE_NOP, FIRST_NOP_MARKER = DEBUG_BREAK_NOP, LAST_NOP_MARKER = INTERRUPT_CODE_NOP, NON_MARKING_NOP = 0,
  DEBUG_BREAK_NOP, PROPERTY_ACCESS_INLINED, PROPERTY_ACCESS_INLINED_CONTEXT, PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE,
  LAST_CODE_MARKER, FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED, CODE_AGE_MARKER_NOP = 6, CODE_AGE_SEQUENCE_NOP
}
 
enum  RoundingMode {
  kRoundToNearest = 0x0, kRoundDown = 0x1, kRoundUp = 0x2, kRoundToZero = 0x3,
  kRoundToNearest = 0x0, kRoundDown = 0x1, kRoundUp = 0x2, kRoundToZero = 0x3
}
 
- Static Public Member Functions inherited from Assembler
static void deserialization_set_special_target_at (Address constant_pool_entry, Code *code, Address target)
 
static Instr instr_at (byte *pc)
 
static void instr_at_put (byte *pc, Instr instr)
 
static Condition GetCondition (Instr instr)
 
static bool IsBranch (Instr instr)
 
static int GetBranchOffset (Instr instr)
 
static bool IsLdrRegisterImmediate (Instr instr)
 
static bool IsVldrDRegisterImmediate (Instr instr)
 
static bool IsLdrPpImmediateOffset (Instr instr)
 
static bool IsVldrDPpImmediateOffset (Instr instr)
 
static int GetLdrRegisterImmediateOffset (Instr instr)
 
static int GetVldrDRegisterImmediateOffset (Instr instr)
 
static Instr SetLdrRegisterImmediateOffset (Instr instr, int offset)
 
static Instr SetVldrDRegisterImmediateOffset (Instr instr, int offset)
 
static bool IsStrRegisterImmediate (Instr instr)
 
static Instr SetStrRegisterImmediateOffset (Instr instr, int offset)
 
static bool IsAddRegisterImmediate (Instr instr)
 
static Instr SetAddRegisterImmediateOffset (Instr instr, int offset)
 
static Register GetRd (Instr instr)
 
static Register GetRn (Instr instr)
 
static Register GetRm (Instr instr)
 
static bool IsPush (Instr instr)
 
static bool IsPop (Instr instr)
 
static bool IsStrRegFpOffset (Instr instr)
 
static bool IsLdrRegFpOffset (Instr instr)
 
static bool IsStrRegFpNegOffset (Instr instr)
 
static bool IsLdrRegFpNegOffset (Instr instr)
 
static bool IsLdrPcImmediateOffset (Instr instr)
 
static bool IsVldrDPcImmediateOffset (Instr instr)
 
static bool IsTstImmediate (Instr instr)
 
static bool IsCmpRegister (Instr instr)
 
static bool IsCmpImmediate (Instr instr)
 
static Register GetCmpImmediateRegister (Instr instr)
 
static int GetCmpImmediateRawImmediate (Instr instr)
 
static bool IsNop (Instr instr, int type=NON_MARKING_NOP)
 
static bool IsMovT (Instr instr)
 
static bool IsMovW (Instr instr)
 
static Address target_pointer_address_at (Address pc)
 
static Address target_address_at (Address pc, ConstantPoolArray *constant_pool)
 
static void set_target_address_at (Address pc, ConstantPoolArray *constant_pool, Address target)
 
static Address target_address_at (Address pc, Code *code)
 
static void set_target_address_at (Address pc, Code *code, Address target)
 
static Address target_address_from_return_address (Address pc)
 
static Address return_address_from_call_start (Address pc)
 
static void deserialization_set_special_target_at (Address constant_pool_entry, Code *code, Address target)
 
static bool IsConstantPoolAt (Instruction *instr)
 
static int ConstantPoolSizeAt (Instruction *instr)
 
static Instr Rd (CPURegister rd)
 
static Instr Rn (CPURegister rn)
 
static Instr Rm (CPURegister rm)
 
static Instr Ra (CPURegister ra)
 
static Instr Rt (CPURegister rt)
 
static Instr Rt2 (CPURegister rt2)
 
static Instr RdSP (Register rd)
 
static Instr RnSP (Register rn)
 
static Instr Flags (FlagsUpdate S)
 
static Instr Cond (Condition cond)
 
static Instr ImmPCRelAddress (int imm21)
 
static Instr ImmUncondBranch (int imm26)
 
static Instr ImmCondBranch (int imm19)
 
static Instr ImmCmpBranch (int imm19)
 
static Instr ImmTestBranch (int imm14)
 
static Instr ImmTestBranchBit (unsigned bit_pos)
 
static Instr SF (Register rd)
 
static Instr ImmAddSub (int64_t imm)
 
static Instr ImmS (unsigned imms, unsigned reg_size)
 
static Instr ImmR (unsigned immr, unsigned reg_size)
 
static Instr ImmSetBits (unsigned imms, unsigned reg_size)
 
static Instr ImmRotate (unsigned immr, unsigned reg_size)
 
static Instr ImmLLiteral (int imm19)
 
static Instr BitN (unsigned bitn, unsigned reg_size)
 
static Instr ShiftDP (Shift shift)
 
static Instr ImmDPShift (unsigned amount)
 
static Instr ExtendMode (Extend extend)
 
static Instr ImmExtendShift (unsigned left_shift)
 
static Instr ImmCondCmp (unsigned imm)
 
static Instr Nzcv (StatusFlags nzcv)
 
static Instr ImmLSUnsigned (int imm12)
 
static Instr ImmLS (int imm9)
 
static Instr ImmLSPair (int imm7, LSDataSize size)
 
static Instr ImmShiftLS (unsigned shift_amount)
 
static Instr ImmException (int imm16)
 
static Instr ImmSystemRegister (int imm15)
 
static Instr ImmHint (int imm7)
 
static Instr ImmBarrierDomain (int imm2)
 
static Instr ImmBarrierType (int imm2)
 
static LSDataSize CalcLSDataSize (LoadStoreOp op)
 
static Instr ImmMoveWide (uint64_t imm)
 
static Instr ShiftMoveWide (int64_t shift)
 
static Instr ImmFP32 (float imm)
 
static Instr ImmFP64 (double imm)
 
static Instr FPScale (unsigned scale)
 
static Instr FPType (FPRegister fd)
 
static Address target_address_at (Address pc, ConstantPoolArray *constant_pool)
 
static void set_target_address_at (Address pc, ConstantPoolArray *constant_pool, Address target)
 
static Address target_address_at (Address pc, Code *code)
 
static void set_target_address_at (Address pc, Code *code, Address target)
 
static Address target_address_from_return_address (Address pc)
 
static void deserialization_set_special_target_at (Address instruction_payload, Code *code, Address target)
 
static bool IsNop (Address addr)
 
static Address target_address_at (Address pc)
 
static void set_target_address_at (Address pc, Address target)
 
static Address target_address_from_return_address (Address pc)
 
static void JumpLabelToJumpRegister (Address pc)
 
static void QuietNaN (HeapObject *nan)
 
static void deserialization_set_special_target_at (Address instruction_payload, Code *code, Address target)
 
static int RelocateInternalReference (byte *pc, intptr_t pc_delta)
 
static Instr instr_at (byte *pc)
 
static void instr_at_put (byte *pc, Instr instr)
 
static bool IsBranch (Instr instr)
 
static bool IsBeq (Instr instr)
 
static bool IsBne (Instr instr)
 
static bool IsJump (Instr instr)
 
static bool IsJ (Instr instr)
 
static bool IsLui (Instr instr)
 
static bool IsOri (Instr instr)
 
static bool IsJal (Instr instr)
 
static bool IsJr (Instr instr)
 
static bool IsJalr (Instr instr)
 
static bool IsNop (Instr instr, unsigned int type)
 
static bool IsPop (Instr instr)
 
static bool IsPush (Instr instr)
 
static bool IsLwRegFpOffset (Instr instr)
 
static bool IsSwRegFpOffset (Instr instr)
 
static bool IsLwRegFpNegOffset (Instr instr)
 
static bool IsSwRegFpNegOffset (Instr instr)
 
static Register GetRtReg (Instr instr)
 
static Register GetRsReg (Instr instr)
 
static Register GetRdReg (Instr instr)
 
static uint32_t GetRt (Instr instr)
 
static uint32_t GetRtField (Instr instr)
 
static uint32_t GetRs (Instr instr)
 
static uint32_t GetRsField (Instr instr)
 
static uint32_t GetRd (Instr instr)
 
static uint32_t GetRdField (Instr instr)
 
static uint32_t GetSa (Instr instr)
 
static uint32_t GetSaField (Instr instr)
 
static uint32_t GetOpcodeField (Instr instr)
 
static uint32_t GetFunction (Instr instr)
 
static uint32_t GetFunctionField (Instr instr)
 
static uint32_t GetImmediate16 (Instr instr)
 
static uint32_t GetLabelConst (Instr instr)
 
static int32_t GetBranchOffset (Instr instr)
 
static bool IsLw (Instr instr)
 
static int16_t GetLwOffset (Instr instr)
 
static Instr SetLwOffset (Instr instr, int16_t offset)
 
static bool IsSw (Instr instr)
 
static Instr SetSwOffset (Instr instr, int16_t offset)
 
static bool IsAddImmediate (Instr instr)
 
static Instr SetAddImmediateOffset (Instr instr, int16_t offset)
 
static bool IsAndImmediate (Instr instr)
 
static bool IsEmittedConstant (Instr instr)
 
static Address target_address_at (Address pc, ConstantPoolArray *constant_pool)
 
static void set_target_address_at (Address pc, ConstantPoolArray *constant_pool, Address target)
 
static Address target_address_at (Address pc, Code *code)
 
static void set_target_address_at (Address pc, Code *code, Address target)
 
static Address target_address_from_return_address (Address pc)
 
static void deserialization_set_special_target_at (Address instruction_payload, Code *code, Address target)
 
static RelocInfo::Mode RelocInfoNone ()
 
static bool IsNop (Address addr)
 
- Static Public Member Functions inherited from AssemblerBase
static void QuietNaN (HeapObject *nan)
 
- Static Public Member Functions inherited from Malloced
static void FatalProcessOutOfMemory ()
 
static void * New (size_t size)
 
static void Delete (void *p)
 
- Static Public Attributes inherited from Assembler
static const int kSpecialTargetSize = kPointerSize
 
static const int kInstrSize = sizeof(Instr)
 
static const int kPatchReturnSequenceAddressOffset = 0 * kInstrSize
 
static const int kPatchDebugBreakSlotAddressOffset = 0 * kInstrSize
 
static const int kPatchDebugBreakSlotReturnOffset = 2 * kInstrSize
 
static const int kPcLoadDelta = 8
 
static const int kJSReturnSequenceInstructions = 4
 
static const int kDebugBreakSlotInstructions = 3
 
static const int kDebugBreakSlotLength
 
static const int kMaxDistToIntPool = 4*KB
 
static const int kMaxDistToFPPool = 1*KB
 
static const int kMaxNumPending32RelocInfo = kMaxDistToIntPool/kInstrSize
 
static const int kMaxNumPending64RelocInfo = kMaxDistToFPPool/kInstrSize
 
static const int kCallSizeWithoutRelocation = 4 * kInstructionSize
 
static const int kCallSizeWithRelocation = 2 * kInstructionSize
 
static const int kJSRetSequenceInstructions = 7
 
static const int kMaxVeneerCodeSize = 1 * kInstructionSize
 
static const int kCallTargetAddressOffset = kPointerSize
 
static const int kCallInstructionLength = 5
 
static const int kJSReturnSequenceLength = 6
 
static const byte kTestAlByte = 0xA8
 
static const byte kNopByte = 0x90
 
static const byte kJmpShortOpcode = 0xEB
 
static const byte kJccShortPrefix = 0x70
 
static const byte kJncShortOpcode = kJccShortPrefix | not_carry
 
static const byte kJcShortOpcode = kJccShortPrefix | carry
 
static const byte kJnzShortOpcode = kJccShortPrefix | not_zero
 
static const byte kJzShortOpcode = kJccShortPrefix | zero
 
static const int kMaximalBufferSize = 512*MB
 
static const int kBranchPCOffset = 4
 
static const int kInstructionsFor32BitConstant = 3
 
static const int kCallScratchRegisterInstructionLength = 3
 
static const int kShortCallInstructionLength = 5
 
static const int kMoveAddressIntoScratchRegisterInstructionLength
 
static const int kCallSequenceLength
 
static const int kRealPatchReturnSequenceAddressOffset
 
static const byte kTestEaxByte = 0xA9
 
- Static Public Attributes inherited from AssemblerBase
static const int kMinimalBufferSize = 4*KB
 
- Protected Member Functions inherited from Assembler
int buffer_space () const
 
int target_at (int pos)
 
void target_at_put (int pos, int target_pos)
 
void StartBlockConstPool ()
 
void EndBlockConstPool ()
 
bool is_const_pool_blocked () const
 
bool is_constant_pool_available () const
 
void set_constant_pool_available (bool available)
 
const RegisterAppropriateZeroRegFor (const CPURegister &reg) const
 
void LoadStore (const CPURegister &rt, const MemOperand &addr, LoadStoreOp op)
 
void Logical (const Register &rd, const Register &rn, const Operand &operand, LogicalOp op)
 
void LogicalImmediate (const Register &rd, const Register &rn, unsigned n, unsigned imm_s, unsigned imm_r, LogicalOp op)
 
void ConditionalCompare (const Register &rn, const Operand &operand, StatusFlags nzcv, Condition cond, ConditionalCompareOp op)
 
void AddSubWithCarry (const Register &rd, const Register &rn, const Operand &operand, FlagsUpdate S, AddSubWithCarryOp op)
 
void EmitShift (const Register &rd, const Register &rn, Shift shift, unsigned amount)
 
void EmitExtendShift (const Register &rd, const Register &rn, Extend extend, unsigned left_shift)
 
void AddSub (const Register &rd, const Register &rn, const Operand &operand, FlagsUpdate S, AddSubOp op)
 
void RemoveBranchFromLabelLinkChain (Instruction *branch, Label *label, Instruction *label_veneer=NULL)
 
void SetRecordedAstId (TypeFeedbackId ast_id)
 
int unresolved_branches_first_limit () const
 
void emit_sse_operand (XMMRegister reg, const Operand &adr)
 
void emit_sse_operand (XMMRegister dst, XMMRegister src)
 
void emit_sse_operand (Register dst, XMMRegister src)
 
void emit_sse_operand (XMMRegister dst, Register src)
 
byteaddr_at (int pos)
 
int32_t buffer_space () const
 
int target_at (int32_t pos)
 
void target_at_put (int32_t pos, int32_t target_pos)
 
bool MustUseReg (RelocInfo::Mode rmode)
 
void RecordRelocInfo (RelocInfo::Mode rmode, intptr_t data=0)
 
void BlockTrampolinePoolBefore (int pc_offset)
 
void StartBlockTrampolinePool ()
 
void EndBlockTrampolinePool ()
 
bool is_trampoline_pool_blocked () const
 
bool has_exception () const
 
void DoubleAsTwoUInt32 (double d, uint32_t *lo, uint32_t *hi)
 
bool is_trampoline_emitted () const
 
void StartBlockGrowBuffer ()
 
void EndBlockGrowBuffer ()
 
bool is_buffer_growth_blocked () const
 
void call (const Operand &operand)
 
void jmp (const Operand &src)
 
- Static Protected Member Functions inherited from Assembler
static bool IsImmLSUnscaled (ptrdiff_t offset)
 
static bool IsImmLSScaled (ptrdiff_t offset, LSDataSize size)
 
static bool IsImmLogical (uint64_t value, unsigned width, unsigned *n, unsigned *imm_s, unsigned *imm_r)
 
static bool IsImmConditionalCompare (int64_t immediate)
 
static bool IsImmAddSub (int64_t immediate)
 
static bool IsImmFP32 (float imm)
 
static bool IsImmFP64 (double imm)
 
static LoadStoreOp LoadOpFor (const CPURegister &rt)
 
static LoadStorePairOp LoadPairOpFor (const CPURegister &rt, const CPURegister &rt2)
 
static LoadStoreOp StoreOpFor (const CPURegister &rt)
 
static LoadStorePairOp StorePairOpFor (const CPURegister &rt, const CPURegister &rt2)
 
static LoadStorePairNonTemporalOp LoadPairNonTemporalOpFor (const CPURegister &rt, const CPURegister &rt2)
 
static LoadStorePairNonTemporalOp StorePairNonTemporalOpFor (const CPURegister &rt, const CPURegister &rt2)
 
- Protected Attributes inherited from Assembler
TypeFeedbackId recorded_ast_id_
 
std::multimap< int, FarBranchInfounresolved_branches_
 
int next_veneer_pool_check_
 
- Protected Attributes inherited from AssemblerBase
bytebuffer_
 
int buffer_size_
 
bool own_buffer_
 
bytepc_
 
- Static Protected Attributes inherited from Assembler
static const int kVeneerDistanceMargin = 1 * KB
 
static const int kVeneerNoProtectionFactor = 2
 
static const int kVeneerDistanceCheckMargin
 

Detailed Description

Definition at line 2186 of file assembler-arm64.h.

Constructor & Destructor Documentation

PatchingAssembler ( Instruction start,
unsigned  count 
)
inline

Definition at line 2196 of file assembler-arm64.h.

References Assembler::StartBlockPools().

PatchingAssembler ( byte start,
unsigned  count 
)
inline

Definition at line 2203 of file assembler-arm64.h.

References Assembler::StartBlockPools().


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