Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(987)

Side by Side Diff: src/arm/code-stubs-arm.cc

Issue 13393012: Merged r14074 into 3.16 branch. (Closed) Base URL: https://v8.googlecode.com/svn/branches/3.16
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/mips/code-stubs-mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 7291 matching lines...) Expand 10 before | Expand all | Expand 10 after
7302 ASSERT_EQ(kSmiTagSize, 1); 7302 ASSERT_EQ(kSmiTagSize, 1);
7303 Register tmp = properties; 7303 Register tmp = properties;
7304 __ add(tmp, properties, Operand(index, LSL, 1)); 7304 __ add(tmp, properties, Operand(index, LSL, 1));
7305 __ ldr(entity_name, FieldMemOperand(tmp, kElementsStartOffset)); 7305 __ ldr(entity_name, FieldMemOperand(tmp, kElementsStartOffset));
7306 7306
7307 ASSERT(!tmp.is(entity_name)); 7307 ASSERT(!tmp.is(entity_name));
7308 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex); 7308 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex);
7309 __ cmp(entity_name, tmp); 7309 __ cmp(entity_name, tmp);
7310 __ b(eq, done); 7310 __ b(eq, done);
7311 7311
7312 if (i != kInlinedProbes - 1) { 7312 // Load the hole ready for use below:
7313 // Load the hole ready for use below: 7313 __ LoadRoot(tmp, Heap::kTheHoleValueRootIndex);
7314 __ LoadRoot(tmp, Heap::kTheHoleValueRootIndex);
7315 7314
7316 // Stop if found the property. 7315 // Stop if found the property.
7317 __ cmp(entity_name, Operand(Handle<String>(name))); 7316 __ cmp(entity_name, Operand(Handle<String>(name)));
7318 __ b(eq, miss); 7317 __ b(eq, miss);
7319 7318
7320 Label the_hole; 7319 Label the_hole;
7321 __ cmp(entity_name, tmp); 7320 __ cmp(entity_name, tmp);
7322 __ b(eq, &the_hole); 7321 __ b(eq, &the_hole);
7323 7322
7324 // Check if the entry name is not a symbol. 7323 // Check if the entry name is not a symbol.
7325 __ ldr(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset)); 7324 __ ldr(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset));
7326 __ ldrb(entity_name, 7325 __ ldrb(entity_name,
7327 FieldMemOperand(entity_name, Map::kInstanceTypeOffset)); 7326 FieldMemOperand(entity_name, Map::kInstanceTypeOffset));
7328 __ tst(entity_name, Operand(kIsSymbolMask)); 7327 __ tst(entity_name, Operand(kIsSymbolMask));
7329 __ b(eq, miss); 7328 __ b(eq, miss);
7330 7329
7331 __ bind(&the_hole); 7330 __ bind(&the_hole);
7332 7331
7333 // Restore the properties. 7332 // Restore the properties.
7334 __ ldr(properties, 7333 __ ldr(properties,
7335 FieldMemOperand(receiver, JSObject::kPropertiesOffset)); 7334 FieldMemOperand(receiver, JSObject::kPropertiesOffset));
7336 }
7337 } 7335 }
7338 7336
7339 const int spill_mask = 7337 const int spill_mask =
7340 (lr.bit() | r6.bit() | r5.bit() | r4.bit() | r3.bit() | 7338 (lr.bit() | r6.bit() | r5.bit() | r4.bit() | r3.bit() |
7341 r2.bit() | r1.bit() | r0.bit()); 7339 r2.bit() | r1.bit() | r0.bit());
7342 7340
7343 __ stm(db_w, sp, spill_mask); 7341 __ stm(db_w, sp, spill_mask);
7344 __ ldr(r0, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); 7342 __ ldr(r0, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
7345 __ mov(r1, Operand(Handle<String>(name))); 7343 __ mov(r1, Operand(Handle<String>(name)));
7346 StringDictionaryLookupStub stub(NEGATIVE_LOOKUP); 7344 StringDictionaryLookupStub stub(NEGATIVE_LOOKUP);
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
7946 7944
7947 __ Pop(lr, r5, r1); 7945 __ Pop(lr, r5, r1);
7948 __ Ret(); 7946 __ Ret();
7949 } 7947 }
7950 7948
7951 #undef __ 7949 #undef __
7952 7950
7953 } } // namespace v8::internal 7951 } } // namespace v8::internal
7954 7952
7955 #endif // V8_TARGET_ARCH_ARM 7953 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | src/mips/code-stubs-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698