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 |