| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/v8.h" | 5 #include "src/v8.h" | 
| 6 | 6 | 
| 7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM | 
| 8 | 8 | 
| 9 #include "src/codegen.h" | 9 #include "src/codegen.h" | 
| 10 #include "src/ic/ic.h" | 10 #include "src/ic/ic.h" | 
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 362   __ ldr(scratch, FieldMemOperand(backing_store, FixedArray::kLengthOffset)); | 362   __ ldr(scratch, FieldMemOperand(backing_store, FixedArray::kLengthOffset)); | 
| 363   __ cmp(key, Operand(scratch)); | 363   __ cmp(key, Operand(scratch)); | 
| 364   __ b(cs, slow_case); | 364   __ b(cs, slow_case); | 
| 365   __ mov(scratch, Operand(kPointerSize >> 1)); | 365   __ mov(scratch, Operand(kPointerSize >> 1)); | 
| 366   __ mul(scratch, key, scratch); | 366   __ mul(scratch, key, scratch); | 
| 367   __ add(scratch, scratch, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); | 367   __ add(scratch, scratch, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); | 
| 368   return MemOperand(backing_store, scratch); | 368   return MemOperand(backing_store, scratch); | 
| 369 } | 369 } | 
| 370 | 370 | 
| 371 | 371 | 
| 372 void KeyedLoadIC::GenerateSloppyArguments(MacroAssembler* masm) { |  | 
| 373   // The return address is in lr. |  | 
| 374   Register receiver = LoadDescriptor::ReceiverRegister(); |  | 
| 375   Register key = LoadDescriptor::NameRegister(); |  | 
| 376   DCHECK(receiver.is(r1)); |  | 
| 377   DCHECK(key.is(r2)); |  | 
| 378 |  | 
| 379   Label slow, notin; |  | 
| 380   MemOperand mapped_location = GenerateMappedArgumentsLookup( |  | 
| 381       masm, receiver, key, r0, r3, r4, ¬in, &slow); |  | 
| 382   __ ldr(r0, mapped_location); |  | 
| 383   __ Ret(); |  | 
| 384   __ bind(¬in); |  | 
| 385   // The unmapped lookup expects that the parameter map is in r0. |  | 
| 386   MemOperand unmapped_location = |  | 
| 387       GenerateUnmappedArgumentsLookup(masm, key, r0, r3, &slow); |  | 
| 388   __ ldr(r0, unmapped_location); |  | 
| 389   __ LoadRoot(r3, Heap::kTheHoleValueRootIndex); |  | 
| 390   __ cmp(r0, r3); |  | 
| 391   __ b(eq, &slow); |  | 
| 392   __ Ret(); |  | 
| 393   __ bind(&slow); |  | 
| 394   GenerateMiss(masm); |  | 
| 395 } |  | 
| 396 |  | 
| 397 |  | 
| 398 void KeyedStoreIC::GenerateSloppyArguments(MacroAssembler* masm) { | 372 void KeyedStoreIC::GenerateSloppyArguments(MacroAssembler* masm) { | 
| 399   Register receiver = StoreDescriptor::ReceiverRegister(); | 373   Register receiver = StoreDescriptor::ReceiverRegister(); | 
| 400   Register key = StoreDescriptor::NameRegister(); | 374   Register key = StoreDescriptor::NameRegister(); | 
| 401   Register value = StoreDescriptor::ValueRegister(); | 375   Register value = StoreDescriptor::ValueRegister(); | 
| 402   DCHECK(receiver.is(r1)); | 376   DCHECK(receiver.is(r1)); | 
| 403   DCHECK(key.is(r2)); | 377   DCHECK(key.is(r2)); | 
| 404   DCHECK(value.is(r0)); | 378   DCHECK(value.is(r0)); | 
| 405 | 379 | 
| 406   Label slow, notin; | 380   Label slow, notin; | 
| 407   MemOperand mapped_location = GenerateMappedArgumentsLookup( | 381   MemOperand mapped_location = GenerateMappedArgumentsLookup( | 
| (...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1036     patcher.EmitCondition(ne); | 1010     patcher.EmitCondition(ne); | 
| 1037   } else { | 1011   } else { | 
| 1038     DCHECK(Assembler::GetCondition(branch_instr) == ne); | 1012     DCHECK(Assembler::GetCondition(branch_instr) == ne); | 
| 1039     patcher.EmitCondition(eq); | 1013     patcher.EmitCondition(eq); | 
| 1040   } | 1014   } | 
| 1041 } | 1015 } | 
| 1042 } | 1016 } | 
| 1043 }  // namespace v8::internal | 1017 }  // namespace v8::internal | 
| 1044 | 1018 | 
| 1045 #endif  // V8_TARGET_ARCH_ARM | 1019 #endif  // V8_TARGET_ARCH_ARM | 
| OLD | NEW | 
|---|