| 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 // 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 3100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3111 } | 3111 } |
| 3112 | 3112 |
| 3113 | 3113 |
| 3114 PropertyDetails DescriptorArray::GetDetails(int descriptor_number) { | 3114 PropertyDetails DescriptorArray::GetDetails(int descriptor_number) { |
| 3115 DCHECK(descriptor_number < number_of_descriptors()); | 3115 DCHECK(descriptor_number < number_of_descriptors()); |
| 3116 Object* details = get(ToDetailsIndex(descriptor_number)); | 3116 Object* details = get(ToDetailsIndex(descriptor_number)); |
| 3117 return PropertyDetails(Smi::cast(details)); | 3117 return PropertyDetails(Smi::cast(details)); |
| 3118 } | 3118 } |
| 3119 | 3119 |
| 3120 | 3120 |
| 3121 PropertyType DescriptorArray::GetType(int descriptor_number) { | |
| 3122 return GetDetails(descriptor_number).type(); | |
| 3123 } | |
| 3124 | |
| 3125 | |
| 3126 int DescriptorArray::GetFieldIndex(int descriptor_number) { | 3121 int DescriptorArray::GetFieldIndex(int descriptor_number) { |
| 3127 DCHECK(GetDetails(descriptor_number).location() == kField); | 3122 DCHECK(GetDetails(descriptor_number).location() == kField); |
| 3128 return GetDetails(descriptor_number).field_index(); | 3123 return GetDetails(descriptor_number).field_index(); |
| 3129 } | 3124 } |
| 3130 | 3125 |
| 3131 FieldType* DescriptorArray::GetFieldType(int descriptor_number) { | 3126 FieldType* DescriptorArray::GetFieldType(int descriptor_number) { |
| 3132 DCHECK(GetDetails(descriptor_number).location() == kField); | 3127 DCHECK(GetDetails(descriptor_number).location() == kField); |
| 3133 Object* wrapped_type = GetValue(descriptor_number); | 3128 Object* wrapped_type = GetValue(descriptor_number); |
| 3134 return Map::UnwrapFieldType(wrapped_type); | 3129 return Map::UnwrapFieldType(wrapped_type); |
| 3135 } | 3130 } |
| 3136 | 3131 |
| 3137 Object* DescriptorArray::GetConstant(int descriptor_number) { | |
| 3138 return GetValue(descriptor_number); | |
| 3139 } | |
| 3140 | |
| 3141 | |
| 3142 Object* DescriptorArray::GetCallbacksObject(int descriptor_number) { | |
| 3143 DCHECK(GetType(descriptor_number) == ACCESSOR_CONSTANT); | |
| 3144 return GetValue(descriptor_number); | |
| 3145 } | |
| 3146 | |
| 3147 | |
| 3148 AccessorDescriptor* DescriptorArray::GetCallbacks(int descriptor_number) { | |
| 3149 DCHECK(GetType(descriptor_number) == ACCESSOR_CONSTANT); | |
| 3150 Foreign* p = Foreign::cast(GetCallbacksObject(descriptor_number)); | |
| 3151 return reinterpret_cast<AccessorDescriptor*>(p->foreign_address()); | |
| 3152 } | |
| 3153 | |
| 3154 | |
| 3155 void DescriptorArray::Get(int descriptor_number, Descriptor* desc) { | 3132 void DescriptorArray::Get(int descriptor_number, Descriptor* desc) { |
| 3156 desc->Init(handle(GetKey(descriptor_number), GetIsolate()), | 3133 desc->Init(handle(GetKey(descriptor_number), GetIsolate()), |
| 3157 handle(GetValue(descriptor_number), GetIsolate()), | 3134 handle(GetValue(descriptor_number), GetIsolate()), |
| 3158 GetDetails(descriptor_number)); | 3135 GetDetails(descriptor_number)); |
| 3159 } | 3136 } |
| 3160 | 3137 |
| 3161 | 3138 void DescriptorArray::Set(int descriptor_number, Name* key, Object* value, |
| 3162 void DescriptorArray::SetDescriptor(int descriptor_number, Descriptor* desc) { | 3139 PropertyDetails details) { |
| 3163 // Range check. | 3140 // Range check. |
| 3164 DCHECK(descriptor_number < number_of_descriptors()); | 3141 DCHECK(descriptor_number < number_of_descriptors()); |
| 3165 set(ToKeyIndex(descriptor_number), *desc->GetKey()); | 3142 set(ToKeyIndex(descriptor_number), key); |
| 3166 set(ToValueIndex(descriptor_number), *desc->GetValue()); | 3143 set(ToValueIndex(descriptor_number), value); |
| 3167 set(ToDetailsIndex(descriptor_number), desc->GetDetails().AsSmi()); | 3144 set(ToDetailsIndex(descriptor_number), details.AsSmi()); |
| 3145 } |
| 3146 |
| 3147 void DescriptorArray::Set(int descriptor_number, Descriptor* desc) { |
| 3148 Name* key = *desc->GetKey(); |
| 3149 Object* value = *desc->GetValue(); |
| 3150 Set(descriptor_number, key, value, desc->GetDetails()); |
| 3168 } | 3151 } |
| 3169 | 3152 |
| 3170 | 3153 |
| 3171 void DescriptorArray::Set(int descriptor_number, Descriptor* desc) { | |
| 3172 // Range check. | |
| 3173 DCHECK(descriptor_number < number_of_descriptors()); | |
| 3174 | |
| 3175 set(ToKeyIndex(descriptor_number), *desc->GetKey()); | |
| 3176 set(ToValueIndex(descriptor_number), *desc->GetValue()); | |
| 3177 set(ToDetailsIndex(descriptor_number), desc->GetDetails().AsSmi()); | |
| 3178 } | |
| 3179 | |
| 3180 | |
| 3181 void DescriptorArray::Append(Descriptor* desc) { | 3154 void DescriptorArray::Append(Descriptor* desc) { |
| 3182 DisallowHeapAllocation no_gc; | 3155 DisallowHeapAllocation no_gc; |
| 3183 int descriptor_number = number_of_descriptors(); | 3156 int descriptor_number = number_of_descriptors(); |
| 3184 SetNumberOfDescriptors(descriptor_number + 1); | 3157 SetNumberOfDescriptors(descriptor_number + 1); |
| 3185 Set(descriptor_number, desc); | 3158 Set(descriptor_number, desc); |
| 3186 | 3159 |
| 3187 uint32_t hash = desc->GetKey()->Hash(); | 3160 uint32_t hash = desc->GetKey()->Hash(); |
| 3188 | 3161 |
| 3189 int insertion; | 3162 int insertion; |
| 3190 | 3163 |
| (...skipping 5247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8438 #undef WRITE_INT64_FIELD | 8411 #undef WRITE_INT64_FIELD |
| 8439 #undef READ_BYTE_FIELD | 8412 #undef READ_BYTE_FIELD |
| 8440 #undef WRITE_BYTE_FIELD | 8413 #undef WRITE_BYTE_FIELD |
| 8441 #undef NOBARRIER_READ_BYTE_FIELD | 8414 #undef NOBARRIER_READ_BYTE_FIELD |
| 8442 #undef NOBARRIER_WRITE_BYTE_FIELD | 8415 #undef NOBARRIER_WRITE_BYTE_FIELD |
| 8443 | 8416 |
| 8444 } // namespace internal | 8417 } // namespace internal |
| 8445 } // namespace v8 | 8418 } // namespace v8 |
| 8446 | 8419 |
| 8447 #endif // V8_OBJECTS_INL_H_ | 8420 #endif // V8_OBJECTS_INL_H_ |
| OLD | NEW |