OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <limits.h> // For LONG_MIN, LONG_MAX. | 5 #include <limits.h> // For LONG_MIN, LONG_MAX. |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #if V8_TARGET_ARCH_MIPS64 | 9 #if V8_TARGET_ARCH_MIPS64 |
10 | 10 |
(...skipping 5844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5855 bind(&loop_again); | 5855 bind(&loop_again); |
5856 ld(current, FieldMemOperand(current, HeapObject::kMapOffset)); | 5856 ld(current, FieldMemOperand(current, HeapObject::kMapOffset)); |
5857 lb(scratch1, FieldMemOperand(current, Map::kBitField2Offset)); | 5857 lb(scratch1, FieldMemOperand(current, Map::kBitField2Offset)); |
5858 DecodeField<Map::ElementsKindBits>(scratch1); | 5858 DecodeField<Map::ElementsKindBits>(scratch1); |
5859 Branch(found, eq, scratch1, Operand(DICTIONARY_ELEMENTS)); | 5859 Branch(found, eq, scratch1, Operand(DICTIONARY_ELEMENTS)); |
5860 ld(current, FieldMemOperand(current, Map::kPrototypeOffset)); | 5860 ld(current, FieldMemOperand(current, Map::kPrototypeOffset)); |
5861 Branch(&loop_again, ne, current, Operand(factory->null_value())); | 5861 Branch(&loop_again, ne, current, Operand(factory->null_value())); |
5862 } | 5862 } |
5863 | 5863 |
5864 | 5864 |
5865 bool AreAliased(Register r1, Register r2, Register r3, Register r4) { | 5865 bool AreAliased(Register reg1, |
5866 if (r1.is(r2)) return true; | 5866 Register reg2, |
5867 if (r1.is(r3)) return true; | 5867 Register reg3, |
5868 if (r1.is(r4)) return true; | 5868 Register reg4, |
5869 if (r2.is(r3)) return true; | 5869 Register reg5, |
5870 if (r2.is(r4)) return true; | 5870 Register reg6, |
5871 if (r3.is(r4)) return true; | 5871 Register reg7, |
5872 return false; | 5872 Register reg8) { |
| 5873 int n_of_valid_regs = reg1.is_valid() + reg2.is_valid() + |
| 5874 reg3.is_valid() + reg4.is_valid() + reg5.is_valid() + reg6.is_valid() + |
| 5875 reg7.is_valid() + reg8.is_valid(); |
| 5876 |
| 5877 RegList regs = 0; |
| 5878 if (reg1.is_valid()) regs |= reg1.bit(); |
| 5879 if (reg2.is_valid()) regs |= reg2.bit(); |
| 5880 if (reg3.is_valid()) regs |= reg3.bit(); |
| 5881 if (reg4.is_valid()) regs |= reg4.bit(); |
| 5882 if (reg5.is_valid()) regs |= reg5.bit(); |
| 5883 if (reg6.is_valid()) regs |= reg6.bit(); |
| 5884 if (reg7.is_valid()) regs |= reg7.bit(); |
| 5885 if (reg8.is_valid()) regs |= reg8.bit(); |
| 5886 int n_of_non_aliasing_regs = NumRegs(regs); |
| 5887 |
| 5888 return n_of_valid_regs != n_of_non_aliasing_regs; |
5873 } | 5889 } |
5874 | 5890 |
5875 | 5891 |
5876 CodePatcher::CodePatcher(byte* address, | 5892 CodePatcher::CodePatcher(byte* address, |
5877 int instructions, | 5893 int instructions, |
5878 FlushICache flush_cache) | 5894 FlushICache flush_cache) |
5879 : address_(address), | 5895 : address_(address), |
5880 size_(instructions * Assembler::kInstrSize), | 5896 size_(instructions * Assembler::kInstrSize), |
5881 masm_(NULL, address, size_ + Assembler::kGap), | 5897 masm_(NULL, address, size_ + Assembler::kGap), |
5882 flush_cache_(flush_cache) { | 5898 flush_cache_(flush_cache) { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5948 } | 5964 } |
5949 if (ms.shift() > 0) sra(result, result, ms.shift()); | 5965 if (ms.shift() > 0) sra(result, result, ms.shift()); |
5950 srl(at, dividend, 31); | 5966 srl(at, dividend, 31); |
5951 Addu(result, result, Operand(at)); | 5967 Addu(result, result, Operand(at)); |
5952 } | 5968 } |
5953 | 5969 |
5954 | 5970 |
5955 } } // namespace v8::internal | 5971 } } // namespace v8::internal |
5956 | 5972 |
5957 #endif // V8_TARGET_ARCH_MIPS64 | 5973 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |