OLD | NEW |
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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 | 51 |
52 namespace v8 { | 52 namespace v8 { |
53 namespace internal { | 53 namespace internal { |
54 | 54 |
55 PropertyDetails::PropertyDetails(Smi* smi) { | 55 PropertyDetails::PropertyDetails(Smi* smi) { |
56 value_ = smi->value(); | 56 value_ = smi->value(); |
57 } | 57 } |
58 | 58 |
59 | 59 |
60 Smi* PropertyDetails::AsSmi() { | 60 Smi* PropertyDetails::AsSmi() { |
61 return Smi::FromInt(value_); | 61 // Ensure the upper 2 bits have the same value by sign extending it. This is |
| 62 // necessary to be able to use the 31st bit of the property details. |
| 63 int value = value_ << 1; |
| 64 return Smi::FromInt(value >> 1); |
62 } | 65 } |
63 | 66 |
64 | 67 |
65 PropertyDetails PropertyDetails::AsDeleted() { | 68 PropertyDetails PropertyDetails::AsDeleted() { |
66 Smi* smi = Smi::FromInt(value_ | DeletedField::encode(1)); | 69 Smi* smi = Smi::FromInt(value_ | DeletedField::encode(1)); |
67 return PropertyDetails(smi); | 70 return PropertyDetails(smi); |
68 } | 71 } |
69 | 72 |
70 | 73 |
71 #define TYPE_CHECKER(type, instancetype) \ | 74 #define TYPE_CHECKER(type, instancetype) \ |
(...skipping 2248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2320 return PropertyDetails(Smi::cast(details)); | 2323 return PropertyDetails(Smi::cast(details)); |
2321 } | 2324 } |
2322 | 2325 |
2323 | 2326 |
2324 PropertyType DescriptorArray::GetType(int descriptor_number) { | 2327 PropertyType DescriptorArray::GetType(int descriptor_number) { |
2325 return GetDetails(descriptor_number).type(); | 2328 return GetDetails(descriptor_number).type(); |
2326 } | 2329 } |
2327 | 2330 |
2328 | 2331 |
2329 int DescriptorArray::GetFieldIndex(int descriptor_number) { | 2332 int DescriptorArray::GetFieldIndex(int descriptor_number) { |
2330 return Descriptor::IndexFromValue(GetValue(descriptor_number)); | 2333 return GetDetails(descriptor_number).field_index(); |
2331 } | 2334 } |
2332 | 2335 |
2333 | 2336 |
2334 JSFunction* DescriptorArray::GetConstantFunction(int descriptor_number) { | 2337 JSFunction* DescriptorArray::GetConstantFunction(int descriptor_number) { |
2335 return JSFunction::cast(GetValue(descriptor_number)); | 2338 return JSFunction::cast(GetValue(descriptor_number)); |
2336 } | 2339 } |
2337 | 2340 |
2338 | 2341 |
2339 Object* DescriptorArray::GetCallbacksObject(int descriptor_number) { | 2342 Object* DescriptorArray::GetCallbacksObject(int descriptor_number) { |
2340 ASSERT(GetType(descriptor_number) == CALLBACKS); | 2343 ASSERT(GetType(descriptor_number) == CALLBACKS); |
(...skipping 3876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6217 #undef WRITE_UINT32_FIELD | 6220 #undef WRITE_UINT32_FIELD |
6218 #undef READ_SHORT_FIELD | 6221 #undef READ_SHORT_FIELD |
6219 #undef WRITE_SHORT_FIELD | 6222 #undef WRITE_SHORT_FIELD |
6220 #undef READ_BYTE_FIELD | 6223 #undef READ_BYTE_FIELD |
6221 #undef WRITE_BYTE_FIELD | 6224 #undef WRITE_BYTE_FIELD |
6222 | 6225 |
6223 | 6226 |
6224 } } // namespace v8::internal | 6227 } } // namespace v8::internal |
6225 | 6228 |
6226 #endif // V8_OBJECTS_INL_H_ | 6229 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |