OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 5936 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5947 // hash += hash << 10; | 5947 // hash += hash << 10; |
5948 __ sll(at, hash, 10); | 5948 __ sll(at, hash, 10); |
5949 __ addu(hash, hash, at); | 5949 __ addu(hash, hash, at); |
5950 // hash ^= hash >> 6; | 5950 // hash ^= hash >> 6; |
5951 __ srl(at, hash, 6); | 5951 __ srl(at, hash, 6); |
5952 __ xor_(hash, hash, at); | 5952 __ xor_(hash, hash, at); |
5953 } | 5953 } |
5954 | 5954 |
5955 | 5955 |
5956 void StringHelper::GenerateHashGetHash(MacroAssembler* masm, | 5956 void StringHelper::GenerateHashGetHash(MacroAssembler* masm, |
5957 Register hash) { | 5957 Register hash) { |
5958 // hash += hash << 3; | 5958 // hash += hash << 3; |
5959 __ sll(at, hash, 3); | 5959 __ sll(at, hash, 3); |
5960 __ addu(hash, hash, at); | 5960 __ addu(hash, hash, at); |
5961 // hash ^= hash >> 11; | 5961 // hash ^= hash >> 11; |
5962 __ srl(at, hash, 11); | 5962 __ srl(at, hash, 11); |
5963 __ xor_(hash, hash, at); | 5963 __ xor_(hash, hash, at); |
5964 // hash += hash << 15; | 5964 // hash += hash << 15; |
5965 __ sll(at, hash, 15); | 5965 __ sll(at, hash, 15); |
5966 __ addu(hash, hash, at); | 5966 __ addu(hash, hash, at); |
5967 | 5967 |
5968 uint32_t kHashShiftCutOffMask = (1 << (32 - String::kHashShift)) - 1; | 5968 __ li(at, Operand(String::kHashBitMask)); |
5969 __ li(at, Operand(kHashShiftCutOffMask)); | |
5970 __ and_(hash, hash, at); | 5969 __ and_(hash, hash, at); |
5971 | 5970 |
5972 // if (hash == 0) hash = 27; | 5971 // if (hash == 0) hash = 27; |
5973 __ ori(at, zero_reg, 27); | 5972 __ ori(at, zero_reg, StringHasher::kZeroHash); |
5974 __ movz(hash, at, hash); | 5973 __ movz(hash, at, hash); |
5975 } | 5974 } |
5976 | 5975 |
5977 | 5976 |
5978 void SubStringStub::Generate(MacroAssembler* masm) { | 5977 void SubStringStub::Generate(MacroAssembler* masm) { |
5979 Label runtime; | 5978 Label runtime; |
5980 // Stack frame on entry. | 5979 // Stack frame on entry. |
5981 // ra: return address | 5980 // ra: return address |
5982 // sp[0]: to | 5981 // sp[0]: to |
5983 // sp[4]: from | 5982 // sp[4]: from |
(...skipping 1598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7582 __ Ret(USE_DELAY_SLOT); | 7581 __ Ret(USE_DELAY_SLOT); |
7583 __ mov(v0, a0); | 7582 __ mov(v0, a0); |
7584 } | 7583 } |
7585 | 7584 |
7586 | 7585 |
7587 #undef __ | 7586 #undef __ |
7588 | 7587 |
7589 } } // namespace v8::internal | 7588 } } // namespace v8::internal |
7590 | 7589 |
7591 #endif // V8_TARGET_ARCH_MIPS | 7590 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |