| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 3738 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3749 InlineCacheHolderFlag holder = OWN_MAP); | 3749 InlineCacheHolderFlag holder = OWN_MAP); |
| 3750 | 3750 |
| 3751 static inline Flags ComputeMonomorphicFlags( | 3751 static inline Flags ComputeMonomorphicFlags( |
| 3752 Kind kind, | 3752 Kind kind, |
| 3753 PropertyType type, | 3753 PropertyType type, |
| 3754 ExtraICState extra_ic_state = kNoExtraICState, | 3754 ExtraICState extra_ic_state = kNoExtraICState, |
| 3755 InlineCacheHolderFlag holder = OWN_MAP, | 3755 InlineCacheHolderFlag holder = OWN_MAP, |
| 3756 InLoopFlag in_loop = NOT_IN_LOOP, | 3756 InLoopFlag in_loop = NOT_IN_LOOP, |
| 3757 int argc = -1); | 3757 int argc = -1); |
| 3758 | 3758 |
| 3759 static inline Kind ExtractKindFromFlags(Flags flags); | |
| 3760 static inline InlineCacheState ExtractICStateFromFlags(Flags flags); | 3759 static inline InlineCacheState ExtractICStateFromFlags(Flags flags); |
| 3761 static inline ExtraICState ExtractExtraICStateFromFlags(Flags flags); | |
| 3762 static inline InLoopFlag ExtractICInLoopFromFlags(Flags flags); | 3760 static inline InLoopFlag ExtractICInLoopFromFlags(Flags flags); |
| 3763 static inline PropertyType ExtractTypeFromFlags(Flags flags); | 3761 static inline PropertyType ExtractTypeFromFlags(Flags flags); |
| 3762 static inline Kind ExtractKindFromFlags(Flags flags); |
| 3763 static inline InlineCacheHolderFlag ExtractCacheHolderFromFlags(Flags flags); |
| 3764 static inline ExtraICState ExtractExtraICStateFromFlags(Flags flags); |
| 3764 static inline int ExtractArgumentsCountFromFlags(Flags flags); | 3765 static inline int ExtractArgumentsCountFromFlags(Flags flags); |
| 3765 static inline InlineCacheHolderFlag ExtractCacheHolderFromFlags(Flags flags); | 3766 |
| 3766 static inline Flags RemoveTypeFromFlags(Flags flags); | 3767 static inline Flags RemoveTypeFromFlags(Flags flags); |
| 3767 | 3768 |
| 3768 // Convert a target address into a code object. | 3769 // Convert a target address into a code object. |
| 3769 static inline Code* GetCodeFromTargetAddress(Address address); | 3770 static inline Code* GetCodeFromTargetAddress(Address address); |
| 3770 | 3771 |
| 3771 // Convert an entry address into an object. | 3772 // Convert an entry address into an object. |
| 3772 static inline Object* GetObjectFromEntryAddress(Address location_of_address); | 3773 static inline Object* GetObjectFromEntryAddress(Address location_of_address); |
| 3773 | 3774 |
| 3774 // Returns the address of the first instruction. | 3775 // Returns the address of the first instruction. |
| 3775 inline byte* instruction_start(); | 3776 inline byte* instruction_start(); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3875 static const int kToBooleanTypeOffset = kStubMajorKeyOffset + 1; | 3876 static const int kToBooleanTypeOffset = kStubMajorKeyOffset + 1; |
| 3876 static const int kHasDeoptimizationSupportOffset = kOptimizableOffset + 1; | 3877 static const int kHasDeoptimizationSupportOffset = kOptimizableOffset + 1; |
| 3877 | 3878 |
| 3878 static const int kBinaryOpReturnTypeOffset = kBinaryOpTypeOffset + 1; | 3879 static const int kBinaryOpReturnTypeOffset = kBinaryOpTypeOffset + 1; |
| 3879 static const int kAllowOSRAtLoopNestingLevelOffset = | 3880 static const int kAllowOSRAtLoopNestingLevelOffset = |
| 3880 kHasDeoptimizationSupportOffset + 1; | 3881 kHasDeoptimizationSupportOffset + 1; |
| 3881 | 3882 |
| 3882 static const int kSafepointTableOffsetOffset = kStackSlotsOffset + kIntSize; | 3883 static const int kSafepointTableOffsetOffset = kStackSlotsOffset + kIntSize; |
| 3883 static const int kStackCheckTableOffsetOffset = kStackSlotsOffset + kIntSize; | 3884 static const int kStackCheckTableOffsetOffset = kStackSlotsOffset + kIntSize; |
| 3884 | 3885 |
| 3885 // Flags layout. | 3886 // Flags layout. BitField<type, shift, size>. |
| 3886 static const int kFlagsICStateShift = 0; | 3887 class ICStateField: public BitField<InlineCacheState, 0, 3> {}; |
| 3887 static const int kFlagsICInLoopShift = 3; | 3888 class ICInLoopField: public BitField<InLoopFlag, 3, 1> {}; |
| 3888 static const int kFlagsTypeShift = 4; | 3889 class TypeField: public BitField<PropertyType, 4, 4> {}; |
| 3889 static const int kFlagsKindShift = 8; | 3890 class KindField: public BitField<Kind, 8, 4> {}; |
| 3890 static const int kFlagsICHolderShift = 12; | 3891 class CacheHolderField: public BitField<InlineCacheHolderFlag, 12, 1> {}; |
| 3891 static const int kFlagsExtraICStateShift = 13; | 3892 class ExtraICStateField: public BitField<ExtraICState, 13, 2> {}; |
| 3893 |
| 3894 // Signed field cannot be encoded using the BitField class. |
| 3892 static const int kFlagsArgumentsCountShift = 15; | 3895 static const int kFlagsArgumentsCountShift = 15; |
| 3893 | 3896 static const int kFlagsArgumentsCountMask = 0xffff8000; |
| 3894 static const int kFlagsICStateMask = 0x00000007; // 00000000111 | |
| 3895 static const int kFlagsICInLoopMask = 0x00000008; // 00000001000 | |
| 3896 static const int kFlagsTypeMask = 0x000000F0; // 00001110000 | |
| 3897 static const int kFlagsKindMask = 0x00000F00; // 11110000000 | |
| 3898 static const int kFlagsCacheInPrototypeMapMask = 0x00001000; | |
| 3899 static const int kFlagsExtraICStateMask = 0x00006000; | |
| 3900 static const int kFlagsArgumentsCountMask = 0xFFFF8000; | |
| 3901 | 3897 |
| 3902 static const int kFlagsNotUsedInLookup = | 3898 static const int kFlagsNotUsedInLookup = |
| 3903 (kFlagsICInLoopMask | kFlagsTypeMask | kFlagsCacheInPrototypeMapMask); | 3899 ICInLoopField::kMask | TypeField::kMask | CacheHolderField::kMask; |
| 3904 | 3900 |
| 3905 private: | 3901 private: |
| 3906 DISALLOW_IMPLICIT_CONSTRUCTORS(Code); | 3902 DISALLOW_IMPLICIT_CONSTRUCTORS(Code); |
| 3907 }; | 3903 }; |
| 3908 | 3904 |
| 3909 | 3905 |
| 3910 // All heap objects have a Map that describes their structure. | 3906 // All heap objects have a Map that describes their structure. |
| 3911 // A Map contains information about: | 3907 // A Map contains information about: |
| 3912 // - Size information about the object | 3908 // - Size information about the object |
| 3913 // - How to iterate over an object (for garbage collection) | 3909 // - How to iterate over an object (for garbage collection) |
| (...skipping 3541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7455 } else { | 7451 } else { |
| 7456 value &= ~(1 << bit_position); | 7452 value &= ~(1 << bit_position); |
| 7457 } | 7453 } |
| 7458 return value; | 7454 return value; |
| 7459 } | 7455 } |
| 7460 }; | 7456 }; |
| 7461 | 7457 |
| 7462 } } // namespace v8::internal | 7458 } } // namespace v8::internal |
| 7463 | 7459 |
| 7464 #endif // V8_OBJECTS_H_ | 7460 #endif // V8_OBJECTS_H_ |
| OLD | NEW |