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