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 1379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1390 StrictModeFlag strict_mode); | 1390 StrictModeFlag strict_mode); |
1391 MUST_USE_RESULT MaybeObject* SetProperty(LookupResult* result, | 1391 MUST_USE_RESULT MaybeObject* SetProperty(LookupResult* result, |
1392 String* key, | 1392 String* key, |
1393 Object* value, | 1393 Object* value, |
1394 PropertyAttributes attributes, | 1394 PropertyAttributes attributes, |
1395 StrictModeFlag strict_mode); | 1395 StrictModeFlag strict_mode); |
1396 MUST_USE_RESULT MaybeObject* SetPropertyWithDefinedSetter(JSFunction* setter, | 1396 MUST_USE_RESULT MaybeObject* SetPropertyWithDefinedSetter(JSFunction* setter, |
1397 Object* value); | 1397 Object* value); |
1398 | 1398 |
1399 MUST_USE_RESULT MaybeObject* DeleteProperty(String* name, DeleteMode mode); | 1399 MUST_USE_RESULT MaybeObject* DeleteProperty(String* name, DeleteMode mode); |
1400 MUST_USE_RESULT MaybeObject* DeleteElement(uint32_t index, DeleteMode mode); | |
1401 | |
1402 // Set the index'th array element. | |
1403 // Can cause GC, or return failure if GC is required. | |
1404 MUST_USE_RESULT MaybeObject* SetElement(uint32_t index, | |
1405 Object* value, | |
1406 StrictModeFlag strict_mode, | |
1407 bool check_prototype); | |
1400 | 1408 |
1401 // Returns the class name ([[Class]] property in the specification). | 1409 // Returns the class name ([[Class]] property in the specification). |
1402 String* class_name(); | 1410 String* class_name(); |
1403 | 1411 |
1404 // Returns the constructor name (the name (possibly, inferred name) of the | 1412 // Returns the constructor name (the name (possibly, inferred name) of the |
1405 // function that was used to instantiate the object). | 1413 // function that was used to instantiate the object). |
1406 String* constructor_name(); | 1414 String* constructor_name(); |
1407 | 1415 |
1408 inline PropertyAttributes GetPropertyAttribute(String* name); | 1416 inline PropertyAttributes GetPropertyAttribute(String* name); |
1409 PropertyAttributes GetPropertyAttributeWithReceiver(JSReceiver* receiver, | 1417 PropertyAttributes GetPropertyAttributeWithReceiver(JSReceiver* receiver, |
1410 String* name); | 1418 String* name); |
1411 PropertyAttributes GetLocalPropertyAttribute(String* name); | 1419 PropertyAttributes GetLocalPropertyAttribute(String* name); |
1412 | 1420 |
1413 // Can cause a GC. | 1421 // Can cause a GC. |
1414 inline bool HasProperty(String* name); | 1422 inline bool HasProperty(String* name); |
1415 inline bool HasLocalProperty(String* name); | 1423 inline bool HasLocalProperty(String* name); |
1424 inline bool HasElement(uint32_t index); | |
1416 | 1425 |
1417 // Return the object's prototype (might be Heap::null_value()). | 1426 // Return the object's prototype (might be Heap::null_value()). |
1418 inline Object* GetPrototype(); | 1427 inline Object* GetPrototype(); |
1419 | 1428 |
1420 // Set the object's prototype (only JSReceiver and null are allowed). | 1429 // Set the object's prototype (only JSReceiver and null are allowed). |
1421 MUST_USE_RESULT MaybeObject* SetPrototype(Object* value, | 1430 MUST_USE_RESULT MaybeObject* SetPrototype(Object* value, |
1422 bool skip_hidden_prototypes); | 1431 bool skip_hidden_prototypes); |
1423 | 1432 |
1424 // Lookup a property. If found, the result is valid and has | 1433 // Lookup a property. If found, the result is valid and has |
1425 // detailed information. | 1434 // detailed information. |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1686 // Returns true if the backing storage for the slow-case elements of | 1695 // Returns true if the backing storage for the slow-case elements of |
1687 // this object takes up nearly as much space as a fast-case backing | 1696 // this object takes up nearly as much space as a fast-case backing |
1688 // storage would. In that case the JSObject should have fast | 1697 // storage would. In that case the JSObject should have fast |
1689 // elements. | 1698 // elements. |
1690 bool ShouldConvertToFastElements(); | 1699 bool ShouldConvertToFastElements(); |
1691 // Returns true if the elements of JSObject contains only values that can be | 1700 // Returns true if the elements of JSObject contains only values that can be |
1692 // represented in a FixedDoubleArray. | 1701 // represented in a FixedDoubleArray. |
1693 bool CanConvertToFastDoubleElements(); | 1702 bool CanConvertToFastDoubleElements(); |
1694 | 1703 |
1695 // Tells whether the index'th element is present. | 1704 // Tells whether the index'th element is present. |
1696 inline bool HasElement(uint32_t index); | |
1697 bool HasElementWithReceiver(JSReceiver* receiver, uint32_t index); | 1705 bool HasElementWithReceiver(JSReceiver* receiver, uint32_t index); |
1698 | 1706 |
1699 // Computes the new capacity when expanding the elements of a JSObject. | 1707 // Computes the new capacity when expanding the elements of a JSObject. |
1700 static int NewElementsCapacity(int old_capacity) { | 1708 static int NewElementsCapacity(int old_capacity) { |
1701 // (old_capacity + 50%) + 16 | 1709 // (old_capacity + 50%) + 16 |
1702 return old_capacity + (old_capacity >> 1) + 16; | 1710 return old_capacity + (old_capacity >> 1) + 16; |
1703 } | 1711 } |
1704 | 1712 |
1705 // Tells whether the index'th element is present and how it is stored. | 1713 // Tells whether the index'th element is present and how it is stored. |
1706 enum LocalElementType { | 1714 enum LocalElementType { |
(...skipping 4880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6587 // The JSProxy describes EcmaScript Harmony proxies | 6595 // The JSProxy describes EcmaScript Harmony proxies |
6588 class JSProxy: public JSReceiver { | 6596 class JSProxy: public JSReceiver { |
6589 public: | 6597 public: |
6590 // [handler]: The handler property. | 6598 // [handler]: The handler property. |
6591 DECL_ACCESSORS(handler, Object) | 6599 DECL_ACCESSORS(handler, Object) |
6592 | 6600 |
6593 // Casting. | 6601 // Casting. |
6594 static inline JSProxy* cast(Object* obj); | 6602 static inline JSProxy* cast(Object* obj); |
6595 | 6603 |
6596 bool HasPropertyWithHandler(String* name); | 6604 bool HasPropertyWithHandler(String* name); |
6605 bool HasElementWithHandler(uint32_t index); | |
6597 | 6606 |
6598 MUST_USE_RESULT MaybeObject* GetPropertyWithHandler( | 6607 MUST_USE_RESULT MaybeObject* GetPropertyWithHandler( |
6599 Object* receiver, | 6608 Object* receiver, |
6600 String* name); | 6609 String* name); |
6601 MUST_USE_RESULT MaybeObject* GetElementWithHandler( | 6610 MUST_USE_RESULT MaybeObject* GetElementWithHandler( |
6602 Object* receiver, | 6611 Object* receiver, |
6603 uint32_t index); | 6612 uint32_t index); |
6604 | 6613 |
6605 MUST_USE_RESULT MaybeObject* SetPropertyWithHandler( | 6614 MUST_USE_RESULT MaybeObject* SetPropertyWithHandler( |
6606 String* name, | 6615 String* name, |
6607 Object* value, | 6616 Object* value, |
6608 PropertyAttributes attributes, | 6617 PropertyAttributes attributes, |
6609 StrictModeFlag strict_mode); | 6618 StrictModeFlag strict_mode); |
6619 MUST_USE_RESULT MaybeObject* SetElementWithHandler( | |
6620 uint32_t index, | |
6621 Object* value, | |
6622 StrictModeFlag strict_mode); | |
6623 | |
6624 MUST_USE_RESULT MaybeObject* SetPropertyWithHandlerDefiningSetter( | |
Rico
2011/09/12 11:21:18
I am not to happy with this name since we don't kn
rossberg
2011/09/13 16:10:25
Done. Also changed the name to SetPropertyWithHand
| |
6625 String* name, | |
6626 Object* value, | |
6627 PropertyAttributes attributes, | |
6628 StrictModeFlag strict_mode, | |
6629 bool* found); | |
6610 | 6630 |
6611 MUST_USE_RESULT MaybeObject* DeletePropertyWithHandler( | 6631 MUST_USE_RESULT MaybeObject* DeletePropertyWithHandler( |
6612 String* name, | 6632 String* name, |
6613 DeleteMode mode); | 6633 DeleteMode mode); |
6634 MUST_USE_RESULT MaybeObject* DeleteElementWithHandler( | |
6635 uint32_t index, | |
6636 DeleteMode mode); | |
6614 | 6637 |
6615 MUST_USE_RESULT PropertyAttributes GetPropertyAttributeWithHandler( | 6638 MUST_USE_RESULT PropertyAttributes GetPropertyAttributeWithHandler( |
6616 JSReceiver* receiver, | 6639 JSReceiver* receiver, |
6617 String* name); | 6640 String* name); |
6641 MUST_USE_RESULT PropertyAttributes GetElementAttributeWithHandler( | |
6642 JSReceiver* receiver, | |
6643 uint32_t index); | |
6618 | 6644 |
6619 // Turn this into an (empty) JSObject. | 6645 // Turn this into an (empty) JSObject. |
6620 void Fix(); | 6646 void Fix(); |
6621 | 6647 |
6622 // Initializes the body after the handler slot. | 6648 // Initializes the body after the handler slot. |
6623 inline void InitializeBody(int object_size, Object* value); | 6649 inline void InitializeBody(int object_size, Object* value); |
6624 | 6650 |
6625 // Invoke a trap by name. If the trap does not exist on this's handler, | 6651 // Invoke a trap by name. If the trap does not exist on this's handler, |
6626 // but derived_trap is non-NULL, invoke that instead. May cause GC. | 6652 // but derived_trap is non-NULL, invoke that instead. May cause GC. |
6627 Handle<Object> CallTrap(const char* name, | 6653 Handle<Object> CallTrap(const char* name, |
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7370 } else { | 7396 } else { |
7371 value &= ~(1 << bit_position); | 7397 value &= ~(1 << bit_position); |
7372 } | 7398 } |
7373 return value; | 7399 return value; |
7374 } | 7400 } |
7375 }; | 7401 }; |
7376 | 7402 |
7377 } } // namespace v8::internal | 7403 } } // namespace v8::internal |
7378 | 7404 |
7379 #endif // V8_OBJECTS_H_ | 7405 #endif // V8_OBJECTS_H_ |
OLD | NEW |