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_IA32 | 7 #if V8_TARGET_ARCH_IA32 |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/division-by-constant.h" | 10 #include "src/base/division-by-constant.h" |
(...skipping 2653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2664 mov(descriptors, FieldOperand(map, Map::kDescriptorsOffset)); | 2664 mov(descriptors, FieldOperand(map, Map::kDescriptorsOffset)); |
2665 } | 2665 } |
2666 | 2666 |
2667 | 2667 |
2668 void MacroAssembler::NumberOfOwnDescriptors(Register dst, Register map) { | 2668 void MacroAssembler::NumberOfOwnDescriptors(Register dst, Register map) { |
2669 mov(dst, FieldOperand(map, Map::kBitField3Offset)); | 2669 mov(dst, FieldOperand(map, Map::kBitField3Offset)); |
2670 DecodeField<Map::NumberOfOwnDescriptorsBits>(dst); | 2670 DecodeField<Map::NumberOfOwnDescriptorsBits>(dst); |
2671 } | 2671 } |
2672 | 2672 |
2673 | 2673 |
| 2674 void MacroAssembler::LoadAccessor(Register dst, Register holder, |
| 2675 int accessor_index, |
| 2676 AccessorComponent accessor) { |
| 2677 mov(dst, FieldOperand(holder, HeapObject::kMapOffset)); |
| 2678 LoadInstanceDescriptors(dst, dst); |
| 2679 mov(dst, FieldOperand(dst, DescriptorArray::GetValueOffset(accessor_index))); |
| 2680 int offset = accessor == ACCESSOR_GETTER ? AccessorPair::kGetterOffset |
| 2681 : AccessorPair::kSetterOffset; |
| 2682 mov(dst, FieldOperand(dst, offset)); |
| 2683 } |
| 2684 |
| 2685 |
2674 void MacroAssembler::LoadPowerOf2(XMMRegister dst, | 2686 void MacroAssembler::LoadPowerOf2(XMMRegister dst, |
2675 Register scratch, | 2687 Register scratch, |
2676 int power) { | 2688 int power) { |
2677 DCHECK(is_uintn(power + HeapNumber::kExponentBias, | 2689 DCHECK(is_uintn(power + HeapNumber::kExponentBias, |
2678 HeapNumber::kExponentBits)); | 2690 HeapNumber::kExponentBits)); |
2679 mov(scratch, Immediate(power + HeapNumber::kExponentBias)); | 2691 mov(scratch, Immediate(power + HeapNumber::kExponentBias)); |
2680 movd(dst, scratch); | 2692 movd(dst, scratch); |
2681 psllq(dst, HeapNumber::kMantissaBits); | 2693 psllq(dst, HeapNumber::kMantissaBits); |
2682 } | 2694 } |
2683 | 2695 |
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3266 if (mag.shift > 0) sar(edx, mag.shift); | 3278 if (mag.shift > 0) sar(edx, mag.shift); |
3267 mov(eax, dividend); | 3279 mov(eax, dividend); |
3268 shr(eax, 31); | 3280 shr(eax, 31); |
3269 add(edx, eax); | 3281 add(edx, eax); |
3270 } | 3282 } |
3271 | 3283 |
3272 | 3284 |
3273 } } // namespace v8::internal | 3285 } } // namespace v8::internal |
3274 | 3286 |
3275 #endif // V8_TARGET_ARCH_IA32 | 3287 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |