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 2319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2330 // Computes the new capacity when expanding the elements of a JSObject. | 2330 // Computes the new capacity when expanding the elements of a JSObject. |
| 2331 static int NewElementsCapacity(int old_capacity) { | 2331 static int NewElementsCapacity(int old_capacity) { |
| 2332 // (old_capacity + 50%) + 16 | 2332 // (old_capacity + 50%) + 16 |
| 2333 return old_capacity + (old_capacity >> 1) + 16; | 2333 return old_capacity + (old_capacity >> 1) + 16; |
| 2334 } | 2334 } |
| 2335 | 2335 |
| 2336 // These methods do not perform access checks! | 2336 // These methods do not perform access checks! |
| 2337 AccessorPair* GetLocalPropertyAccessorPair(Name* name); | 2337 AccessorPair* GetLocalPropertyAccessorPair(Name* name); |
| 2338 AccessorPair* GetLocalElementAccessorPair(uint32_t index); | 2338 AccessorPair* GetLocalElementAccessorPair(uint32_t index); |
| 2339 | 2339 |
| 2340 MUST_USE_RESULT MaybeObject* SetFastElement(uint32_t index, | 2340 static Handle<Object> SetFastElement(Handle<JSObject> object, uint32_t index, |
| 2341 Object* value, | 2341 Handle<Object> value, |
| 2342 StrictModeFlag strict_mode, | 2342 StrictModeFlag strict_mode, |
| 2343 bool check_prototype); | 2343 bool check_prototype); |
| 2344 | 2344 |
| 2345 MUST_USE_RESULT MaybeObject* SetDictionaryElement( | 2345 static Handle<Object> SetDictionaryElement( |
|
Michael Starzinger
2013/11/13 12:24:45
It looks like this method is only used from within
rafaelw
2013/11/13 20:56:47
Done.
| |
| 2346 Handle<JSObject> object, | |
| 2346 uint32_t index, | 2347 uint32_t index, |
| 2347 Object* value, | 2348 Handle<Object> value, |
| 2348 PropertyAttributes attributes, | 2349 PropertyAttributes attributes, |
| 2349 StrictModeFlag strict_mode, | 2350 StrictModeFlag strict_mode, |
| 2350 bool check_prototype, | 2351 bool check_prototype, |
| 2351 SetPropertyMode set_mode = SET_PROPERTY); | 2352 SetPropertyMode set_mode = SET_PROPERTY); |
| 2352 | 2353 |
| 2353 MUST_USE_RESULT MaybeObject* SetFastDoubleElement( | 2354 static Handle<Object> SetFastDoubleElement( |
|
Michael Starzinger
2013/11/13 12:24:45
Likewise.
rafaelw
2013/11/13 20:56:47
Done.
| |
| 2355 Handle<JSObject> object, | |
| 2354 uint32_t index, | 2356 uint32_t index, |
| 2355 Object* value, | 2357 Handle<Object> value, |
| 2356 StrictModeFlag strict_mode, | 2358 StrictModeFlag strict_mode, |
| 2357 bool check_prototype = true); | 2359 bool check_prototype = true); |
| 2358 | 2360 |
| 2359 static Handle<Object> SetOwnElement(Handle<JSObject> object, | 2361 static Handle<Object> SetOwnElement(Handle<JSObject> object, |
| 2360 uint32_t index, | 2362 uint32_t index, |
| 2361 Handle<Object> value, | 2363 Handle<Object> value, |
| 2362 StrictModeFlag strict_mode); | 2364 StrictModeFlag strict_mode); |
| 2363 | 2365 |
| 2364 // Empty handle is returned if the element cannot be set to the given value. | 2366 // Empty handle is returned if the element cannot be set to the given value. |
| 2365 static Handle<Object> SetElement( | 2367 static Handle<Object> SetElement( |
| 2366 Handle<JSObject> object, | 2368 Handle<JSObject> object, |
| 2367 uint32_t index, | 2369 uint32_t index, |
| 2368 Handle<Object> value, | 2370 Handle<Object> value, |
| 2369 PropertyAttributes attr, | |
| 2370 StrictModeFlag strict_mode, | |
| 2371 bool check_prototype = true, | |
| 2372 SetPropertyMode set_mode = SET_PROPERTY); | |
| 2373 | |
| 2374 // A Failure object is returned if GC is needed. | |
| 2375 MUST_USE_RESULT MaybeObject* SetElement( | |
| 2376 uint32_t index, | |
| 2377 Object* value, | |
| 2378 PropertyAttributes attributes, | 2371 PropertyAttributes attributes, |
| 2379 StrictModeFlag strict_mode, | 2372 StrictModeFlag strict_mode, |
| 2380 bool check_prototype = true, | 2373 bool check_prototype = true, |
| 2381 SetPropertyMode set_mode = SET_PROPERTY); | 2374 SetPropertyMode set_mode = SET_PROPERTY); |
| 2382 | 2375 |
| 2383 // Returns the index'th element. | 2376 // Returns the index'th element. |
| 2384 // The undefined object if index is out of bounds. | 2377 // The undefined object if index is out of bounds. |
| 2385 MUST_USE_RESULT MaybeObject* GetElementWithInterceptor(Object* receiver, | 2378 MUST_USE_RESULT MaybeObject* GetElementWithInterceptor(Object* receiver, |
| 2386 uint32_t index); | 2379 uint32_t index); |
| 2387 | 2380 |
| 2388 enum SetFastElementsCapacitySmiMode { | 2381 enum SetFastElementsCapacitySmiMode { |
| 2389 kAllowSmiElements, | 2382 kAllowSmiElements, |
| 2390 kForceSmiElements, | 2383 kForceSmiElements, |
| 2391 kDontAllowSmiElements | 2384 kDontAllowSmiElements |
| 2392 }; | 2385 }; |
| 2393 | 2386 |
| 2387 static Handle<FixedArray> SetFastElementsCapacityAndLength( | |
| 2388 Handle<JSObject> object, | |
| 2389 int capacity, | |
| 2390 int length, | |
| 2391 SetFastElementsCapacitySmiMode smi_mode); | |
| 2394 // Replace the elements' backing store with fast elements of the given | 2392 // Replace the elements' backing store with fast elements of the given |
| 2395 // capacity. Update the length for JSArrays. Returns the new backing | 2393 // capacity. Update the length for JSArrays. Returns the new backing |
| 2396 // store. | 2394 // store. |
| 2397 MUST_USE_RESULT MaybeObject* SetFastElementsCapacityAndLength( | 2395 MUST_USE_RESULT MaybeObject* SetFastElementsCapacityAndLength( |
| 2398 int capacity, | 2396 int capacity, |
| 2399 int length, | 2397 int length, |
| 2400 SetFastElementsCapacitySmiMode smi_mode); | 2398 SetFastElementsCapacitySmiMode smi_mode); |
| 2399 static void SetFastDoubleElementsCapacityAndLength( | |
| 2400 Handle<JSObject> object, | |
| 2401 int capacity, | |
| 2402 int length); | |
| 2401 MUST_USE_RESULT MaybeObject* SetFastDoubleElementsCapacityAndLength( | 2403 MUST_USE_RESULT MaybeObject* SetFastDoubleElementsCapacityAndLength( |
| 2402 int capacity, | 2404 int capacity, |
| 2403 int length); | 2405 int length); |
| 2404 | 2406 |
| 2405 // Lookup interceptors are used for handling properties controlled by host | 2407 // Lookup interceptors are used for handling properties controlled by host |
| 2406 // objects. | 2408 // objects. |
| 2407 inline bool HasNamedInterceptor(); | 2409 inline bool HasNamedInterceptor(); |
| 2408 inline bool HasIndexedInterceptor(); | 2410 inline bool HasIndexedInterceptor(); |
| 2409 | 2411 |
| 2410 // Support functions for v8 api (needed for correct interceptor behavior). | 2412 // Support functions for v8 api (needed for correct interceptor behavior). |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2460 inline MUST_USE_RESULT MaybeObject* GetElementsTransitionMap( | 2462 inline MUST_USE_RESULT MaybeObject* GetElementsTransitionMap( |
| 2461 Isolate* isolate, | 2463 Isolate* isolate, |
| 2462 ElementsKind elements_kind); | 2464 ElementsKind elements_kind); |
| 2463 MUST_USE_RESULT MaybeObject* GetElementsTransitionMapSlow( | 2465 MUST_USE_RESULT MaybeObject* GetElementsTransitionMapSlow( |
| 2464 ElementsKind elements_kind); | 2466 ElementsKind elements_kind); |
| 2465 | 2467 |
| 2466 static void TransitionElementsKind(Handle<JSObject> object, | 2468 static void TransitionElementsKind(Handle<JSObject> object, |
| 2467 ElementsKind to_kind); | 2469 ElementsKind to_kind); |
| 2468 | 2470 |
| 2469 MUST_USE_RESULT MaybeObject* TransitionElementsKind(ElementsKind to_kind); | 2471 MUST_USE_RESULT MaybeObject* TransitionElementsKind(ElementsKind to_kind); |
| 2472 static void UpdateAllocationSite(Handle<JSObject> object, | |
|
Michael Starzinger
2013/11/13 12:24:45
Likewise.
rafaelw
2013/11/13 20:56:47
Done.
| |
| 2473 ElementsKind to_kind); | |
| 2470 MUST_USE_RESULT MaybeObject* UpdateAllocationSite(ElementsKind to_kind); | 2474 MUST_USE_RESULT MaybeObject* UpdateAllocationSite(ElementsKind to_kind); |
| 2471 | 2475 |
| 2472 // TODO(mstarzinger): Both public because of ConvertAnsSetLocalProperty(). | 2476 // TODO(mstarzinger): Both public because of ConvertAnsSetLocalProperty(). |
| 2473 static void MigrateToMap(Handle<JSObject> object, Handle<Map> new_map); | 2477 static void MigrateToMap(Handle<JSObject> object, Handle<Map> new_map); |
| 2474 static void GeneralizeFieldRepresentation(Handle<JSObject> object, | 2478 static void GeneralizeFieldRepresentation(Handle<JSObject> object, |
| 2475 int modify_index, | 2479 int modify_index, |
| 2476 Representation new_representation, | 2480 Representation new_representation, |
| 2477 StoreMode store_mode); | 2481 StoreMode store_mode); |
| 2478 | 2482 |
| 2479 // Convert the object to use the canonical dictionary | 2483 // Convert the object to use the canonical dictionary |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2678 JSReceiver* receiver, | 2682 JSReceiver* receiver, |
| 2679 uint32_t index, | 2683 uint32_t index, |
| 2680 bool continue_search); | 2684 bool continue_search); |
| 2681 static Handle<Object> SetElementWithCallback( | 2685 static Handle<Object> SetElementWithCallback( |
| 2682 Handle<JSObject> object, | 2686 Handle<JSObject> object, |
| 2683 Handle<Object> structure, | 2687 Handle<Object> structure, |
| 2684 uint32_t index, | 2688 uint32_t index, |
| 2685 Handle<Object> value, | 2689 Handle<Object> value, |
| 2686 Handle<JSObject> holder, | 2690 Handle<JSObject> holder, |
| 2687 StrictModeFlag strict_mode); | 2691 StrictModeFlag strict_mode); |
| 2688 MUST_USE_RESULT MaybeObject* SetElementWithInterceptor( | 2692 static Handle<Object> SetElementWithInterceptor( |
| 2693 Handle<JSObject> object, | |
| 2689 uint32_t index, | 2694 uint32_t index, |
| 2690 Object* value, | 2695 Handle<Object> value, |
| 2691 PropertyAttributes attributes, | 2696 PropertyAttributes attributes, |
| 2692 StrictModeFlag strict_mode, | 2697 StrictModeFlag strict_mode, |
| 2693 bool check_prototype, | 2698 bool check_prototype, |
| 2694 SetPropertyMode set_mode); | 2699 SetPropertyMode set_mode); |
| 2695 MUST_USE_RESULT MaybeObject* SetElementWithoutInterceptor( | 2700 static Handle<Object> SetElementWithoutInterceptor( |
| 2701 Handle<JSObject> object, | |
| 2696 uint32_t index, | 2702 uint32_t index, |
| 2697 Object* value, | 2703 Handle<Object> value, |
| 2698 PropertyAttributes attributes, | 2704 PropertyAttributes attributes, |
| 2699 StrictModeFlag strict_mode, | 2705 StrictModeFlag strict_mode, |
| 2700 bool check_prototype, | 2706 bool check_prototype, |
| 2701 SetPropertyMode set_mode); | 2707 SetPropertyMode set_mode); |
| 2702 MUST_USE_RESULT MaybeObject* SetElementWithCallbackSetterInPrototypes( | 2708 static Handle<Object> SetElementWithCallbackSetterInPrototypes( |
| 2709 Handle<JSObject> object, | |
| 2703 uint32_t index, | 2710 uint32_t index, |
| 2704 Object* value, | 2711 Handle<Object> value, |
| 2705 bool* found, | 2712 bool* found, |
| 2706 StrictModeFlag strict_mode); | 2713 StrictModeFlag strict_mode); |
| 2707 | 2714 |
| 2708 // Searches the prototype chain for property 'name'. If it is found and | 2715 // Searches the prototype chain for property 'name'. If it is found and |
| 2709 // has a setter, invoke it and set '*done' to true. If it is found and is | 2716 // has a setter, invoke it and set '*done' to true. If it is found and is |
| 2710 // read-only, reject and set '*done' to true. Otherwise, set '*done' to | 2717 // read-only, reject and set '*done' to true. Otherwise, set '*done' to |
| 2711 // false. Can throw and return an empty handle with '*done==true'. | 2718 // false. Can throw and return an empty handle with '*done==true'. |
| 2712 static Handle<Object> SetPropertyViaPrototypes( | 2719 static Handle<Object> SetPropertyViaPrototypes( |
| 2713 Handle<JSObject> object, | 2720 Handle<JSObject> object, |
| 2714 Handle<Name> name, | 2721 Handle<Name> name, |
| (...skipping 1243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3958 class SeededNumberDictionary | 3965 class SeededNumberDictionary |
| 3959 : public Dictionary<SeededNumberDictionaryShape, uint32_t> { | 3966 : public Dictionary<SeededNumberDictionaryShape, uint32_t> { |
| 3960 public: | 3967 public: |
| 3961 static SeededNumberDictionary* cast(Object* obj) { | 3968 static SeededNumberDictionary* cast(Object* obj) { |
| 3962 ASSERT(obj->IsDictionary()); | 3969 ASSERT(obj->IsDictionary()); |
| 3963 return reinterpret_cast<SeededNumberDictionary*>(obj); | 3970 return reinterpret_cast<SeededNumberDictionary*>(obj); |
| 3964 } | 3971 } |
| 3965 | 3972 |
| 3966 // Type specific at put (default NONE attributes is used when adding). | 3973 // Type specific at put (default NONE attributes is used when adding). |
| 3967 MUST_USE_RESULT MaybeObject* AtNumberPut(uint32_t key, Object* value); | 3974 MUST_USE_RESULT MaybeObject* AtNumberPut(uint32_t key, Object* value); |
| 3975 MUST_USE_RESULT static Handle<SeededNumberDictionary> AddNumberEntry( | |
| 3976 Handle<SeededNumberDictionary> dictionary, | |
| 3977 uint32_t key, | |
| 3978 Handle<Object> value, | |
| 3979 PropertyDetails details); | |
|
Michael Starzinger
2013/11/13 12:24:45
nit: Indentation is off.
rafaelw
2013/11/13 20:56:47
Done.
| |
| 3968 MUST_USE_RESULT MaybeObject* AddNumberEntry(uint32_t key, | 3980 MUST_USE_RESULT MaybeObject* AddNumberEntry(uint32_t key, |
| 3969 Object* value, | 3981 Object* value, |
| 3970 PropertyDetails details); | 3982 PropertyDetails details); |
| 3971 | 3983 |
| 3972 // Set an existing entry or add a new one if needed. | 3984 // Set an existing entry or add a new one if needed. |
| 3973 // Return the updated dictionary. | 3985 // Return the updated dictionary. |
| 3974 MUST_USE_RESULT static Handle<SeededNumberDictionary> Set( | 3986 MUST_USE_RESULT static Handle<SeededNumberDictionary> Set( |
| 3975 Handle<SeededNumberDictionary> dictionary, | 3987 Handle<SeededNumberDictionary> dictionary, |
| 3976 uint32_t index, | 3988 uint32_t index, |
| 3977 Handle<Object> value, | 3989 Handle<Object> value, |
| (...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4582 }; | 4594 }; |
| 4583 | 4595 |
| 4584 | 4596 |
| 4585 class ExternalByteArray: public ExternalArray { | 4597 class ExternalByteArray: public ExternalArray { |
| 4586 public: | 4598 public: |
| 4587 // Setter and getter. | 4599 // Setter and getter. |
| 4588 inline int8_t get_scalar(int index); | 4600 inline int8_t get_scalar(int index); |
| 4589 MUST_USE_RESULT inline MaybeObject* get(int index); | 4601 MUST_USE_RESULT inline MaybeObject* get(int index); |
| 4590 inline void set(int index, int8_t value); | 4602 inline void set(int index, int8_t value); |
| 4591 | 4603 |
| 4604 static Handle<Object> SetValue(Handle<ExternalByteArray> array, | |
| 4605 uint32_t index, | |
| 4606 Handle<Object> value); | |
| 4607 | |
| 4592 // This accessor applies the correct conversion from Smi, HeapNumber | 4608 // This accessor applies the correct conversion from Smi, HeapNumber |
| 4593 // and undefined. | 4609 // and undefined. |
| 4594 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); | 4610 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); |
| 4595 | 4611 |
| 4596 // Casting. | 4612 // Casting. |
| 4597 static inline ExternalByteArray* cast(Object* obj); | 4613 static inline ExternalByteArray* cast(Object* obj); |
| 4598 | 4614 |
| 4599 // Dispatched behavior. | 4615 // Dispatched behavior. |
| 4600 DECLARE_PRINTER(ExternalByteArray) | 4616 DECLARE_PRINTER(ExternalByteArray) |
| 4601 DECLARE_VERIFIER(ExternalByteArray) | 4617 DECLARE_VERIFIER(ExternalByteArray) |
| 4602 | 4618 |
| 4603 private: | 4619 private: |
| 4604 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalByteArray); | 4620 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalByteArray); |
| 4605 }; | 4621 }; |
| 4606 | 4622 |
| 4607 | 4623 |
| 4608 class ExternalUnsignedByteArray: public ExternalArray { | 4624 class ExternalUnsignedByteArray: public ExternalArray { |
| 4609 public: | 4625 public: |
| 4610 // Setter and getter. | 4626 // Setter and getter. |
| 4611 inline uint8_t get_scalar(int index); | 4627 inline uint8_t get_scalar(int index); |
| 4612 MUST_USE_RESULT inline MaybeObject* get(int index); | 4628 MUST_USE_RESULT inline MaybeObject* get(int index); |
| 4613 inline void set(int index, uint8_t value); | 4629 inline void set(int index, uint8_t value); |
| 4614 | 4630 |
| 4631 static Handle<Object> SetValue(Handle<ExternalUnsignedByteArray> array, | |
| 4632 uint32_t index, | |
| 4633 Handle<Object> value); | |
| 4634 | |
| 4615 // This accessor applies the correct conversion from Smi, HeapNumber | 4635 // This accessor applies the correct conversion from Smi, HeapNumber |
| 4616 // and undefined. | 4636 // and undefined. |
| 4617 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); | 4637 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); |
| 4618 | 4638 |
| 4619 // Casting. | 4639 // Casting. |
| 4620 static inline ExternalUnsignedByteArray* cast(Object* obj); | 4640 static inline ExternalUnsignedByteArray* cast(Object* obj); |
| 4621 | 4641 |
| 4622 // Dispatched behavior. | 4642 // Dispatched behavior. |
| 4623 DECLARE_PRINTER(ExternalUnsignedByteArray) | 4643 DECLARE_PRINTER(ExternalUnsignedByteArray) |
| 4624 DECLARE_VERIFIER(ExternalUnsignedByteArray) | 4644 DECLARE_VERIFIER(ExternalUnsignedByteArray) |
| 4625 | 4645 |
| 4626 private: | 4646 private: |
| 4627 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedByteArray); | 4647 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedByteArray); |
| 4628 }; | 4648 }; |
| 4629 | 4649 |
| 4630 | 4650 |
| 4631 class ExternalShortArray: public ExternalArray { | 4651 class ExternalShortArray: public ExternalArray { |
| 4632 public: | 4652 public: |
| 4633 // Setter and getter. | 4653 // Setter and getter. |
| 4634 inline int16_t get_scalar(int index); | 4654 inline int16_t get_scalar(int index); |
| 4635 MUST_USE_RESULT inline MaybeObject* get(int index); | 4655 MUST_USE_RESULT inline MaybeObject* get(int index); |
| 4636 inline void set(int index, int16_t value); | 4656 inline void set(int index, int16_t value); |
| 4637 | 4657 |
| 4658 static Handle<Object> SetValue(Handle<ExternalShortArray> array, | |
| 4659 uint32_t index, | |
| 4660 Handle<Object> value); | |
| 4661 | |
| 4638 // This accessor applies the correct conversion from Smi, HeapNumber | 4662 // This accessor applies the correct conversion from Smi, HeapNumber |
| 4639 // and undefined. | 4663 // and undefined. |
| 4640 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); | 4664 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); |
| 4641 | 4665 |
| 4642 // Casting. | 4666 // Casting. |
| 4643 static inline ExternalShortArray* cast(Object* obj); | 4667 static inline ExternalShortArray* cast(Object* obj); |
| 4644 | 4668 |
| 4645 // Dispatched behavior. | 4669 // Dispatched behavior. |
| 4646 DECLARE_PRINTER(ExternalShortArray) | 4670 DECLARE_PRINTER(ExternalShortArray) |
| 4647 DECLARE_VERIFIER(ExternalShortArray) | 4671 DECLARE_VERIFIER(ExternalShortArray) |
| 4648 | 4672 |
| 4649 private: | 4673 private: |
| 4650 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalShortArray); | 4674 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalShortArray); |
| 4651 }; | 4675 }; |
| 4652 | 4676 |
| 4653 | 4677 |
| 4654 class ExternalUnsignedShortArray: public ExternalArray { | 4678 class ExternalUnsignedShortArray: public ExternalArray { |
| 4655 public: | 4679 public: |
| 4656 // Setter and getter. | 4680 // Setter and getter. |
| 4657 inline uint16_t get_scalar(int index); | 4681 inline uint16_t get_scalar(int index); |
| 4658 MUST_USE_RESULT inline MaybeObject* get(int index); | 4682 MUST_USE_RESULT inline MaybeObject* get(int index); |
| 4659 inline void set(int index, uint16_t value); | 4683 inline void set(int index, uint16_t value); |
| 4660 | 4684 |
| 4685 static Handle<Object> SetValue(Handle<ExternalUnsignedShortArray> array, | |
| 4686 uint32_t index, | |
| 4687 Handle<Object> value); | |
| 4688 | |
| 4661 // This accessor applies the correct conversion from Smi, HeapNumber | 4689 // This accessor applies the correct conversion from Smi, HeapNumber |
| 4662 // and undefined. | 4690 // and undefined. |
| 4663 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); | 4691 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); |
| 4664 | 4692 |
| 4665 // Casting. | 4693 // Casting. |
| 4666 static inline ExternalUnsignedShortArray* cast(Object* obj); | 4694 static inline ExternalUnsignedShortArray* cast(Object* obj); |
| 4667 | 4695 |
| 4668 // Dispatched behavior. | 4696 // Dispatched behavior. |
| 4669 DECLARE_PRINTER(ExternalUnsignedShortArray) | 4697 DECLARE_PRINTER(ExternalUnsignedShortArray) |
| 4670 DECLARE_VERIFIER(ExternalUnsignedShortArray) | 4698 DECLARE_VERIFIER(ExternalUnsignedShortArray) |
| 4671 | 4699 |
| 4672 private: | 4700 private: |
| 4673 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedShortArray); | 4701 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedShortArray); |
| 4674 }; | 4702 }; |
| 4675 | 4703 |
| 4676 | 4704 |
| 4677 class ExternalIntArray: public ExternalArray { | 4705 class ExternalIntArray: public ExternalArray { |
| 4678 public: | 4706 public: |
| 4679 // Setter and getter. | 4707 // Setter and getter. |
| 4680 inline int32_t get_scalar(int index); | 4708 inline int32_t get_scalar(int index); |
| 4681 MUST_USE_RESULT inline MaybeObject* get(int index); | 4709 MUST_USE_RESULT inline MaybeObject* get(int index); |
| 4682 inline void set(int index, int32_t value); | 4710 inline void set(int index, int32_t value); |
| 4683 | 4711 |
| 4712 static Handle<Object> SetValue(Handle<ExternalIntArray> array, | |
| 4713 uint32_t index, | |
| 4714 Handle<Object> value); | |
| 4715 | |
| 4684 // This accessor applies the correct conversion from Smi, HeapNumber | 4716 // This accessor applies the correct conversion from Smi, HeapNumber |
| 4685 // and undefined. | 4717 // and undefined. |
| 4686 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); | 4718 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); |
| 4687 | 4719 |
| 4688 // Casting. | 4720 // Casting. |
| 4689 static inline ExternalIntArray* cast(Object* obj); | 4721 static inline ExternalIntArray* cast(Object* obj); |
| 4690 | 4722 |
| 4691 // Dispatched behavior. | 4723 // Dispatched behavior. |
| 4692 DECLARE_PRINTER(ExternalIntArray) | 4724 DECLARE_PRINTER(ExternalIntArray) |
| 4693 DECLARE_VERIFIER(ExternalIntArray) | 4725 DECLARE_VERIFIER(ExternalIntArray) |
| 4694 | 4726 |
| 4695 private: | 4727 private: |
| 4696 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalIntArray); | 4728 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalIntArray); |
| 4697 }; | 4729 }; |
| 4698 | 4730 |
| 4699 | 4731 |
| 4700 class ExternalUnsignedIntArray: public ExternalArray { | 4732 class ExternalUnsignedIntArray: public ExternalArray { |
| 4701 public: | 4733 public: |
| 4702 // Setter and getter. | 4734 // Setter and getter. |
| 4703 inline uint32_t get_scalar(int index); | 4735 inline uint32_t get_scalar(int index); |
| 4704 MUST_USE_RESULT inline MaybeObject* get(int index); | 4736 MUST_USE_RESULT inline MaybeObject* get(int index); |
| 4705 inline void set(int index, uint32_t value); | 4737 inline void set(int index, uint32_t value); |
| 4706 | 4738 |
| 4739 static Handle<Object> SetValue(Handle<ExternalUnsignedIntArray> array, | |
| 4740 uint32_t index, | |
| 4741 Handle<Object> value); | |
| 4742 | |
| 4707 // This accessor applies the correct conversion from Smi, HeapNumber | 4743 // This accessor applies the correct conversion from Smi, HeapNumber |
| 4708 // and undefined. | 4744 // and undefined. |
| 4709 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); | 4745 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); |
| 4710 | 4746 |
| 4711 // Casting. | 4747 // Casting. |
| 4712 static inline ExternalUnsignedIntArray* cast(Object* obj); | 4748 static inline ExternalUnsignedIntArray* cast(Object* obj); |
| 4713 | 4749 |
| 4714 // Dispatched behavior. | 4750 // Dispatched behavior. |
| 4715 DECLARE_PRINTER(ExternalUnsignedIntArray) | 4751 DECLARE_PRINTER(ExternalUnsignedIntArray) |
| 4716 DECLARE_VERIFIER(ExternalUnsignedIntArray) | 4752 DECLARE_VERIFIER(ExternalUnsignedIntArray) |
| 4717 | 4753 |
| 4718 private: | 4754 private: |
| 4719 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedIntArray); | 4755 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedIntArray); |
| 4720 }; | 4756 }; |
| 4721 | 4757 |
| 4722 | 4758 |
| 4723 class ExternalFloatArray: public ExternalArray { | 4759 class ExternalFloatArray: public ExternalArray { |
| 4724 public: | 4760 public: |
| 4725 // Setter and getter. | 4761 // Setter and getter. |
| 4726 inline float get_scalar(int index); | 4762 inline float get_scalar(int index); |
| 4727 MUST_USE_RESULT inline MaybeObject* get(int index); | 4763 MUST_USE_RESULT inline MaybeObject* get(int index); |
| 4728 inline void set(int index, float value); | 4764 inline void set(int index, float value); |
| 4729 | 4765 |
| 4766 static Handle<Object> SetValue(Handle<ExternalFloatArray> array, | |
| 4767 uint32_t index, | |
| 4768 Handle<Object> value); | |
| 4769 | |
| 4730 // This accessor applies the correct conversion from Smi, HeapNumber | 4770 // This accessor applies the correct conversion from Smi, HeapNumber |
| 4731 // and undefined. | 4771 // and undefined. |
| 4732 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); | 4772 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); |
| 4733 | 4773 |
| 4734 // Casting. | 4774 // Casting. |
| 4735 static inline ExternalFloatArray* cast(Object* obj); | 4775 static inline ExternalFloatArray* cast(Object* obj); |
| 4736 | 4776 |
| 4737 // Dispatched behavior. | 4777 // Dispatched behavior. |
| 4738 DECLARE_PRINTER(ExternalFloatArray) | 4778 DECLARE_PRINTER(ExternalFloatArray) |
| 4739 DECLARE_VERIFIER(ExternalFloatArray) | 4779 DECLARE_VERIFIER(ExternalFloatArray) |
| 4740 | 4780 |
| 4741 private: | 4781 private: |
| 4742 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloatArray); | 4782 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloatArray); |
| 4743 }; | 4783 }; |
| 4744 | 4784 |
| 4745 | 4785 |
| 4746 class ExternalDoubleArray: public ExternalArray { | 4786 class ExternalDoubleArray: public ExternalArray { |
| 4747 public: | 4787 public: |
| 4748 // Setter and getter. | 4788 // Setter and getter. |
| 4749 inline double get_scalar(int index); | 4789 inline double get_scalar(int index); |
| 4750 MUST_USE_RESULT inline MaybeObject* get(int index); | 4790 MUST_USE_RESULT inline MaybeObject* get(int index); |
| 4751 inline void set(int index, double value); | 4791 inline void set(int index, double value); |
| 4752 | 4792 |
| 4793 static Handle<Object> SetValue(Handle<ExternalDoubleArray> array, | |
| 4794 uint32_t index, | |
| 4795 Handle<Object> value); | |
| 4796 | |
| 4753 // This accessor applies the correct conversion from Smi, HeapNumber | 4797 // This accessor applies the correct conversion from Smi, HeapNumber |
| 4754 // and undefined. | 4798 // and undefined. |
| 4755 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); | 4799 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); |
| 4756 | 4800 |
| 4757 // Casting. | 4801 // Casting. |
| 4758 static inline ExternalDoubleArray* cast(Object* obj); | 4802 static inline ExternalDoubleArray* cast(Object* obj); |
| 4759 | 4803 |
| 4760 // Dispatched behavior. | 4804 // Dispatched behavior. |
| 4761 DECLARE_PRINTER(ExternalDoubleArray) | 4805 DECLARE_PRINTER(ExternalDoubleArray) |
| 4762 DECLARE_VERIFIER(ExternalDoubleArray) | 4806 DECLARE_VERIFIER(ExternalDoubleArray) |
| (...skipping 4934 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 9697 // - slow, backing storage is a HashTable with numbers as keys. | 9741 // - slow, backing storage is a HashTable with numbers as keys. |
| 9698 class JSArray: public JSObject { | 9742 class JSArray: public JSObject { |
| 9699 public: | 9743 public: |
| 9700 // [length]: The length property. | 9744 // [length]: The length property. |
| 9701 DECL_ACCESSORS(length, Object) | 9745 DECL_ACCESSORS(length, Object) |
| 9702 | 9746 |
| 9703 // Overload the length setter to skip write barrier when the length | 9747 // Overload the length setter to skip write barrier when the length |
| 9704 // is set to a smi. This matches the set function on FixedArray. | 9748 // is set to a smi. This matches the set function on FixedArray. |
| 9705 inline void set_length(Smi* length); | 9749 inline void set_length(Smi* length); |
| 9706 | 9750 |
| 9751 static void JSArrayUpdateLengthFromIndex(Handle<JSArray> array, | |
| 9752 uint32_t index, | |
| 9753 Handle<Object> value); | |
| 9754 | |
| 9707 MUST_USE_RESULT MaybeObject* JSArrayUpdateLengthFromIndex(uint32_t index, | 9755 MUST_USE_RESULT MaybeObject* JSArrayUpdateLengthFromIndex(uint32_t index, |
| 9708 Object* value); | 9756 Object* value); |
| 9709 | 9757 |
| 9710 // Initialize the array with the given capacity. The function may | 9758 // Initialize the array with the given capacity. The function may |
| 9711 // fail due to out-of-memory situations, but only if the requested | 9759 // fail due to out-of-memory situations, but only if the requested |
| 9712 // capacity is non-zero. | 9760 // capacity is non-zero. |
| 9713 MUST_USE_RESULT MaybeObject* Initialize(int capacity, int length = 0); | 9761 MUST_USE_RESULT MaybeObject* Initialize(int capacity, int length = 0); |
| 9714 | 9762 |
| 9715 // Initializes the array to a certain length. | 9763 // Initializes the array to a certain length. |
| 9716 inline bool AllowsSetElementsLength(); | 9764 inline bool AllowsSetElementsLength(); |
| (...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 10476 } else { | 10524 } else { |
| 10477 value &= ~(1 << bit_position); | 10525 value &= ~(1 << bit_position); |
| 10478 } | 10526 } |
| 10479 return value; | 10527 return value; |
| 10480 } | 10528 } |
| 10481 }; | 10529 }; |
| 10482 | 10530 |
| 10483 } } // namespace v8::internal | 10531 } } // namespace v8::internal |
| 10484 | 10532 |
| 10485 #endif // V8_OBJECTS_H_ | 10533 #endif // V8_OBJECTS_H_ |
| OLD | NEW |