OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 7536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7547 ASSERT_EQ(kSmiTagSize, 1); | 7547 ASSERT_EQ(kSmiTagSize, 1); |
7548 Register tmp = properties; | 7548 Register tmp = properties; |
7549 __ sll(scratch0, index, 1); | 7549 __ sll(scratch0, index, 1); |
7550 __ Addu(tmp, properties, scratch0); | 7550 __ Addu(tmp, properties, scratch0); |
7551 __ lw(entity_name, FieldMemOperand(tmp, kElementsStartOffset)); | 7551 __ lw(entity_name, FieldMemOperand(tmp, kElementsStartOffset)); |
7552 | 7552 |
7553 ASSERT(!tmp.is(entity_name)); | 7553 ASSERT(!tmp.is(entity_name)); |
7554 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex); | 7554 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex); |
7555 __ Branch(done, eq, entity_name, Operand(tmp)); | 7555 __ Branch(done, eq, entity_name, Operand(tmp)); |
7556 | 7556 |
7557 if (i != kInlinedProbes - 1) { | 7557 // Load the hole ready for use below: |
7558 // Load the hole ready for use below: | 7558 __ LoadRoot(tmp, Heap::kTheHoleValueRootIndex); |
7559 __ LoadRoot(tmp, Heap::kTheHoleValueRootIndex); | |
7560 | 7559 |
7561 // Stop if found the property. | 7560 // Stop if found the property. |
7562 __ Branch(miss, eq, entity_name, Operand(Handle<Name>(name))); | 7561 __ Branch(miss, eq, entity_name, Operand(Handle<Name>(name))); |
7563 | 7562 |
7564 Label good; | 7563 Label good; |
7565 __ Branch(&good, eq, entity_name, Operand(tmp)); | 7564 __ Branch(&good, eq, entity_name, Operand(tmp)); |
7566 | 7565 |
7567 // Check if the entry name is not a unique name. | 7566 // Check if the entry name is not a unique name. |
7568 __ lw(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset)); | 7567 __ lw(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset)); |
7569 __ lbu(entity_name, | 7568 __ lbu(entity_name, |
7570 FieldMemOperand(entity_name, Map::kInstanceTypeOffset)); | 7569 FieldMemOperand(entity_name, Map::kInstanceTypeOffset)); |
7571 __ And(scratch0, entity_name, Operand(kIsInternalizedMask)); | 7570 __ And(scratch0, entity_name, Operand(kIsInternalizedMask)); |
7572 __ Branch(&good, ne, scratch0, Operand(zero_reg)); | 7571 __ Branch(&good, ne, scratch0, Operand(zero_reg)); |
7573 __ Branch(miss, ne, entity_name, Operand(SYMBOL_TYPE)); | 7572 __ Branch(miss, ne, entity_name, Operand(SYMBOL_TYPE)); |
7574 | 7573 |
7575 __ bind(&good); | 7574 __ bind(&good); |
7576 | 7575 |
7577 // Restore the properties. | 7576 // Restore the properties. |
7578 __ lw(properties, | 7577 __ lw(properties, |
7579 FieldMemOperand(receiver, JSObject::kPropertiesOffset)); | 7578 FieldMemOperand(receiver, JSObject::kPropertiesOffset)); |
7580 } | |
7581 } | 7579 } |
7582 | 7580 |
7583 const int spill_mask = | 7581 const int spill_mask = |
7584 (ra.bit() | t2.bit() | t1.bit() | t0.bit() | a3.bit() | | 7582 (ra.bit() | t2.bit() | t1.bit() | t0.bit() | a3.bit() | |
7585 a2.bit() | a1.bit() | a0.bit() | v0.bit()); | 7583 a2.bit() | a1.bit() | a0.bit() | v0.bit()); |
7586 | 7584 |
7587 __ MultiPush(spill_mask); | 7585 __ MultiPush(spill_mask); |
7588 __ lw(a0, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); | 7586 __ lw(a0, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); |
7589 __ li(a1, Operand(Handle<Name>(name))); | 7587 __ li(a1, Operand(Handle<Name>(name))); |
7590 NameDictionaryLookupStub stub(NEGATIVE_LOOKUP); | 7588 NameDictionaryLookupStub stub(NEGATIVE_LOOKUP); |
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8203 __ Pop(ra, t1, a1); | 8201 __ Pop(ra, t1, a1); |
8204 __ Ret(); | 8202 __ Ret(); |
8205 } | 8203 } |
8206 | 8204 |
8207 | 8205 |
8208 #undef __ | 8206 #undef __ |
8209 | 8207 |
8210 } } // namespace v8::internal | 8208 } } // namespace v8::internal |
8211 | 8209 |
8212 #endif // V8_TARGET_ARCH_MIPS | 8210 #endif // V8_TARGET_ARCH_MIPS |
OLD | NEW |