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 1452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1463 | 1463 |
1464 // Returns the constructor name (the name (possibly, inferred name) of the | 1464 // Returns the constructor name (the name (possibly, inferred name) of the |
1465 // function that was used to instantiate the object). | 1465 // function that was used to instantiate the object). |
1466 String* constructor_name(); | 1466 String* constructor_name(); |
1467 | 1467 |
1468 inline PropertyAttributes GetPropertyAttribute(String* name); | 1468 inline PropertyAttributes GetPropertyAttribute(String* name); |
1469 PropertyAttributes GetPropertyAttributeWithReceiver(JSReceiver* receiver, | 1469 PropertyAttributes GetPropertyAttributeWithReceiver(JSReceiver* receiver, |
1470 String* name); | 1470 String* name); |
1471 PropertyAttributes GetLocalPropertyAttribute(String* name); | 1471 PropertyAttributes GetLocalPropertyAttribute(String* name); |
1472 | 1472 |
| 1473 inline PropertyAttributes GetElementAttribute(uint32_t index); |
| 1474 inline PropertyAttributes GetElementAttributeWithReceiver( |
| 1475 JSReceiver* receiver, |
| 1476 uint32_t index, |
| 1477 bool continue_search); |
| 1478 inline PropertyAttributes GetLocalElementAttribute(uint32_t index); |
| 1479 |
1473 // Can cause a GC. | 1480 // Can cause a GC. |
1474 inline bool HasProperty(String* name); | 1481 inline bool HasProperty(String* name); |
1475 inline bool HasLocalProperty(String* name); | 1482 inline bool HasLocalProperty(String* name); |
1476 inline bool HasElement(uint32_t index); | 1483 inline bool HasElement(uint32_t index); |
| 1484 inline bool HasLocalElement(uint32_t index); |
1477 | 1485 |
1478 // Return the object's prototype (might be Heap::null_value()). | 1486 // Return the object's prototype (might be Heap::null_value()). |
1479 inline Object* GetPrototype(); | 1487 inline Object* GetPrototype(); |
1480 | 1488 |
1481 // Return the constructor function (may be Heap::null_value()). | 1489 // Return the constructor function (may be Heap::null_value()). |
1482 inline Object* GetConstructor(); | 1490 inline Object* GetConstructor(); |
1483 | 1491 |
1484 // Set the object's prototype (only JSReceiver and null are allowed). | 1492 // Set the object's prototype (only JSReceiver and null are allowed). |
1485 MUST_USE_RESULT MaybeObject* SetPrototype(Object* value, | 1493 MUST_USE_RESULT MaybeObject* SetPrototype(Object* value, |
1486 bool skip_hidden_prototypes); | 1494 bool skip_hidden_prototypes); |
1487 | 1495 |
1488 // Retrieves a permanent object identity hash code. The undefined value might | 1496 // Retrieves a permanent object identity hash code. The undefined value might |
1489 // be returned in case no hash was created yet and OMIT_CREATION was used. | 1497 // be returned in case no hash was created yet and OMIT_CREATION was used. |
1490 inline MUST_USE_RESULT MaybeObject* GetIdentityHash(CreationFlag flag); | 1498 inline MUST_USE_RESULT MaybeObject* GetIdentityHash(CreationFlag flag); |
1491 | 1499 |
1492 // Lookup a property. If found, the result is valid and has | 1500 // Lookup a property. If found, the result is valid and has |
1493 // detailed information. | 1501 // detailed information. |
1494 void LocalLookup(String* name, LookupResult* result); | 1502 void LocalLookup(String* name, LookupResult* result); |
1495 void Lookup(String* name, LookupResult* result); | 1503 void Lookup(String* name, LookupResult* result); |
1496 | 1504 |
1497 protected: | 1505 protected: |
1498 Smi* GenerateIdentityHash(); | 1506 Smi* GenerateIdentityHash(); |
1499 | 1507 |
1500 private: | 1508 private: |
1501 PropertyAttributes GetPropertyAttribute(JSReceiver* receiver, | 1509 PropertyAttributes GetPropertyAttributeForResult(JSReceiver* receiver, |
1502 LookupResult* result, | 1510 LookupResult* result, |
1503 String* name, | 1511 String* name, |
1504 bool continue_search); | 1512 bool continue_search); |
1505 | 1513 |
1506 DISALLOW_IMPLICIT_CONSTRUCTORS(JSReceiver); | 1514 DISALLOW_IMPLICIT_CONSTRUCTORS(JSReceiver); |
1507 }; | 1515 }; |
1508 | 1516 |
1509 // The JSObject describes real heap allocated JavaScript objects with | 1517 // The JSObject describes real heap allocated JavaScript objects with |
1510 // properties. | 1518 // properties. |
1511 // Note that the map of JSObject changes during execution to enable inline | 1519 // Note that the map of JSObject changes during execution to enable inline |
1512 // caching. | 1520 // caching. |
1513 class JSObject: public JSReceiver { | 1521 class JSObject: public JSReceiver { |
1514 public: | 1522 public: |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1681 String* name, | 1689 String* name, |
1682 bool continue_search); | 1690 bool continue_search); |
1683 PropertyAttributes GetPropertyAttributeWithInterceptor(JSObject* receiver, | 1691 PropertyAttributes GetPropertyAttributeWithInterceptor(JSObject* receiver, |
1684 String* name, | 1692 String* name, |
1685 bool continue_search); | 1693 bool continue_search); |
1686 PropertyAttributes GetPropertyAttributeWithFailedAccessCheck( | 1694 PropertyAttributes GetPropertyAttributeWithFailedAccessCheck( |
1687 Object* receiver, | 1695 Object* receiver, |
1688 LookupResult* result, | 1696 LookupResult* result, |
1689 String* name, | 1697 String* name, |
1690 bool continue_search); | 1698 bool continue_search); |
| 1699 PropertyAttributes GetElementAttributeWithReceiver(JSReceiver* receiver, |
| 1700 uint32_t index, |
| 1701 bool continue_search); |
1691 | 1702 |
1692 static void DefineAccessor(Handle<JSObject> object, | 1703 static void DefineAccessor(Handle<JSObject> object, |
1693 Handle<String> name, | 1704 Handle<String> name, |
1694 Handle<Object> getter, | 1705 Handle<Object> getter, |
1695 Handle<Object> setter, | 1706 Handle<Object> setter, |
1696 PropertyAttributes attributes); | 1707 PropertyAttributes attributes); |
1697 // Can cause GC. | 1708 // Can cause GC. |
1698 MUST_USE_RESULT MaybeObject* DefineAccessor(String* name, | 1709 MUST_USE_RESULT MaybeObject* DefineAccessor(String* name, |
1699 Object* getter, | 1710 Object* getter, |
1700 Object* setter, | 1711 Object* setter, |
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2189 static inline int SizeOf(Map* map, HeapObject* object); | 2200 static inline int SizeOf(Map* map, HeapObject* object); |
2190 }; | 2201 }; |
2191 | 2202 |
2192 private: | 2203 private: |
2193 friend class DictionaryElementsAccessor; | 2204 friend class DictionaryElementsAccessor; |
2194 | 2205 |
2195 MUST_USE_RESULT MaybeObject* GetElementWithCallback(Object* receiver, | 2206 MUST_USE_RESULT MaybeObject* GetElementWithCallback(Object* receiver, |
2196 Object* structure, | 2207 Object* structure, |
2197 uint32_t index, | 2208 uint32_t index, |
2198 Object* holder); | 2209 Object* holder); |
| 2210 MUST_USE_RESULT PropertyAttributes GetElementAttributeWithInterceptor( |
| 2211 JSReceiver* receiver, |
| 2212 uint32_t index, |
| 2213 bool continue_search); |
| 2214 MUST_USE_RESULT PropertyAttributes GetElementAttributeWithoutInterceptor( |
| 2215 JSReceiver* receiver, |
| 2216 uint32_t index, |
| 2217 bool continue_search); |
2199 MUST_USE_RESULT MaybeObject* SetElementWithCallback( | 2218 MUST_USE_RESULT MaybeObject* SetElementWithCallback( |
2200 Object* structure, | 2219 Object* structure, |
2201 uint32_t index, | 2220 uint32_t index, |
2202 Object* value, | 2221 Object* value, |
2203 JSObject* holder, | 2222 JSObject* holder, |
2204 StrictModeFlag strict_mode); | 2223 StrictModeFlag strict_mode); |
2205 MUST_USE_RESULT MaybeObject* SetElementWithInterceptor( | 2224 MUST_USE_RESULT MaybeObject* SetElementWithInterceptor( |
2206 uint32_t index, | 2225 uint32_t index, |
2207 Object* value, | 2226 Object* value, |
2208 PropertyAttributes attributes, | 2227 PropertyAttributes attributes, |
(...skipping 6766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8975 } else { | 8994 } else { |
8976 value &= ~(1 << bit_position); | 8995 value &= ~(1 << bit_position); |
8977 } | 8996 } |
8978 return value; | 8997 return value; |
8979 } | 8998 } |
8980 }; | 8999 }; |
8981 | 9000 |
8982 } } // namespace v8::internal | 9001 } } // namespace v8::internal |
8983 | 9002 |
8984 #endif // V8_OBJECTS_H_ | 9003 #endif // V8_OBJECTS_H_ |
OLD | NEW |