28 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 
   29 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 
  132 class MacroAssembler: 
public Assembler {
 
  141 #define COND_TYPED_ARGS Condition cond, Register r1, const Operand& r2 
  142 #define COND_ARGS cond, r1, r2 
  145 #define DECLARE_NORELOC_PROTOTYPE(Name, target_type) \ 
  146   void Name(target_type target, BranchDelaySlot bd = PROTECT); \ 
  147   inline void Name(BranchDelaySlot bd, target_type target) { \ 
  150   void Name(target_type target, \ 
  152             BranchDelaySlot bd = PROTECT); \ 
  153   inline void Name(BranchDelaySlot bd, \ 
  154                    target_type target, \ 
  156     Name(target, COND_ARGS, bd); \ 
  159 #define DECLARE_BRANCH_PROTOTYPES(Name) \ 
  160   DECLARE_NORELOC_PROTOTYPE(Name, Label*) \ 
  161   DECLARE_NORELOC_PROTOTYPE(Name, int16_t) 
  166 #undef DECLARE_BRANCH_PROTOTYPES 
  167 #undef COND_TYPED_ARGS 
  172 #define COND_ARGS Condition cond = al, Register rs = zero_reg, \ 
  173   const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT 
  176   void Jump(intptr_t target, RelocInfo::Mode rmode, 
COND_ARGS);
 
  178   void Jump(Handle<Code> code, RelocInfo::Mode rmode, 
COND_ARGS);
 
  183   static int CallSize(Handle<Code> code,
 
  184                       RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
 
  187   void Call(Handle<Code> code,
 
  188             RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
 
  193     Register rs = zero_reg, 
const Operand& rt = Operand(zero_reg)) {
 
  194     Ret(cond, rs, rt, bd);
 
  210             const Operand& op = Operand(
no_reg));
 
  225   void Call(Label* target);
 
  284     if (object->IsHeapObject()) {
 
  317                      Label* condition_met);
 
  324     InNewSpace(
object, scratch, 
ne, branch);
 
  332     InNewSpace(
object, scratch, 
eq, branch);
 
  357                       Label* object_is_white_and_not_data);
 
  363                         Label* not_data_object);
 
  397                      remembered_set_action,
 
  445     return IsNop(instr, type);
 
  457     bool sllzz = (opcode == 
SLL &&
 
  458                   rt == 
static_cast<uint32_t
>(
ToNumber(zero_reg)) &&
 
  459                   rs == static_cast<uint32_t>(
ToNumber(zero_reg)));
 
  549 #define DEFINE_INSTRUCTION(instr)                                              \ 
  550   void instr(Register rd, Register rs, const Operand& rt);                     \ 
  551   void instr(Register rd, Register rs, Register rt) {                          \ 
  552     instr(rd, rs, Operand(rt));                                                \ 
  554   void instr(Register rs, Register rt, int32_t j) {                            \ 
  555     instr(rs, rt, Operand(j));                                                 \ 
  558 #define DEFINE_INSTRUCTION2(instr)                                             \ 
  559   void instr(Register rs, const Operand& rt);                                  \ 
  560   void instr(Register rs, Register rt) {                                       \ 
  561     instr(rs, Operand(rt));                                                    \ 
  563   void instr(Register rs, int32_t j) {                                         \ 
  564     instr(rs, Operand(j));                                                     \ 
  587 #undef DEFINE_INSTRUCTION 
  588 #undef DEFINE_INSTRUCTION2 
  599     li(rd, Operand(j), mode);
 
  603     li(dst, Operand(value), mode);
 
  650     Branch(3, cond, tst1, Operand(tst2));
 
  685   void Pop(uint32_t count = 1) {
 
  741     BranchF(target, nan, cc, cmp1, cmp2, bd);
 
  793                       int stack_space = 0);
 
  798                       bool do_return = 
false);
 
  817       Label* no_map_match);
 
  823                            bool can_have_holes);
 
  834     ExternalReference roots_array_start =
 
  835         ExternalReference::roots_array_start(
isolate());
 
  849                   const ParameterCount& expected,
 
  850                   const ParameterCount& actual,
 
  856                   const ParameterCount& expected,
 
  857                   const ParameterCount& actual,
 
  858                   RelocInfo::Mode rmode,
 
  865                       const ParameterCount& actual,
 
  871                       const ParameterCount& actual,
 
  890 #ifdef ENABLE_DEBUGGER_SUPPORT 
  945                                bool miss_on_bound_function = 
false);
 
  990                            Label* early_success,
 
  999                            Label* early_success,
 
 1099     Branch(label, 
lt, overflow_check, Operand(zero_reg), bd);
 
 1105     Branch(label, 
ge, overflow_check, Operand(zero_reg), bd);
 
 1109     Ret(
lt, overflow_check, Operand(zero_reg), bd);
 
 1113     Ret(
ge, overflow_check, Operand(zero_reg), bd);
 
 1126     li(
s2, Operand(ref));
 
 1133                 const Operand& 
r2 = Operand(zero_reg),
 
 1166                                 int num_double_arguments);
 
 1178                             int num_double_registers,
 
 1192   void CallCFunction(ExternalReference 
function, 
int num_arguments);
 
 1195                      int num_reg_arguments,
 
 1196                      int num_double_arguments);
 
 1198                      int num_reg_arguments,
 
 1199                      int num_double_arguments);
 
 1241     return code_object_;
 
 1268   void Abort(
const char* msg);
 
 1288                                  Label* not_power_of_two_or_zero);
 
 1294     Addu(reg, reg, reg);
 
 1302     Addu(dst, src, src);
 
 1329                     Label* not_smi_label,
 
 1348                            const char* message);
 
 1356                            Label* on_not_heap_number);
 
 1364       Register first_object_instance_type,
 
 1365       Register second_object_instance_type,
 
 1420   void CallCFunctionHelper(
Register function,
 
 1421                            int num_reg_arguments,
 
 1422                            int num_double_arguments);
 
 1445   void InvokePrologue(
const ParameterCount& expected,
 
 1446                       const ParameterCount& actual,
 
 1450                       bool* definitely_mismatches,
 
 1459   void InitializeNewString(
Register string,
 
 1474   inline void GetMarkBits(
Register addr_reg,
 
 1480   void JumpToHandlerEntry();
 
 1483   static int SafepointRegisterStackIndex(
int reg_code);
 
 1487   bool generating_stub_;
 
 1488   bool allow_stub_calls_;
 
 1531 #ifdef GENERATED_CODE_COVERAGE 
 1532 #define CODE_COVERAGE_STRINGIFY(x) #x 
 1533 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 
 1534 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 
 1535 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 
 1537 #define ACCESS_MASM(masm) masm-> 
 1542 #endif  // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 
void CallRuntime(const Runtime::Function *f, int num_arguments)
 
void ClampDoubleToUint8(Register result_reg, DoubleRegister input_reg, DoubleRegister temp_double_reg)
 
void Push(Handle< Object > handle)
 
void ClampUint8(Register output_reg, Register input_reg)
 
const int kCArgsSlotsSize
 
Isolate * isolate() const 
 
void PushSafepointRegisters()
 
void FlushICache(Register address, unsigned instructions)
 
void Assert(Condition cond, const char *msg)
 
void Branch(Label *L, Condition cond, Register rs, Heap::RootListIndex index, BranchDelaySlot bdslot=PROTECT)
 
static int SlotOffset(int index)
 
void SmiUntag(Register reg)
 
void mtc1(Register rt, FPURegister fs)
 
void GetCFunctionDoubleResult(const DoubleRegister dst)
 
void SmiTag(Register dst, Register src)
 
void AllocateTwoByteSlicedString(Register result, Register length, Register scratch1, Register scratch2, Label *gc_required)
 
void mov(Register rd, Register rt)
 
void IncrementalMarkingRecordWriteHelper(Register object, Register value, Register address)
 
void Push(Register src1, Register src2, Register src3, Register src4)
 
void JumpIfInNewSpace(Register object, Register scratch, Label *branch)
 
void LeaveExitFrame(bool save_doubles, Register argument_count)
 
void sw(Register rd, const MemOperand &rs)
 
void AdduAndCheckForOverflow(Register dst, Register left, Register right, Register overflow_dst, Register scratch=at)
 
void IsObjectJSStringType(Register object, Register scratch, Label *fail)
 
void mov_d(FPURegister fd, FPURegister fs)
 
void JumpToExternalReference(const ExternalReference &builtin)
 
void Pop(Register src1, Register src2, Register src3)
 
void Cvt_d_uw(FPURegister fd, FPURegister fs, FPURegister scratch)
 
void UntagAndJumpIfSmi(Register dst, Register src, Label *smi_case)
 
void LoadInstanceDescriptors(Register map, Register descriptors)
 
void AllocateAsciiString(Register result, Register length, Register scratch1, Register scratch2, Register scratch3, Label *gc_required)
 
void JumpIfNotBothSequentialAsciiStrings(Register first, Register second, Register scratch1, Register scratch2, Label *not_flat_ascii_strings)
 
void LoadFromNumberDictionary(Label *miss, Register elements, Register key, Register result, Register t0, Register t1, Register t2)
 
void SetCallCDoubleArguments(DoubleRegister dreg)
 
void or_(Register dst, int32_t imm32)
 
void SubuAndCheckForOverflow(Register dst, Register left, Register right, Register overflow_dst, Register scratch=at)
 
void GetBuiltinEntry(Register target, Builtins::JavaScript id)
 
void JumpIfSmi(Register value, Label *smi_label)
 
void DispatchMap(Register obj, Register scratch, Handle< Map > map, Handle< Code > success, SmiCheckType smi_check_type)
 
bool AllowThisStubCall(CodeStub *stub)
 
void JumpIfNotPowerOfTwoOrZero(Register reg, Register scratch, Label *not_power_of_two_or_zero)
 
void StoreToSafepointRegisterSlot(Register src, Register dst)
 
void PopSafepointRegistersAndDoubles()
 
void set_allow_stub_calls(bool value)
 
void CheckFastObjectElements(Register map, Register scratch, Label *fail)
 
void j(Condition cc, Label *L, Label::Distance distance=Label::kFar)
 
DEFINE_INSTRUCTION2(Mult)
 
void Swap(Register reg1, Register reg2, Register scratch=no_reg, Condition cond=al)
 
bool is(FPURegister creg) const 
 
void MultiPopReversed(RegList regs)
 
bool AreAliased(Register r1, Register r2, Register r3, Register r4)
 
#define ASSERT(condition)
 
#define DECLARE_BRANCH_PROTOTYPES(Name)
 
void Pop(uint32_t count=1)
 
void RecordWriteField(Register object, int offset, Register value, Register scratch, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, RememberedSetAction remembered_set_action=EMIT_REMEMBERED_SET, SmiCheck smi_check=INLINE_SMI_CHECK)
 
void SmiTagCheckOverflow(Register reg, Register overflow)
 
void PushTryHandler(StackHandler::Kind kind, int handler_index)
 
void LoadTransitionedArrayMapConditional(ElementsKind expected_kind, ElementsKind transitioned_kind, Register map_in_out, Register scratch, Label *no_map_match)
 
void And(Register dst, Register src1, const Operand &src2, Condition cond=al)
 
static bool IsMarkedCode(Instr instr, int type)
 
void Ext(Register rt, Register rs, uint16_t pos, uint16_t size)
 
MemOperand GlobalObjectOperand()
 
void IncrementCounter(StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void Move(FPURegister dst, Register src_low, Register src_high)
 
void Abort(const char *msg)
 
void RetOnOverflow(Register overflow_check, BranchDelaySlot bd=PROTECT)
 
void MarkCode(NopMarkerTypes type)
 
MemOperand ContextOperand(Register context, int index)
 
void CheckMap(Register obj, Register scratch, Handle< Map > map, Label *fail, SmiCheckType smi_check_type, CompareMapMode mode=REQUIRE_EXACT_MAP)
 
void RetOnNoOverflow(Register overflow_check, BranchDelaySlot bd=PROTECT)
 
void CopyFields(Register dst, Register src, RegList temps, int field_count)
 
void DecrementCounter(StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void StoreToSafepointRegistersAndDoublesSlot(Register src, Register dst)
 
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen trace generated IR for specified phases trace register allocator trace range analysis trace representation types environment for every instruction put a break point before deoptimizing polymorphic inlining perform array bounds checks elimination trace on stack replacement optimize closures functions with arguments object optimize functions containing for in loops profiler considers IC stability primitive functions trigger their own optimization re try self optimization if it failed insert an interrupt check at function exit execution budget before interrupt is triggered call count before self optimization self_optimization count_based_interrupts weighted_back_edges trace_opt emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of SAHF instruction if enable use of VFP3 instructions if available this implies enabling ARMv7 instructions(ARM only)") DEFINE_bool(enable_armv7
 
void AllocateHeapNumber(Register result, Register scratch1, Register scratch2, Register heap_number_map, Label *gc_required)
 
void Movn(Register rd, Register rs, Register rt)
 
const Register kRootRegister
 
void Movz(Register rd, Register rs, Register rt)
 
void li(Register dst, Handle< Object > value, LiFlags mode=OPTIMIZE_SIZE)
 
void PrepareCEntryFunction(const ExternalReference &ref)
 
void MultiPush(RegList regs)
 
void JumpIfInstanceTypeIsNotSequentialAscii(Register type, Register scratch, Label *failure)
 
void SmiToDoubleFPURegister(Register smi, FPURegister value, Register scratch1)
 
void JumpIfNotHeapNumber(Register object, Register heap_number_map, Register scratch, Label *on_not_heap_number)
 
void PrepareCEntryArgs(int num_args)
 
void MultiPop(RegList regs)
 
void AssertRegisterIsRoot(Register reg, Heap::RootListIndex index)
 
void AbortIfNotRootValue(Register src, Heap::RootListIndex root_value_index, const char *message)
 
void JumpIfNotInNewSpace(Register object, Register scratch, Label *branch)
 
void IsObjectJSObjectType(Register heap_object, Register map, Register scratch, Label *fail)
 
void BranchOnNoOverflow(Label *label, Register overflow_check, BranchDelaySlot bd=PROTECT)
 
void sra(Register rt, Register rd, uint16_t sa)
 
static int ActivationFrameAlignment()
 
void lbu(Register rd, const MemOperand &rs)
 
void LeaveFrame(StackFrame::Type type)
 
void CheckFastElements(Register map, Register scratch, Label *fail)
 
void LoadGlobalFunction(int index, Register function)
 
void CheckPageFlag(Register object, Register scratch, int mask, Condition cc, Label *condition_met)
 
void TryGetFunctionPrototype(Register function, Register result, Register scratch, Label *miss, bool miss_on_bound_function=false)
 
void AbortIfNotSmi(Register object)
 
void ChangeBranchCondition(Condition cond)
 
void EmitECMATruncate(Register result, DwVfpRegister double_input, SwVfpRegister single_scratch, Register scratch, Register scratch2, Register scratch3)
 
void CallCFunction(ExternalReference function, int num_arguments)
 
void AllocateAsciiConsString(Register result, Register length, Register scratch1, Register scratch2, Label *gc_required)
 
void IsInstanceJSObjectType(Register map, Register scratch, Label *fail)
 
void CheckFastSmiElements(Register map, Register scratch, Label *fail)
 
void Jump(Register target, Condition cond=al)
 
void RecordWrite(Register object, Register address, Register value, LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, RememberedSetAction remembered_set_action=EMIT_REMEMBERED_SET, SmiCheck smi_check=INLINE_SMI_CHECK)
 
void JumpIfDataObject(Register value, Register scratch, Label *not_data_object)
 
void Push(Register src1, Register src2)
 
void CopyBytes(Register src, Register dst, Register length, Register scratch)
 
void LoadHeapObject(Register dst, Handle< HeapObject > object)
 
void Throw(Register value)
 
void Move(FPURegister dst, FPURegister src)
 
void ConvertToInt32(Register source, Register dest, Register scratch, Register scratch2, DwVfpRegister double_scratch, Label *not_int32)
 
void Move(Register dst, Handle< Object > value)
 
void DropAndRet(int drop)
 
void Ins(Register rt, Register rs, uint16_t pos, uint16_t size)
 
void Movt(Register rd, Register rs, uint16_t cc=0)
 
void set_has_frame(bool value)
 
void SetCounter(StatsCounter *counter, int value, Register scratch1, Register scratch2)
 
void AssertStackIsAligned()
 
void GetRelocatedValue(Register li_location, Register value, Register scratch)
 
void Floor_w_d(FPURegister fd, FPURegister fs)
 
void InvokeCode(Register code, const ParameterCount &expected, const ParameterCount &actual, InvokeFlag flag, const CallWrapper &call_wrapper, CallKind call_kind)
 
void SmiUntag(Register dst, Register src)
 
void GetLeastBitsFromInt32(Register dst, Register src, int mun_least_bits)
 
void Clz(Register rd, Register rs)
 
MacroAssembler(Isolate *isolate, void *buffer, int size)
 
const uint32_t kStringTag
 
void LoadContext(Register dst, int context_chain_length)
 
Condition IsObjectStringType(Register obj, Register type, Register result)
 
void CallExternalReference(const ExternalReference &ext, int num_arguments)
 
static int CallSize(Register target, Condition cond=al)
 
void StoreNumberToDoubleElements(Register value_reg, Register key_reg, Register receiver_reg, Register elements_reg, Register scratch1, Register scratch2, Register scratch3, Register scratch4, Label *fail)
 
void AssertFastElements(Register elements)
 
void GetLeastBitsFromSmi(Register dst, Register src, int num_least_bits)
 
void PushSafepointRegistersAndDoubles()
 
void JumpIfNotBothSmi(Register reg1, Register reg2, Label *on_not_both_smi)
 
void JumpIfBlack(Register object, Register scratch0, Register scratch1, Label *on_black)
 
void lw(Register rd, const MemOperand &rs)
 
void AllocateTwoByteConsString(Register result, Register length, Register scratch1, Register scratch2, Label *gc_required)
 
void Pop(Register src1, Register src2)
 
static bool IsNop(Instr instr, int type=NON_MARKING_NOP)
 
void Drop(int count, Condition cond=al)
 
void GetBuiltinFunction(Register target, Builtins::JavaScript id)
 
void Movf(Register rd, Register rs, uint16_t cc=0)
 
void IllegalOperation(int num_arguments)
 
void ObjectToDoubleFPURegister(Register object, FPURegister value, Register scratch1, Register scratch2, Register heap_number_map, Label *not_number, ObjectToDoubleFlags flags=NO_OBJECT_TO_DOUBLE_FLAGS)
 
void CheckAccessGlobalProxy(Register holder_reg, Register scratch, Label *miss)
 
void CallApiFunctionAndReturn(ExternalReference function, int stack_space)
 
static const int kMapOffset
 
int ToNumber(Register reg)
 
bool is(Register reg) const 
 
const uint32_t kIsNotStringMask
 
void LoadObject(Register result, Handle< Object > object)
 
void SmiTag(Register reg)
 
void li(Register rd, Operand j, LiFlags mode=OPTIMIZE_SIZE)
 
void CallRuntimeSaveDoubles(Runtime::FunctionId id)
 
void ThrowUncatchable(Register value)
 
void Trunc_uw_d(FPURegister fd, FPURegister fs, FPURegister scratch)
 
MemOperand CFunctionArgumentOperand(int index)
 
void StoreRoot(Register source, Heap::RootListIndex index, Condition cond=al)
 
void AllocateInNewSpace(int object_size, Register result, Register scratch1, Register scratch2, Label *gc_required, AllocationFlags flags)
 
MemOperand FieldMemOperand(Register object, int offset)
 
void PrepareCallCFunction(int num_reg_arguments, int num_double_registers, Register scratch)
 
void GetObjectType(Register function, Register map, Register type_reg)
 
void EmitOutOfInt32RangeTruncate(Register result, Register input_high, Register input_low, Register scratch)
 
void LoadGlobalFunctionInitialMap(Register function, Register map, Register scratch)
 
void GetNumberHash(Register t0, Register scratch)
 
void AbortIfNotString(Register object)
 
void InvokeFunction(Register function, const ParameterCount &actual, InvokeFlag flag, const CallWrapper &call_wrapper, CallKind call_kind)
 
void CompareMapAndBranch(Register obj, Register scratch, Handle< Map > map, Label *early_success, Condition cond, Label *branch_to, CompareMapMode mode=REQUIRE_EXACT_MAP)
 
void MultiPopReversedFPU(RegList regs)
 
Handle< Object > CodeObject()
 
static int GetCodeMarker(Instr instr)
 
void li(Register rd, int32_t j, LiFlags mode=OPTIMIZE_SIZE)
 
void JumpIfNonSmisNotBothSequentialAsciiStrings(Register object1, Register object2, Register scratch1, Register scratch2, Label *failure)
 
void mfc1(Register rt, FPURegister fs)
 
void JumpIfBothInstanceTypesAreNotSequentialAscii(Register first_object_instance_type, Register second_object_instance_type, Register scratch1, Register scratch2, Label *failure)
 
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kEvalFrominstructionsOffsetOffset kThisPropertyAssignmentsOffset flag
 
void UndoAllocationInNewSpace(Register object, Register scratch)
 
void Ret(BranchDelaySlot bd, Condition cond=al, Register rs=zero_reg, const Operand &rt=Operand(zero_reg))
 
void LoadFromSafepointRegisterSlot(Register dst, Register src)
 
void Push(Register src, Condition cond, Register tst1, Register tst2)
 
#define ASSERT_EQ(v1, v2)
 
void Call(Register target, Condition cond=al)
 
void Trunc_w_d(FPURegister fd, FPURegister fs)
 
void AllocateAsciiSlicedString(Register result, Register length, Register scratch1, Register scratch2, Label *gc_required)
 
void set_generating_stub(bool value)
 
void Check(Condition cond, const char *msg)
 
void MultiPushFPU(RegList regs)
 
void LoadInitialArrayMap(Register function_in, Register scratch, Register map_out, bool can_have_holes)
 
void JumpIfNotSmi(Register value, Label *not_smi_label)
 
void MultiPushReversedFPU(RegList regs)
 
void BranchF(BranchDelaySlot bd, Label *target, Label *nan, Condition cc, FPURegister cmp1, FPURegister cmp2)
 
void EmitFPUTruncate(FPURoundingMode rounding_mode, FPURegister result, DoubleRegister double_input, Register scratch1, Register except_flag, CheckForInexactConversion check_inexact=kDontCheckForInexactConversion)
 
void InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag, const CallWrapper &call_wrapper=NullCallWrapper())
 
CheckForInexactConversion
 
void TailCallStub(CodeStub *stub, Condition cond=al)
 
CodePatcher(byte *address, int instructions)
 
void UntagAndJumpIfNotSmi(Register dst, Register src, Label *non_smi_case)
 
void EnsureNotWhite(Register object, Register scratch1, Register scratch2, Register scratch3, Label *object_is_white_and_not_data)
 
void InitializeRootRegister()
 
int CalculateStackPassedWords(int num_reg_arguments, int num_double_arguments)
 
void CallJSExitStub(CodeStub *stub)
 
void JumpIfEitherSmi(Register reg1, Register reg2, Label *on_either_smi)
 
void PatchRelocatedValue(Register li_location, Register scratch, Register new_value)
 
void CallStub(CodeStub *stub, Condition cond=al)
 
static FPURegister from_code(int code)
 
void IndexFromHash(Register hash, Register index)
 
void Round_w_d(FPURegister fd, FPURegister fs)
 
void TailCallExternalReference(const ExternalReference &ext, int num_arguments, int result_size)
 
void EnterExitFrame(bool save_doubles, int stack_space=0)
 
void MultiPushReversed(RegList regs)
 
void InitializeFieldsWithFiller(Register start_offset, Register end_offset, Register filler)
 
void RecordWriteContextSlot(Register context, int offset, Register value, Register scratch, RAStatus ra_status, SaveFPRegsMode save_fp, RememberedSetAction remembered_set_action=EMIT_REMEMBERED_SET, SmiCheck smi_check=INLINE_SMI_CHECK)
 
void TailCallRuntime(Runtime::FunctionId fid, int num_arguments, int result_size)
 
void SetCallKind(Register dst, CallKind kind)
 
void AllocateTwoByteString(Register result, Register length, Register scratch1, Register scratch2, Register scratch3, Label *gc_required)
 
void LoadRoot(Register destination, Heap::RootListIndex index, Condition cond=al)
 
void MultiPopFPU(RegList regs)
 
void RememberedSetHelper(Register object, Register addr, Register scratch, SaveFPRegsMode save_fp, RememberedSetFinalAction and_then)
 
void AbortIfSmi(Register object)
 
void Ceil_w_d(FPURegister fd, FPURegister fs)
 
void BranchF(Label *target, Label *nan, Condition cc, FPURegister cmp1, FPURegister cmp2, BranchDelaySlot bd=PROTECT)
 
void HasColor(Register object, Register scratch0, Register scratch1, Label *has_color, int first_bit, int second_bit)
 
void EnterFrame(StackFrame::Type type)
 
void BranchOnOverflow(Label *label, Register overflow_check, BranchDelaySlot bd=PROTECT)
 
void CheckEnumCache(Register null_value, Label *call_runtime)
 
static const int kInstanceTypeOffset
 
void PopSafepointRegisters()
 
void AllocateHeapNumberWithValue(Register result, DwVfpRegister value, Register scratch1, Register scratch2, Register heap_number_map, Label *gc_required)
 
void Move(Register dst_low, Register dst_high, FPURegister src)
 
void Move(Register dst, Register src)
 
void Push(Register src1, Register src2, Register src3)