| 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 |