diff options
Diffstat (limited to 'deps/v8/src/mips64/macro-assembler-mips64.h')
-rw-r--r-- | deps/v8/src/mips64/macro-assembler-mips64.h | 133 |
1 files changed, 3 insertions, 130 deletions
diff --git a/deps/v8/src/mips64/macro-assembler-mips64.h b/deps/v8/src/mips64/macro-assembler-mips64.h index 1f1bb4bdb0..a29c79635c 100644 --- a/deps/v8/src/mips64/macro-assembler-mips64.h +++ b/deps/v8/src/mips64/macro-assembler-mips64.h @@ -144,7 +144,7 @@ inline MemOperand UntagSmiFieldMemOperand(Register rm, int offset) { // n64, and used in RegExp code, and other places // with more than 8 arguments. inline MemOperand CFunctionArgumentOperand(int index) { - DCHECK(index > kCArgSlotCount); + DCHECK_GT(index, kCArgSlotCount); // Argument 5 takes the slot just past the four Arg-slots. int offset = (index - 5) * kPointerSize + kCArgsSlotsSize; return MemOperand(sp, offset); @@ -942,18 +942,6 @@ class MacroAssembler : public TurboAssembler { bool IsNear(Label* L, Condition cond, int rs_reg); - // Emit code that loads |parameter_index|'th parameter from the stack to - // the register according to the CallInterfaceDescriptor definition. - // |sp_to_caller_sp_offset_in_words| specifies the number of words pushed - // below the caller's sp. - template <class Descriptor> - void LoadParameterFromStack( - Register reg, typename Descriptor::ParameterIndices parameter_index, - int sp_to_ra_offset_in_words = 0) { - DCHECK(Descriptor::kPassLastArgsOnStack); - UNIMPLEMENTED(); - } - // Swap two registers. If the scratch register is omitted then a slightly // less efficient form using xor instead of mov is emitted. void Swap(Register reg1, Register reg2, Register scratch = no_reg); @@ -985,51 +973,6 @@ class MacroAssembler : public TurboAssembler { // --------------------------------------------------------------------------- // GC Support - void IncrementalMarkingRecordWriteHelper(Register object, - Register value, - Register address); - - // Record in the remembered set the fact that we have a pointer to new space - // at the address pointed to by the addr register. Only works if addr is not - // in new space. - void RememberedSetHelper(Register object, // Used for debug code. - Register addr, Register scratch, - SaveFPRegsMode save_fp); - - // Check if object is in new space. Jumps if the object is not in new space. - // The register scratch can be object itself, but it will be clobbered. - void JumpIfNotInNewSpace(Register object, - Register scratch, - Label* branch) { - InNewSpace(object, scratch, eq, branch); - } - - // Check if object is in new space. Jumps if the object is in new space. - // The register scratch can be object itself, but scratch will be clobbered. - void JumpIfInNewSpace(Register object, - Register scratch, - Label* branch) { - InNewSpace(object, scratch, ne, branch); - } - - // Check if an object has a given incremental marking color. - void HasColor(Register object, - Register scratch0, - Register scratch1, - Label* has_color, - int first_bit, - int second_bit); - - void JumpIfBlack(Register object, - Register scratch0, - Register scratch1, - Label* on_black); - - // Checks the color of an object. If the object is white we jump to the - // incremental marker. - void JumpIfWhite(Register value, Register scratch1, Register scratch2, - Register scratch3, Label* value_is_white); - // Notify the garbage collector that we wrote a pointer into an object. // |object| is the object being stored into, |value| is the object being // stored. value and scratch registers are clobbered by the operation. @@ -1108,7 +1051,7 @@ class MacroAssembler : public TurboAssembler { // Leave the current exit frame. void LeaveExitFrame(bool save_doubles, Register arg_count, - bool restore_context, bool do_return = NO_EMIT_RETURN, + bool do_return = NO_EMIT_RETURN, bool argument_count_is_length = false); // Make sure the stack is aligned. Only emits code in debug mode. @@ -1167,22 +1110,10 @@ class MacroAssembler : public TurboAssembler { // ------------------------------------------------------------------------- // Support functions. - // Machine code version of Map::GetConstructor(). - // |temp| holds |result|'s map when done, and |temp2| its instance type. - void GetMapConstructor(Register result, Register map, Register temp, - Register temp2); - void GetObjectType(Register function, Register map, Register type_reg); - // Get value of the weak cell. - void GetWeakValue(Register value, Handle<WeakCell> cell); - - // Load the value of the weak cell in the value register. Branch to the - // given miss label is the weak cell was cleared. - void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); - // ------------------------------------------------------------------------- // Runtime calls. @@ -1256,7 +1187,7 @@ const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT // The int portion is upper 32-bits of 64-bit word. dsra(dst, src, kSmiShift - scale); } else { - DCHECK(scale >= kSmiTagSize); + DCHECK_GE(scale, kSmiTagSize); sll(dst, src, scale - kSmiTagSize); } } @@ -1303,15 +1234,6 @@ const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT // via --debug-code. void AssertUndefinedOrAllocationSite(Register object, Register scratch); - // ------------------------------------------------------------------------- - // String utilities. - - void JumpIfNotUniqueNameInstanceType(Register reg, Label* not_unique_name); - - void LoadInstanceDescriptors(Register map, Register descriptors); - void LoadAccessor(Register dst, Register holder, int accessor_index, - AccessorComponent accessor); - template<typename Field> void DecodeField(Register dst, Register src) { Ext(dst, src, Field::kShift, Field::kSize); @@ -1331,18 +1253,6 @@ const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT const ParameterCount& actual, Label* done, bool* definitely_mismatches, InvokeFlag flag); - // Helper for implementing JumpIfNotInNewSpace and JumpIfInNewSpace. - void InNewSpace(Register object, Register scratch, - Condition cond, // ne for new space, eq otherwise. - Label* branch); - - // Helper for finding the mark bits for an address. Afterwards, the - // bitmap register points at the word with the mark bits and the mask - // the position of the first bit. Leaves addr_reg unchanged. - inline void GetMarkBits(Register addr_reg, - Register bitmap_reg, - Register mask_reg); - // Compute memory operands for safepoint stack slots. static int SafepointRegisterStackIndex(int reg_code); @@ -1351,43 +1261,6 @@ const Operand& rt = Operand(zero_reg), BranchDelaySlot bd = PROTECT friend class StandardFrame; }; - -// The code patcher is used to patch (typically) small parts of code e.g. for -// debugging and other types of instrumentation. When using the code patcher -// the exact number of bytes specified must be emitted. It is not legal to emit -// relocation information. If any of these constraints are violated it causes -// an assertion to fail. -class CodePatcher { - public: - enum FlushICache { - FLUSH, - DONT_FLUSH - }; - - CodePatcher(Isolate* isolate, byte* address, int instructions, - FlushICache flush_cache = FLUSH); - ~CodePatcher(); - - // Macro assembler to emit code. - MacroAssembler* masm() { return &masm_; } - - // Emit an instruction directly. - void Emit(Instr instr); - - // Emit an address directly. - void Emit(Address addr); - - // Change the condition part of an instruction leaving the rest of the current - // instruction unchanged. - void ChangeBranchCondition(Instr current_instr, uint32_t new_opcode); - - private: - byte* address_; // The address of the code being patched. - int size_; // Number of bytes of the expected patch size. - MacroAssembler masm_; // Macro assembler used to generate the code. - FlushICache flush_cache_; // Whether to flush the I cache after patching. -}; - template <typename Func> void TurboAssembler::GenerateSwitchTable(Register index, size_t case_count, Func GetLabelFunction) { |