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 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 V(CONS_INTERNALIZED_STRING_TYPE) \ | 352 V(CONS_INTERNALIZED_STRING_TYPE) \ |
353 V(CONS_ASCII_INTERNALIZED_STRING_TYPE) \ | 353 V(CONS_ASCII_INTERNALIZED_STRING_TYPE) \ |
354 V(EXTERNAL_INTERNALIZED_STRING_TYPE) \ | 354 V(EXTERNAL_INTERNALIZED_STRING_TYPE) \ |
355 V(EXTERNAL_ASCII_INTERNALIZED_STRING_TYPE) \ | 355 V(EXTERNAL_ASCII_INTERNALIZED_STRING_TYPE) \ |
356 V(EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \ | 356 V(EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \ |
357 V(SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE) \ | 357 V(SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE) \ |
358 V(SHORT_EXTERNAL_ASCII_INTERNALIZED_STRING_TYPE) \ | 358 V(SHORT_EXTERNAL_ASCII_INTERNALIZED_STRING_TYPE) \ |
359 V(SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \ | 359 V(SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE) \ |
360 \ | 360 \ |
361 V(SYMBOL_TYPE) \ | 361 V(SYMBOL_TYPE) \ |
| 362 \ |
362 V(MAP_TYPE) \ | 363 V(MAP_TYPE) \ |
363 V(CODE_TYPE) \ | 364 V(CODE_TYPE) \ |
364 V(ODDBALL_TYPE) \ | 365 V(ODDBALL_TYPE) \ |
365 V(CELL_TYPE) \ | 366 V(CELL_TYPE) \ |
366 V(PROPERTY_CELL_TYPE) \ | 367 V(PROPERTY_CELL_TYPE) \ |
367 \ | 368 \ |
368 V(HEAP_NUMBER_TYPE) \ | 369 V(HEAP_NUMBER_TYPE) \ |
369 V(FOREIGN_TYPE) \ | 370 V(FOREIGN_TYPE) \ |
370 V(BYTE_ARRAY_TYPE) \ | 371 V(BYTE_ARRAY_TYPE) \ |
371 V(FREE_SPACE_TYPE) \ | 372 V(FREE_SPACE_TYPE) \ |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
684 | kNotInternalizedTag, | 685 | kNotInternalizedTag, |
685 SHORT_EXTERNAL_STRING_TYPE = | 686 SHORT_EXTERNAL_STRING_TYPE = |
686 SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE | kNotInternalizedTag, | 687 SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE | kNotInternalizedTag, |
687 SHORT_EXTERNAL_ASCII_STRING_TYPE = | 688 SHORT_EXTERNAL_ASCII_STRING_TYPE = |
688 SHORT_EXTERNAL_ASCII_INTERNALIZED_STRING_TYPE | kNotInternalizedTag, | 689 SHORT_EXTERNAL_ASCII_INTERNALIZED_STRING_TYPE | kNotInternalizedTag, |
689 SHORT_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE = | 690 SHORT_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE = |
690 SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE | 691 SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE |
691 | kNotInternalizedTag, | 692 | kNotInternalizedTag, |
692 | 693 |
693 // Non-string names | 694 // Non-string names |
694 SYMBOL_TYPE = kNotStringTag, // LAST_NAME_TYPE, FIRST_NONSTRING_TYPE | 695 SYMBOL_TYPE = kNotStringTag, // FIRST_NONSTRING_TYPE, LAST_NAME_TYPE |
695 | 696 |
696 // Objects allocated in their own spaces (never in new space). | 697 // Objects allocated in their own spaces (never in new space). |
697 MAP_TYPE, | 698 MAP_TYPE, |
698 CODE_TYPE, | 699 CODE_TYPE, |
699 ODDBALL_TYPE, | 700 ODDBALL_TYPE, |
700 CELL_TYPE, | 701 CELL_TYPE, |
701 PROPERTY_CELL_TYPE, | 702 PROPERTY_CELL_TYPE, |
702 | 703 |
703 // "Data", objects that cannot contain non-map-word pointers to heap | 704 // "Data", objects that cannot contain non-map-word pointers to heap |
704 // objects. | 705 // objects. |
(...skipping 7624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8329 DISALLOW_IMPLICIT_CONSTRUCTORS(Name); | 8330 DISALLOW_IMPLICIT_CONSTRUCTORS(Name); |
8330 }; | 8331 }; |
8331 | 8332 |
8332 | 8333 |
8333 // ES6 symbols. | 8334 // ES6 symbols. |
8334 class Symbol: public Name { | 8335 class Symbol: public Name { |
8335 public: | 8336 public: |
8336 // [name]: the print name of a symbol, or undefined if none. | 8337 // [name]: the print name of a symbol, or undefined if none. |
8337 DECL_ACCESSORS(name, Object) | 8338 DECL_ACCESSORS(name, Object) |
8338 | 8339 |
| 8340 DECL_ACCESSORS(flags, Smi) |
| 8341 |
| 8342 // [is_private]: whether this is a private symbol. |
| 8343 DECL_BOOLEAN_ACCESSORS(is_private) |
| 8344 |
8339 // Casting. | 8345 // Casting. |
8340 static inline Symbol* cast(Object* obj); | 8346 static inline Symbol* cast(Object* obj); |
8341 | 8347 |
8342 // Dispatched behavior. | 8348 // Dispatched behavior. |
8343 DECLARE_PRINTER(Symbol) | 8349 DECLARE_PRINTER(Symbol) |
8344 DECLARE_VERIFIER(Symbol) | 8350 DECLARE_VERIFIER(Symbol) |
8345 | 8351 |
8346 // Layout description. | 8352 // Layout description. |
8347 static const int kNameOffset = Name::kSize; | 8353 static const int kNameOffset = Name::kSize; |
8348 static const int kSize = kNameOffset + kPointerSize; | 8354 static const int kFlagsOffset = kNameOffset + kPointerSize; |
| 8355 static const int kSize = kFlagsOffset + kPointerSize; |
8349 | 8356 |
8350 typedef FixedBodyDescriptor<kNameOffset, kNameOffset + kPointerSize, kSize> | 8357 typedef FixedBodyDescriptor<kNameOffset, kFlagsOffset, kSize> BodyDescriptor; |
8351 BodyDescriptor; | |
8352 | 8358 |
8353 private: | 8359 private: |
| 8360 static const int kPrivateBit = 0; |
| 8361 |
8354 DISALLOW_IMPLICIT_CONSTRUCTORS(Symbol); | 8362 DISALLOW_IMPLICIT_CONSTRUCTORS(Symbol); |
8355 }; | 8363 }; |
8356 | 8364 |
8357 | 8365 |
8358 class ConsString; | 8366 class ConsString; |
8359 | 8367 |
8360 // The String abstract class captures JavaScript string values: | 8368 // The String abstract class captures JavaScript string values: |
8361 // | 8369 // |
8362 // Ecma-262: | 8370 // Ecma-262: |
8363 // 4.3.16 String Value | 8371 // 4.3.16 String Value |
(...skipping 2073 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10437 } else { | 10445 } else { |
10438 value &= ~(1 << bit_position); | 10446 value &= ~(1 << bit_position); |
10439 } | 10447 } |
10440 return value; | 10448 return value; |
10441 } | 10449 } |
10442 }; | 10450 }; |
10443 | 10451 |
10444 } } // namespace v8::internal | 10452 } } // namespace v8::internal |
10445 | 10453 |
10446 #endif // V8_OBJECTS_H_ | 10454 #endif // V8_OBJECTS_H_ |
OLD | NEW |