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 6961 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6972 | 6972 |
6973 // Scale the index by multiplying by the entry size. | 6973 // Scale the index by multiplying by the entry size. |
6974 ASSERT(StringDictionary::kEntrySize == 3); | 6974 ASSERT(StringDictionary::kEntrySize == 3); |
6975 __ sll(at, index, 1); | 6975 __ sll(at, index, 1); |
6976 __ Addu(index, index, at); | 6976 __ Addu(index, index, at); |
6977 | 6977 |
6978 Register entity_name = scratch0; | 6978 Register entity_name = scratch0; |
6979 // Having undefined at this place means the name is not contained. | 6979 // Having undefined at this place means the name is not contained. |
6980 ASSERT_EQ(kSmiTagSize, 1); | 6980 ASSERT_EQ(kSmiTagSize, 1); |
6981 Register tmp = properties; | 6981 Register tmp = properties; |
6982 __ sll(tmp, index, 1); | 6982 __ sll(scratch0, index, 1); |
6983 __ Addu(tmp, properties, tmp); | 6983 __ Addu(tmp, properties, scratch0); |
6984 __ lw(entity_name, FieldMemOperand(tmp, kElementsStartOffset)); | 6984 __ lw(entity_name, FieldMemOperand(tmp, kElementsStartOffset)); |
6985 | 6985 |
6986 ASSERT(!tmp.is(entity_name)); | 6986 ASSERT(!tmp.is(entity_name)); |
6987 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex); | 6987 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex); |
6988 __ Branch(done, eq, entity_name, Operand(tmp)); | 6988 __ Branch(done, eq, entity_name, Operand(tmp)); |
6989 | 6989 |
6990 if (i != kInlinedProbes - 1) { | 6990 if (i != kInlinedProbes - 1) { |
6991 // Stop if found the property. | 6991 // Stop if found the property. |
6992 __ Branch(miss, eq, entity_name, Operand(Handle<String>(name))); | 6992 __ Branch(miss, eq, entity_name, Operand(Handle<String>(name))); |
6993 | 6993 |
6994 // Check if the entry name is not a symbol. | 6994 // Check if the entry name is not a symbol. |
6995 __ lw(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset)); | 6995 __ lw(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset)); |
6996 __ lbu(entity_name, | 6996 __ lbu(entity_name, |
6997 FieldMemOperand(entity_name, Map::kInstanceTypeOffset)); | 6997 FieldMemOperand(entity_name, Map::kInstanceTypeOffset)); |
6998 __ And(tmp, entity_name, Operand(kIsSymbolMask)); | 6998 __ And(scratch0, entity_name, Operand(kIsSymbolMask)); |
6999 __ Branch(miss, eq, tmp, Operand(zero_reg)); | 6999 __ Branch(miss, eq, scratch0, Operand(zero_reg)); |
7000 | 7000 |
7001 // Restore the properties. | 7001 // Restore the properties. |
7002 __ lw(properties, | 7002 __ lw(properties, |
7003 FieldMemOperand(receiver, JSObject::kPropertiesOffset)); | 7003 FieldMemOperand(receiver, JSObject::kPropertiesOffset)); |
7004 } | 7004 } |
7005 } | 7005 } |
7006 | 7006 |
7007 const int spill_mask = | 7007 const int spill_mask = |
7008 (ra.bit() | t2.bit() | t1.bit() | t0.bit() | a3.bit() | | 7008 (ra.bit() | t2.bit() | t1.bit() | t0.bit() | a3.bit() | |
7009 a2.bit() | a1.bit() | a0.bit() | v0.bit()); | 7009 a2.bit() | a1.bit() | a0.bit() | v0.bit()); |
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7546 | 7546 |
7547 // Fall through when we need to inform the incremental marker. | 7547 // Fall through when we need to inform the incremental marker. |
7548 } | 7548 } |
7549 | 7549 |
7550 | 7550 |
7551 #undef __ | 7551 #undef __ |
7552 | 7552 |
7553 } } // namespace v8::internal | 7553 } } // namespace v8::internal |
7554 | 7554 |
7555 #endif // V8_TARGET_ARCH_MIPS | 7555 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |