Chromium Code Reviews| 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 8068 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8079 // If the accessor in the prototype has the READ_ONLY property attribute, then | 8079 // If the accessor in the prototype has the READ_ONLY property attribute, then |
| 8080 // a new value is added to the local object when the property is set. | 8080 // a new value is added to the local object when the property is set. |
| 8081 // This shadows the accessor in the prototype. | 8081 // This shadows the accessor in the prototype. |
| 8082 class AccessorInfo: public Struct { | 8082 class AccessorInfo: public Struct { |
| 8083 public: | 8083 public: |
| 8084 DECL_ACCESSORS(getter, Object) | 8084 DECL_ACCESSORS(getter, Object) |
| 8085 DECL_ACCESSORS(setter, Object) | 8085 DECL_ACCESSORS(setter, Object) |
| 8086 DECL_ACCESSORS(data, Object) | 8086 DECL_ACCESSORS(data, Object) |
| 8087 DECL_ACCESSORS(name, Object) | 8087 DECL_ACCESSORS(name, Object) |
| 8088 DECL_ACCESSORS(flag, Smi) | 8088 DECL_ACCESSORS(flag, Smi) |
| 8089 DECL_ACCESSORS(compatible, Object) | |
|
Sven Panne
2012/06/04 07:50:32
The name "compatible" is a bit unclear, something
Michael Starzinger
2012/06/04 09:11:15
Done. I agree, the name bothered me as well, "expe
| |
| 8089 | 8090 |
| 8090 inline bool all_can_read(); | 8091 inline bool all_can_read(); |
| 8091 inline void set_all_can_read(bool value); | 8092 inline void set_all_can_read(bool value); |
| 8092 | 8093 |
| 8093 inline bool all_can_write(); | 8094 inline bool all_can_write(); |
| 8094 inline void set_all_can_write(bool value); | 8095 inline void set_all_can_write(bool value); |
| 8095 | 8096 |
| 8096 inline bool prohibits_overwriting(); | 8097 inline bool prohibits_overwriting(); |
| 8097 inline void set_prohibits_overwriting(bool value); | 8098 inline void set_prohibits_overwriting(bool value); |
| 8098 | 8099 |
| 8099 inline PropertyAttributes property_attributes(); | 8100 inline PropertyAttributes property_attributes(); |
| 8100 inline void set_property_attributes(PropertyAttributes attributes); | 8101 inline void set_property_attributes(PropertyAttributes attributes); |
| 8101 | 8102 |
| 8103 // Checks whether the given receiver is compatible with this accessor. | |
| 8104 inline bool IsCompatibleReceiver(Object* receiver); | |
| 8105 | |
| 8102 static inline AccessorInfo* cast(Object* obj); | 8106 static inline AccessorInfo* cast(Object* obj); |
| 8103 | 8107 |
| 8104 #ifdef OBJECT_PRINT | 8108 #ifdef OBJECT_PRINT |
| 8105 inline void AccessorInfoPrint() { | 8109 inline void AccessorInfoPrint() { |
| 8106 AccessorInfoPrint(stdout); | 8110 AccessorInfoPrint(stdout); |
| 8107 } | 8111 } |
| 8108 void AccessorInfoPrint(FILE* out); | 8112 void AccessorInfoPrint(FILE* out); |
| 8109 #endif | 8113 #endif |
| 8110 #ifdef DEBUG | 8114 #ifdef DEBUG |
| 8111 void AccessorInfoVerify(); | 8115 void AccessorInfoVerify(); |
| 8112 #endif | 8116 #endif |
| 8113 | 8117 |
| 8114 static const int kGetterOffset = HeapObject::kHeaderSize; | 8118 static const int kGetterOffset = HeapObject::kHeaderSize; |
| 8115 static const int kSetterOffset = kGetterOffset + kPointerSize; | 8119 static const int kSetterOffset = kGetterOffset + kPointerSize; |
| 8116 static const int kDataOffset = kSetterOffset + kPointerSize; | 8120 static const int kDataOffset = kSetterOffset + kPointerSize; |
| 8117 static const int kNameOffset = kDataOffset + kPointerSize; | 8121 static const int kNameOffset = kDataOffset + kPointerSize; |
| 8118 static const int kFlagOffset = kNameOffset + kPointerSize; | 8122 static const int kFlagOffset = kNameOffset + kPointerSize; |
| 8119 static const int kSize = kFlagOffset + kPointerSize; | 8123 static const int kCompatibleOffset = kFlagOffset + kPointerSize; |
| 8124 static const int kSize = kCompatibleOffset + kPointerSize; | |
| 8120 | 8125 |
| 8121 private: | 8126 private: |
| 8122 // Bit positions in flag. | 8127 // Bit positions in flag. |
| 8123 static const int kAllCanReadBit = 0; | 8128 static const int kAllCanReadBit = 0; |
| 8124 static const int kAllCanWriteBit = 1; | 8129 static const int kAllCanWriteBit = 1; |
| 8125 static const int kProhibitsOverwritingBit = 2; | 8130 static const int kProhibitsOverwritingBit = 2; |
| 8126 class AttributesField: public BitField<PropertyAttributes, 3, 3> {}; | 8131 class AttributesField: public BitField<PropertyAttributes, 3, 3> {}; |
| 8127 | 8132 |
| 8128 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorInfo); | 8133 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorInfo); |
| 8129 }; | 8134 }; |
| (...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8684 } else { | 8689 } else { |
| 8685 value &= ~(1 << bit_position); | 8690 value &= ~(1 << bit_position); |
| 8686 } | 8691 } |
| 8687 return value; | 8692 return value; |
| 8688 } | 8693 } |
| 8689 }; | 8694 }; |
| 8690 | 8695 |
| 8691 } } // namespace v8::internal | 8696 } } // namespace v8::internal |
| 8692 | 8697 |
| 8693 #endif // V8_OBJECTS_H_ | 8698 #endif // V8_OBJECTS_H_ |
| OLD | NEW |