| 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 7396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7407 ASSERT_EQ(kSmiTagSize, 1); | 7407 ASSERT_EQ(kSmiTagSize, 1); |
| 7408 Register tmp = properties; | 7408 Register tmp = properties; |
| 7409 __ add(tmp, properties, Operand(index, LSL, 1)); | 7409 __ add(tmp, properties, Operand(index, LSL, 1)); |
| 7410 __ ldr(entity_name, FieldMemOperand(tmp, kElementsStartOffset)); | 7410 __ ldr(entity_name, FieldMemOperand(tmp, kElementsStartOffset)); |
| 7411 | 7411 |
| 7412 ASSERT(!tmp.is(entity_name)); | 7412 ASSERT(!tmp.is(entity_name)); |
| 7413 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex); | 7413 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex); |
| 7414 __ cmp(entity_name, tmp); | 7414 __ cmp(entity_name, tmp); |
| 7415 __ b(eq, done); | 7415 __ b(eq, done); |
| 7416 | 7416 |
| 7417 if (i != kInlinedProbes - 1) { | 7417 // Load the hole ready for use below: |
| 7418 // Load the hole ready for use below: | 7418 __ LoadRoot(tmp, Heap::kTheHoleValueRootIndex); |
| 7419 __ LoadRoot(tmp, Heap::kTheHoleValueRootIndex); | |
| 7420 | 7419 |
| 7421 // Stop if found the property. | 7420 // Stop if found the property. |
| 7422 __ cmp(entity_name, Operand(Handle<Name>(name))); | 7421 __ cmp(entity_name, Operand(Handle<Name>(name))); |
| 7423 __ b(eq, miss); | 7422 __ b(eq, miss); |
| 7424 | 7423 |
| 7425 Label good; | 7424 Label good; |
| 7426 __ cmp(entity_name, tmp); | 7425 __ cmp(entity_name, tmp); |
| 7427 __ b(eq, &good); | 7426 __ b(eq, &good); |
| 7428 | 7427 |
| 7429 // Check if the entry name is not a unique name. | 7428 // Check if the entry name is not a unique name. |
| 7430 __ ldr(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset)); | 7429 __ ldr(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset)); |
| 7431 __ ldrb(entity_name, | 7430 __ ldrb(entity_name, |
| 7432 FieldMemOperand(entity_name, Map::kInstanceTypeOffset)); | 7431 FieldMemOperand(entity_name, Map::kInstanceTypeOffset)); |
| 7433 __ tst(entity_name, Operand(kIsInternalizedMask)); | 7432 __ tst(entity_name, Operand(kIsInternalizedMask)); |
| 7434 __ b(ne, &good); | 7433 __ b(ne, &good); |
| 7435 __ cmp(entity_name, Operand(SYMBOL_TYPE)); | 7434 __ cmp(entity_name, Operand(SYMBOL_TYPE)); |
| 7436 __ b(ne, miss); | 7435 __ b(ne, miss); |
| 7437 | 7436 |
| 7438 __ bind(&good); | 7437 __ bind(&good); |
| 7439 | 7438 |
| 7440 // Restore the properties. | 7439 // Restore the properties. |
| 7441 __ ldr(properties, | 7440 __ ldr(properties, |
| 7442 FieldMemOperand(receiver, JSObject::kPropertiesOffset)); | 7441 FieldMemOperand(receiver, JSObject::kPropertiesOffset)); |
| 7443 } | |
| 7444 } | 7442 } |
| 7445 | 7443 |
| 7446 const int spill_mask = | 7444 const int spill_mask = |
| 7447 (lr.bit() | r6.bit() | r5.bit() | r4.bit() | r3.bit() | | 7445 (lr.bit() | r6.bit() | r5.bit() | r4.bit() | r3.bit() | |
| 7448 r2.bit() | r1.bit() | r0.bit()); | 7446 r2.bit() | r1.bit() | r0.bit()); |
| 7449 | 7447 |
| 7450 __ stm(db_w, sp, spill_mask); | 7448 __ stm(db_w, sp, spill_mask); |
| 7451 __ ldr(r0, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); | 7449 __ ldr(r0, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); |
| 7452 __ mov(r1, Operand(Handle<Name>(name))); | 7450 __ mov(r1, Operand(Handle<Name>(name))); |
| 7453 NameDictionaryLookupStub stub(NEGATIVE_LOOKUP); | 7451 NameDictionaryLookupStub stub(NEGATIVE_LOOKUP); |
| (...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8057 | 8055 |
| 8058 __ Pop(lr, r5, r1); | 8056 __ Pop(lr, r5, r1); |
| 8059 __ Ret(); | 8057 __ Ret(); |
| 8060 } | 8058 } |
| 8061 | 8059 |
| 8062 #undef __ | 8060 #undef __ |
| 8063 | 8061 |
| 8064 } } // namespace v8::internal | 8062 } } // namespace v8::internal |
| 8065 | 8063 |
| 8066 #endif // V8_TARGET_ARCH_ARM | 8064 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |