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

Side by Side Diff: src/objects-inl.h

Issue 300753002: Fix PathTracer. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: also, test case. Created 6 years, 7 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
OLDNEW
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 // Review notes: 5 // Review notes:
6 // 6 //
7 // - The use of macros in these inline functions may seem superfluous 7 // - The use of macros in these inline functions may seem superfluous
8 // but it is absolutely needed to make sure gcc generates optimal 8 // but it is absolutely needed to make sure gcc generates optimal
9 // code. gcc is not happy when attempting to inline too deep. 9 // code. gcc is not happy when attempting to inline too deep.
10 // 10 //
(...skipping 3655 matching lines...) Expand 10 before | Expand all | Expand 10 after
3666 double* ptr = static_cast<double*>(external_pointer()); 3666 double* ptr = static_cast<double*>(external_pointer());
3667 ptr[index] = value; 3667 ptr[index] = value;
3668 } 3668 }
3669 3669
3670 3670
3671 void* FixedTypedArrayBase::DataPtr() { 3671 void* FixedTypedArrayBase::DataPtr() {
3672 return FIELD_ADDR(this, kDataOffset); 3672 return FIELD_ADDR(this, kDataOffset);
3673 } 3673 }
3674 3674
3675 3675
3676 int FixedTypedArrayBase::DataSize() { 3676 int FixedTypedArrayBase::DataSizeFromMap(Map* map) {
3677 InstanceType instance_type = map()->instance_type(); 3677 InstanceType instance_type = map->instance_type();
3678 int element_size; 3678 int element_size;
3679 switch (instance_type) { 3679 switch (instance_type) {
3680 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ 3680 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
3681 case FIXED_##TYPE##_ARRAY_TYPE: \ 3681 case FIXED_##TYPE##_ARRAY_TYPE: \
3682 element_size = size; \ 3682 element_size = size; \
3683 break; 3683 break;
3684 3684
3685 TYPED_ARRAYS(TYPED_ARRAY_CASE) 3685 TYPED_ARRAYS(TYPED_ARRAY_CASE)
3686 #undef TYPED_ARRAY_CASE 3686 #undef TYPED_ARRAY_CASE
3687 default: 3687 default:
3688 UNREACHABLE(); 3688 UNREACHABLE();
3689 return 0; 3689 return 0;
3690 } 3690 }
3691 return length() * element_size; 3691 return length() * element_size;
3692 } 3692 }
3693 3693
3694 3694
3695 int FixedTypedArrayBase::size() { 3695 int FixedTypedArrayBase::size() {
3696 return OBJECT_POINTER_ALIGN(kDataOffset + DataSize()); 3696 return OBJECT_POINTER_ALIGN(kDataOffset + DataSizeFromMap(map()));
3697 } 3697 }
3698 3698
3699 3699
3700 int FixedTypedArrayBase::SizeFromMap(Map* map) {
3701 return OBJECT_POINTER_ALIGN(kDataOffset + DataSizeFromMap(map));
3702 }
3703
3704
3700 uint8_t Uint8ArrayTraits::defaultValue() { return 0; } 3705 uint8_t Uint8ArrayTraits::defaultValue() { return 0; }
3701 3706
3702 3707
3703 uint8_t Uint8ClampedArrayTraits::defaultValue() { return 0; } 3708 uint8_t Uint8ClampedArrayTraits::defaultValue() { return 0; }
3704 3709
3705 3710
3706 int8_t Int8ArrayTraits::defaultValue() { return 0; } 3711 int8_t Int8ArrayTraits::defaultValue() { return 0; }
3707 3712
3708 3713
3709 uint16_t Uint16ArrayTraits::defaultValue() { return 0; } 3714 uint16_t Uint16ArrayTraits::defaultValue() { return 0; }
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
3944 } 3949 }
3945 if (instance_type == CONSTANT_POOL_ARRAY_TYPE) { 3950 if (instance_type == CONSTANT_POOL_ARRAY_TYPE) {
3946 return ConstantPoolArray::SizeFor( 3951 return ConstantPoolArray::SizeFor(
3947 reinterpret_cast<ConstantPoolArray*>(this)->count_of_int64_entries(), 3952 reinterpret_cast<ConstantPoolArray*>(this)->count_of_int64_entries(),
3948 reinterpret_cast<ConstantPoolArray*>(this)->count_of_code_ptr_entries(), 3953 reinterpret_cast<ConstantPoolArray*>(this)->count_of_code_ptr_entries(),
3949 reinterpret_cast<ConstantPoolArray*>(this)->count_of_heap_ptr_entries(), 3954 reinterpret_cast<ConstantPoolArray*>(this)->count_of_heap_ptr_entries(),
3950 reinterpret_cast<ConstantPoolArray*>(this)->count_of_int32_entries()); 3955 reinterpret_cast<ConstantPoolArray*>(this)->count_of_int32_entries());
3951 } 3956 }
3952 if (instance_type >= FIRST_FIXED_TYPED_ARRAY_TYPE && 3957 if (instance_type >= FIRST_FIXED_TYPED_ARRAY_TYPE &&
3953 instance_type <= LAST_FIXED_TYPED_ARRAY_TYPE) { 3958 instance_type <= LAST_FIXED_TYPED_ARRAY_TYPE) {
3954 return reinterpret_cast<FixedTypedArrayBase*>(this)->size(); 3959 return reinterpret_cast<FixedTypedArrayBase*>(this)->SizeFromMap(map);
3955 } 3960 }
3956 ASSERT(instance_type == CODE_TYPE); 3961 ASSERT(instance_type == CODE_TYPE);
3957 return reinterpret_cast<Code*>(this)->CodeSize(); 3962 return reinterpret_cast<Code*>(this)->CodeSize();
3958 } 3963 }
3959 3964
3960 3965
3961 void Map::set_instance_size(int value) { 3966 void Map::set_instance_size(int value) {
3962 ASSERT_EQ(0, value & (kPointerSize - 1)); 3967 ASSERT_EQ(0, value & (kPointerSize - 1));
3963 value >>= kPointerSizeLog2; 3968 value >>= kPointerSizeLog2;
3964 ASSERT(0 <= value && value < 256); 3969 ASSERT(0 <= value && value < 256);
(...skipping 2880 matching lines...) Expand 10 before | Expand all | Expand 10 after
6845 #undef READ_SHORT_FIELD 6850 #undef READ_SHORT_FIELD
6846 #undef WRITE_SHORT_FIELD 6851 #undef WRITE_SHORT_FIELD
6847 #undef READ_BYTE_FIELD 6852 #undef READ_BYTE_FIELD
6848 #undef WRITE_BYTE_FIELD 6853 #undef WRITE_BYTE_FIELD
6849 #undef NOBARRIER_READ_BYTE_FIELD 6854 #undef NOBARRIER_READ_BYTE_FIELD
6850 #undef NOBARRIER_WRITE_BYTE_FIELD 6855 #undef NOBARRIER_WRITE_BYTE_FIELD
6851 6856
6852 } } // namespace v8::internal 6857 } } // namespace v8::internal
6853 6858
6854 #endif // V8_OBJECTS_INL_H_ 6859 #endif // V8_OBJECTS_INL_H_
OLDNEW
« src/objects.h ('K') | « src/objects.h ('k') | test/cctest/test-heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698