Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: src/objects.h

Issue 11567007: Cleanup object printer declaration. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comments by Sven Panne. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 749
750 // A template-ized version of the IsXXX functions. 750 // A template-ized version of the IsXXX functions.
751 template <class C> static inline bool Is(Object* obj); 751 template <class C> static inline bool Is(Object* obj);
752 752
753 #ifdef VERIFY_HEAP 753 #ifdef VERIFY_HEAP
754 #define DECLARE_VERIFIER(Name) void Name##Verify(); 754 #define DECLARE_VERIFIER(Name) void Name##Verify();
755 #else 755 #else
756 #define DECLARE_VERIFIER(Name) 756 #define DECLARE_VERIFIER(Name)
757 #endif 757 #endif
758 758
759 #ifdef OBJECT_PRINT
760 #define DECLARE_PRINTER(Name) void Name##Print(FILE* out = stdout);
761 #else
762 #define DECLARE_PRINTER(Name)
763 #endif
764
759 class MaybeObject BASE_EMBEDDED { 765 class MaybeObject BASE_EMBEDDED {
760 public: 766 public:
761 inline bool IsFailure(); 767 inline bool IsFailure();
762 inline bool IsRetryAfterGC(); 768 inline bool IsRetryAfterGC();
763 inline bool IsOutOfMemory(); 769 inline bool IsOutOfMemory();
764 inline bool IsException(); 770 inline bool IsException();
765 INLINE(bool IsTheHole()); 771 INLINE(bool IsTheHole());
766 inline bool ToObject(Object** obj) { 772 inline bool ToObject(Object** obj) {
767 if (IsFailure()) return false; 773 if (IsFailure()) return false;
768 *obj = reinterpret_cast<Object*>(this); 774 *obj = reinterpret_cast<Object*>(this);
(...skipping 1333 matching lines...) Expand 10 before | Expand all | Expand 10 after
2102 // Casting. 2108 // Casting.
2103 static inline JSObject* cast(Object* obj); 2109 static inline JSObject* cast(Object* obj);
2104 2110
2105 // Disalow further properties to be added to the object. 2111 // Disalow further properties to be added to the object.
2106 static Handle<Object> PreventExtensions(Handle<JSObject> object); 2112 static Handle<Object> PreventExtensions(Handle<JSObject> object);
2107 MUST_USE_RESULT MaybeObject* PreventExtensions(); 2113 MUST_USE_RESULT MaybeObject* PreventExtensions();
2108 2114
2109 2115
2110 // Dispatched behavior. 2116 // Dispatched behavior.
2111 void JSObjectShortPrint(StringStream* accumulator); 2117 void JSObjectShortPrint(StringStream* accumulator);
2112 #ifdef OBJECT_PRINT 2118 DECLARE_PRINTER(JSObject)
2113 inline void JSObjectPrint() {
2114 JSObjectPrint(stdout);
2115 }
2116 void JSObjectPrint(FILE* out);
2117 #endif
2118 DECLARE_VERIFIER(JSObject) 2119 DECLARE_VERIFIER(JSObject)
2119 #ifdef OBJECT_PRINT 2120 #ifdef OBJECT_PRINT
2120 inline void PrintProperties() { 2121 inline void PrintProperties() {
2121 PrintProperties(stdout); 2122 PrintProperties(stdout);
2122 } 2123 }
2123 void PrintProperties(FILE* out); 2124 void PrintProperties(FILE* out);
2124 2125
2125 inline void PrintElements() { 2126 inline void PrintElements() {
2126 PrintElements(stdout); 2127 PrintElements(stdout);
2127 } 2128 }
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
2401 static inline FixedArray* cast(Object* obj); 2402 static inline FixedArray* cast(Object* obj);
2402 2403
2403 // Maximal allowed size, in bytes, of a single FixedArray. 2404 // Maximal allowed size, in bytes, of a single FixedArray.
2404 // Prevents overflowing size computations, as well as extreme memory 2405 // Prevents overflowing size computations, as well as extreme memory
2405 // consumption. 2406 // consumption.
2406 static const int kMaxSize = 128 * MB * kPointerSize; 2407 static const int kMaxSize = 128 * MB * kPointerSize;
2407 // Maximally allowed length of a FixedArray. 2408 // Maximally allowed length of a FixedArray.
2408 static const int kMaxLength = (kMaxSize - kHeaderSize) / kPointerSize; 2409 static const int kMaxLength = (kMaxSize - kHeaderSize) / kPointerSize;
2409 2410
2410 // Dispatched behavior. 2411 // Dispatched behavior.
2411 #ifdef OBJECT_PRINT 2412 DECLARE_PRINTER(FixedArray)
2412 inline void FixedArrayPrint() {
2413 FixedArrayPrint(stdout);
2414 }
2415 void FixedArrayPrint(FILE* out);
2416 #endif
2417 DECLARE_VERIFIER(FixedArray) 2413 DECLARE_VERIFIER(FixedArray)
2418 #ifdef DEBUG 2414 #ifdef DEBUG
2419 // Checks if two FixedArrays have identical contents. 2415 // Checks if two FixedArrays have identical contents.
2420 bool IsEqualTo(FixedArray* other); 2416 bool IsEqualTo(FixedArray* other);
2421 #endif 2417 #endif
2422 2418
2423 // Swap two elements in a pair of arrays. If this array and the 2419 // Swap two elements in a pair of arrays. If this array and the
2424 // numbers array are the same object, the elements are only swapped 2420 // numbers array are the same object, the elements are only swapped
2425 // once. 2421 // once.
2426 void SwapPairs(FixedArray* numbers, int i, int j); 2422 void SwapPairs(FixedArray* numbers, int i, int j);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
2493 static inline FixedDoubleArray* cast(Object* obj); 2489 static inline FixedDoubleArray* cast(Object* obj);
2494 2490
2495 // Maximal allowed size, in bytes, of a single FixedDoubleArray. 2491 // Maximal allowed size, in bytes, of a single FixedDoubleArray.
2496 // Prevents overflowing size computations, as well as extreme memory 2492 // Prevents overflowing size computations, as well as extreme memory
2497 // consumption. 2493 // consumption.
2498 static const int kMaxSize = 512 * MB; 2494 static const int kMaxSize = 512 * MB;
2499 // Maximally allowed length of a FixedArray. 2495 // Maximally allowed length of a FixedArray.
2500 static const int kMaxLength = (kMaxSize - kHeaderSize) / kDoubleSize; 2496 static const int kMaxLength = (kMaxSize - kHeaderSize) / kDoubleSize;
2501 2497
2502 // Dispatched behavior. 2498 // Dispatched behavior.
2503 #ifdef OBJECT_PRINT 2499 DECLARE_PRINTER(FixedDoubleArray)
2504 inline void FixedDoubleArrayPrint() {
2505 FixedDoubleArrayPrint(stdout);
2506 }
2507 void FixedDoubleArrayPrint(FILE* out);
2508 #endif
2509 DECLARE_VERIFIER(FixedDoubleArray) 2500 DECLARE_VERIFIER(FixedDoubleArray)
2510 2501
2511 private: 2502 private:
2512 DISALLOW_IMPLICIT_CONSTRUCTORS(FixedDoubleArray); 2503 DISALLOW_IMPLICIT_CONSTRUCTORS(FixedDoubleArray);
2513 }; 2504 };
2514 2505
2515 2506
2516 // DescriptorArrays are fixed arrays used to hold instance descriptors. 2507 // DescriptorArrays are fixed arrays used to hold instance descriptors.
2517 // The format of the these objects is: 2508 // The format of the these objects is:
2518 // [0]: Number of descriptors 2509 // [0]: Number of descriptors
(...skipping 1179 matching lines...) Expand 10 before | Expand all | Expand 10 after
3698 // Returns a pointer to the ByteArray object for a given data start address. 3689 // Returns a pointer to the ByteArray object for a given data start address.
3699 static inline ByteArray* FromDataStartAddress(Address address); 3690 static inline ByteArray* FromDataStartAddress(Address address);
3700 3691
3701 // Casting. 3692 // Casting.
3702 static inline ByteArray* cast(Object* obj); 3693 static inline ByteArray* cast(Object* obj);
3703 3694
3704 // Dispatched behavior. 3695 // Dispatched behavior.
3705 inline int ByteArraySize() { 3696 inline int ByteArraySize() {
3706 return SizeFor(this->length()); 3697 return SizeFor(this->length());
3707 } 3698 }
3708 #ifdef OBJECT_PRINT 3699 DECLARE_PRINTER(ByteArray)
3709 inline void ByteArrayPrint() {
3710 ByteArrayPrint(stdout);
3711 }
3712 void ByteArrayPrint(FILE* out);
3713 #endif
3714 DECLARE_VERIFIER(ByteArray) 3700 DECLARE_VERIFIER(ByteArray)
3715 3701
3716 // Layout description. 3702 // Layout description.
3717 static const int kAlignedSize = OBJECT_POINTER_ALIGN(kHeaderSize); 3703 static const int kAlignedSize = OBJECT_POINTER_ALIGN(kHeaderSize);
3718 3704
3719 // Maximal memory consumption for a single ByteArray. 3705 // Maximal memory consumption for a single ByteArray.
3720 static const int kMaxSize = 512 * MB; 3706 static const int kMaxSize = 512 * MB;
3721 // Maximal length of a single ByteArray. 3707 // Maximal length of a single ByteArray.
3722 static const int kMaxLength = kMaxSize - kHeaderSize; 3708 static const int kMaxLength = kMaxSize - kHeaderSize;
3723 3709
3724 private: 3710 private:
3725 DISALLOW_IMPLICIT_CONSTRUCTORS(ByteArray); 3711 DISALLOW_IMPLICIT_CONSTRUCTORS(ByteArray);
3726 }; 3712 };
3727 3713
3728 3714
3729 // FreeSpace represents fixed sized areas of the heap that are not currently in 3715 // FreeSpace represents fixed sized areas of the heap that are not currently in
3730 // use. Used by the heap and GC. 3716 // use. Used by the heap and GC.
3731 class FreeSpace: public HeapObject { 3717 class FreeSpace: public HeapObject {
3732 public: 3718 public:
3733 // [size]: size of the free space including the header. 3719 // [size]: size of the free space including the header.
3734 inline int size(); 3720 inline int size();
3735 inline void set_size(int value); 3721 inline void set_size(int value);
3736 3722
3737 inline int Size() { return size(); } 3723 inline int Size() { return size(); }
3738 3724
3739 // Casting. 3725 // Casting.
3740 static inline FreeSpace* cast(Object* obj); 3726 static inline FreeSpace* cast(Object* obj);
3741 3727
3742 #ifdef OBJECT_PRINT 3728 // Dispatched behavior.
3743 inline void FreeSpacePrint() { 3729 DECLARE_PRINTER(FreeSpace)
3744 FreeSpacePrint(stdout);
3745 }
3746 void FreeSpacePrint(FILE* out);
3747 #endif
3748 DECLARE_VERIFIER(FreeSpace) 3730 DECLARE_VERIFIER(FreeSpace)
3749 3731
3750 // Layout description. 3732 // Layout description.
3751 // Size is smi tagged when it is stored. 3733 // Size is smi tagged when it is stored.
3752 static const int kSizeOffset = HeapObject::kHeaderSize; 3734 static const int kSizeOffset = HeapObject::kHeaderSize;
3753 static const int kHeaderSize = kSizeOffset + kPointerSize; 3735 static const int kHeaderSize = kSizeOffset + kPointerSize;
3754 3736
3755 static const int kAlignedSize = OBJECT_POINTER_ALIGN(kHeaderSize); 3737 static const int kAlignedSize = OBJECT_POINTER_ALIGN(kHeaderSize);
3756 3738
3757 private: 3739 private:
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
3812 MUST_USE_RESULT inline MaybeObject* get(int index); 3794 MUST_USE_RESULT inline MaybeObject* get(int index);
3813 inline void set(int index, uint8_t value); 3795 inline void set(int index, uint8_t value);
3814 3796
3815 // This accessor applies the correct conversion from Smi, HeapNumber and 3797 // This accessor applies the correct conversion from Smi, HeapNumber and
3816 // undefined and clamps the converted value between 0 and 255. 3798 // undefined and clamps the converted value between 0 and 255.
3817 Object* SetValue(uint32_t index, Object* value); 3799 Object* SetValue(uint32_t index, Object* value);
3818 3800
3819 // Casting. 3801 // Casting.
3820 static inline ExternalPixelArray* cast(Object* obj); 3802 static inline ExternalPixelArray* cast(Object* obj);
3821 3803
3822 #ifdef OBJECT_PRINT 3804 // Dispatched behavior.
3823 inline void ExternalPixelArrayPrint() { 3805 DECLARE_PRINTER(ExternalPixelArray)
3824 ExternalPixelArrayPrint(stdout);
3825 }
3826 void ExternalPixelArrayPrint(FILE* out);
3827 #endif
3828 DECLARE_VERIFIER(ExternalPixelArray) 3806 DECLARE_VERIFIER(ExternalPixelArray)
3829 3807
3830 private: 3808 private:
3831 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalPixelArray); 3809 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalPixelArray);
3832 }; 3810 };
3833 3811
3834 3812
3835 class ExternalByteArray: public ExternalArray { 3813 class ExternalByteArray: public ExternalArray {
3836 public: 3814 public:
3837 // Setter and getter. 3815 // Setter and getter.
3838 inline int8_t get_scalar(int index); 3816 inline int8_t get_scalar(int index);
3839 MUST_USE_RESULT inline MaybeObject* get(int index); 3817 MUST_USE_RESULT inline MaybeObject* get(int index);
3840 inline void set(int index, int8_t value); 3818 inline void set(int index, int8_t value);
3841 3819
3842 // This accessor applies the correct conversion from Smi, HeapNumber 3820 // This accessor applies the correct conversion from Smi, HeapNumber
3843 // and undefined. 3821 // and undefined.
3844 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); 3822 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value);
3845 3823
3846 // Casting. 3824 // Casting.
3847 static inline ExternalByteArray* cast(Object* obj); 3825 static inline ExternalByteArray* cast(Object* obj);
3848 3826
3849 #ifdef OBJECT_PRINT 3827 // Dispatched behavior.
3850 inline void ExternalByteArrayPrint() { 3828 DECLARE_PRINTER(ExternalByteArray)
3851 ExternalByteArrayPrint(stdout);
3852 }
3853 void ExternalByteArrayPrint(FILE* out);
3854 #endif
3855 DECLARE_VERIFIER(ExternalByteArray) 3829 DECLARE_VERIFIER(ExternalByteArray)
3856 3830
3857 private: 3831 private:
3858 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalByteArray); 3832 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalByteArray);
3859 }; 3833 };
3860 3834
3861 3835
3862 class ExternalUnsignedByteArray: public ExternalArray { 3836 class ExternalUnsignedByteArray: public ExternalArray {
3863 public: 3837 public:
3864 // Setter and getter. 3838 // Setter and getter.
3865 inline uint8_t get_scalar(int index); 3839 inline uint8_t get_scalar(int index);
3866 MUST_USE_RESULT inline MaybeObject* get(int index); 3840 MUST_USE_RESULT inline MaybeObject* get(int index);
3867 inline void set(int index, uint8_t value); 3841 inline void set(int index, uint8_t value);
3868 3842
3869 // This accessor applies the correct conversion from Smi, HeapNumber 3843 // This accessor applies the correct conversion from Smi, HeapNumber
3870 // and undefined. 3844 // and undefined.
3871 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); 3845 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value);
3872 3846
3873 // Casting. 3847 // Casting.
3874 static inline ExternalUnsignedByteArray* cast(Object* obj); 3848 static inline ExternalUnsignedByteArray* cast(Object* obj);
3875 3849
3876 #ifdef OBJECT_PRINT 3850 // Dispatched behavior.
3877 inline void ExternalUnsignedByteArrayPrint() { 3851 DECLARE_PRINTER(ExternalUnsignedByteArray)
3878 ExternalUnsignedByteArrayPrint(stdout);
3879 }
3880 void ExternalUnsignedByteArrayPrint(FILE* out);
3881 #endif
3882 DECLARE_VERIFIER(ExternalUnsignedByteArray) 3852 DECLARE_VERIFIER(ExternalUnsignedByteArray)
3883 3853
3884 private: 3854 private:
3885 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedByteArray); 3855 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedByteArray);
3886 }; 3856 };
3887 3857
3888 3858
3889 class ExternalShortArray: public ExternalArray { 3859 class ExternalShortArray: public ExternalArray {
3890 public: 3860 public:
3891 // Setter and getter. 3861 // Setter and getter.
3892 inline int16_t get_scalar(int index); 3862 inline int16_t get_scalar(int index);
3893 MUST_USE_RESULT inline MaybeObject* get(int index); 3863 MUST_USE_RESULT inline MaybeObject* get(int index);
3894 inline void set(int index, int16_t value); 3864 inline void set(int index, int16_t value);
3895 3865
3896 // This accessor applies the correct conversion from Smi, HeapNumber 3866 // This accessor applies the correct conversion from Smi, HeapNumber
3897 // and undefined. 3867 // and undefined.
3898 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); 3868 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value);
3899 3869
3900 // Casting. 3870 // Casting.
3901 static inline ExternalShortArray* cast(Object* obj); 3871 static inline ExternalShortArray* cast(Object* obj);
3902 3872
3903 #ifdef OBJECT_PRINT 3873 // Dispatched behavior.
3904 inline void ExternalShortArrayPrint() { 3874 DECLARE_PRINTER(ExternalShortArray)
3905 ExternalShortArrayPrint(stdout);
3906 }
3907 void ExternalShortArrayPrint(FILE* out);
3908 #endif
3909 DECLARE_VERIFIER(ExternalShortArray) 3875 DECLARE_VERIFIER(ExternalShortArray)
3910 3876
3911 private: 3877 private:
3912 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalShortArray); 3878 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalShortArray);
3913 }; 3879 };
3914 3880
3915 3881
3916 class ExternalUnsignedShortArray: public ExternalArray { 3882 class ExternalUnsignedShortArray: public ExternalArray {
3917 public: 3883 public:
3918 // Setter and getter. 3884 // Setter and getter.
3919 inline uint16_t get_scalar(int index); 3885 inline uint16_t get_scalar(int index);
3920 MUST_USE_RESULT inline MaybeObject* get(int index); 3886 MUST_USE_RESULT inline MaybeObject* get(int index);
3921 inline void set(int index, uint16_t value); 3887 inline void set(int index, uint16_t value);
3922 3888
3923 // This accessor applies the correct conversion from Smi, HeapNumber 3889 // This accessor applies the correct conversion from Smi, HeapNumber
3924 // and undefined. 3890 // and undefined.
3925 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); 3891 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value);
3926 3892
3927 // Casting. 3893 // Casting.
3928 static inline ExternalUnsignedShortArray* cast(Object* obj); 3894 static inline ExternalUnsignedShortArray* cast(Object* obj);
3929 3895
3930 #ifdef OBJECT_PRINT 3896 // Dispatched behavior.
3931 inline void ExternalUnsignedShortArrayPrint() { 3897 DECLARE_PRINTER(ExternalUnsignedShortArray)
3932 ExternalUnsignedShortArrayPrint(stdout);
3933 }
3934 void ExternalUnsignedShortArrayPrint(FILE* out);
3935 #endif
3936 DECLARE_VERIFIER(ExternalUnsignedShortArray) 3898 DECLARE_VERIFIER(ExternalUnsignedShortArray)
3937 3899
3938 private: 3900 private:
3939 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedShortArray); 3901 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedShortArray);
3940 }; 3902 };
3941 3903
3942 3904
3943 class ExternalIntArray: public ExternalArray { 3905 class ExternalIntArray: public ExternalArray {
3944 public: 3906 public:
3945 // Setter and getter. 3907 // Setter and getter.
3946 inline int32_t get_scalar(int index); 3908 inline int32_t get_scalar(int index);
3947 MUST_USE_RESULT inline MaybeObject* get(int index); 3909 MUST_USE_RESULT inline MaybeObject* get(int index);
3948 inline void set(int index, int32_t value); 3910 inline void set(int index, int32_t value);
3949 3911
3950 // This accessor applies the correct conversion from Smi, HeapNumber 3912 // This accessor applies the correct conversion from Smi, HeapNumber
3951 // and undefined. 3913 // and undefined.
3952 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); 3914 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value);
3953 3915
3954 // Casting. 3916 // Casting.
3955 static inline ExternalIntArray* cast(Object* obj); 3917 static inline ExternalIntArray* cast(Object* obj);
3956 3918
3957 #ifdef OBJECT_PRINT 3919 // Dispatched behavior.
3958 inline void ExternalIntArrayPrint() { 3920 DECLARE_PRINTER(ExternalIntArray)
3959 ExternalIntArrayPrint(stdout);
3960 }
3961 void ExternalIntArrayPrint(FILE* out);
3962 #endif
3963 DECLARE_VERIFIER(ExternalIntArray) 3921 DECLARE_VERIFIER(ExternalIntArray)
3964 3922
3965 private: 3923 private:
3966 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalIntArray); 3924 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalIntArray);
3967 }; 3925 };
3968 3926
3969 3927
3970 class ExternalUnsignedIntArray: public ExternalArray { 3928 class ExternalUnsignedIntArray: public ExternalArray {
3971 public: 3929 public:
3972 // Setter and getter. 3930 // Setter and getter.
3973 inline uint32_t get_scalar(int index); 3931 inline uint32_t get_scalar(int index);
3974 MUST_USE_RESULT inline MaybeObject* get(int index); 3932 MUST_USE_RESULT inline MaybeObject* get(int index);
3975 inline void set(int index, uint32_t value); 3933 inline void set(int index, uint32_t value);
3976 3934
3977 // This accessor applies the correct conversion from Smi, HeapNumber 3935 // This accessor applies the correct conversion from Smi, HeapNumber
3978 // and undefined. 3936 // and undefined.
3979 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); 3937 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value);
3980 3938
3981 // Casting. 3939 // Casting.
3982 static inline ExternalUnsignedIntArray* cast(Object* obj); 3940 static inline ExternalUnsignedIntArray* cast(Object* obj);
3983 3941
3984 #ifdef OBJECT_PRINT 3942 // Dispatched behavior.
3985 inline void ExternalUnsignedIntArrayPrint() { 3943 DECLARE_PRINTER(ExternalUnsignedIntArray)
3986 ExternalUnsignedIntArrayPrint(stdout);
3987 }
3988 void ExternalUnsignedIntArrayPrint(FILE* out);
3989 #endif
3990 DECLARE_VERIFIER(ExternalUnsignedIntArray) 3944 DECLARE_VERIFIER(ExternalUnsignedIntArray)
3991 3945
3992 private: 3946 private:
3993 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedIntArray); 3947 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUnsignedIntArray);
3994 }; 3948 };
3995 3949
3996 3950
3997 class ExternalFloatArray: public ExternalArray { 3951 class ExternalFloatArray: public ExternalArray {
3998 public: 3952 public:
3999 // Setter and getter. 3953 // Setter and getter.
4000 inline float get_scalar(int index); 3954 inline float get_scalar(int index);
4001 MUST_USE_RESULT inline MaybeObject* get(int index); 3955 MUST_USE_RESULT inline MaybeObject* get(int index);
4002 inline void set(int index, float value); 3956 inline void set(int index, float value);
4003 3957
4004 // This accessor applies the correct conversion from Smi, HeapNumber 3958 // This accessor applies the correct conversion from Smi, HeapNumber
4005 // and undefined. 3959 // and undefined.
4006 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); 3960 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value);
4007 3961
4008 // Casting. 3962 // Casting.
4009 static inline ExternalFloatArray* cast(Object* obj); 3963 static inline ExternalFloatArray* cast(Object* obj);
4010 3964
4011 #ifdef OBJECT_PRINT 3965 // Dispatched behavior.
4012 inline void ExternalFloatArrayPrint() { 3966 DECLARE_PRINTER(ExternalFloatArray)
4013 ExternalFloatArrayPrint(stdout);
4014 }
4015 void ExternalFloatArrayPrint(FILE* out);
4016 #endif
4017 DECLARE_VERIFIER(ExternalFloatArray) 3967 DECLARE_VERIFIER(ExternalFloatArray)
4018 3968
4019 private: 3969 private:
4020 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloatArray); 3970 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloatArray);
4021 }; 3971 };
4022 3972
4023 3973
4024 class ExternalDoubleArray: public ExternalArray { 3974 class ExternalDoubleArray: public ExternalArray {
4025 public: 3975 public:
4026 // Setter and getter. 3976 // Setter and getter.
4027 inline double get_scalar(int index); 3977 inline double get_scalar(int index);
4028 MUST_USE_RESULT inline MaybeObject* get(int index); 3978 MUST_USE_RESULT inline MaybeObject* get(int index);
4029 inline void set(int index, double value); 3979 inline void set(int index, double value);
4030 3980
4031 // This accessor applies the correct conversion from Smi, HeapNumber 3981 // This accessor applies the correct conversion from Smi, HeapNumber
4032 // and undefined. 3982 // and undefined.
4033 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); 3983 MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value);
4034 3984
4035 // Casting. 3985 // Casting.
4036 static inline ExternalDoubleArray* cast(Object* obj); 3986 static inline ExternalDoubleArray* cast(Object* obj);
4037 3987
4038 #ifdef OBJECT_PRINT 3988 // Dispatched behavior.
4039 inline void ExternalDoubleArrayPrint() { 3989 DECLARE_PRINTER(ExternalDoubleArray)
4040 ExternalDoubleArrayPrint(stdout);
4041 }
4042 void ExternalDoubleArrayPrint(FILE* out);
4043 #endif // OBJECT_PRINT
4044 DECLARE_VERIFIER(ExternalDoubleArray) 3990 DECLARE_VERIFIER(ExternalDoubleArray)
4045 3991
4046 private: 3992 private:
4047 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalDoubleArray); 3993 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalDoubleArray);
4048 }; 3994 };
4049 3995
4050 3996
4051 // DeoptimizationInputData is a fixed array used to hold the deoptimization 3997 // DeoptimizationInputData is a fixed array used to hold the deoptimization
4052 // data for code generated by the Hydrogen/Lithium compiler. It also 3998 // data for code generated by the Hydrogen/Lithium compiler. It also
4053 // contains information about functions that were inlined. If N different 3999 // contains information about functions that were inlined. If N different
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
4545 4491
4546 // Casting. 4492 // Casting.
4547 static inline Code* cast(Object* obj); 4493 static inline Code* cast(Object* obj);
4548 4494
4549 // Dispatched behavior. 4495 // Dispatched behavior.
4550 int CodeSize() { return SizeFor(body_size()); } 4496 int CodeSize() { return SizeFor(body_size()); }
4551 inline void CodeIterateBody(ObjectVisitor* v); 4497 inline void CodeIterateBody(ObjectVisitor* v);
4552 4498
4553 template<typename StaticVisitor> 4499 template<typename StaticVisitor>
4554 inline void CodeIterateBody(Heap* heap); 4500 inline void CodeIterateBody(Heap* heap);
4555 #ifdef OBJECT_PRINT 4501
4556 inline void CodePrint() { 4502 DECLARE_PRINTER(Code)
4557 CodePrint(stdout);
4558 }
4559 void CodePrint(FILE* out);
4560 #endif
4561 DECLARE_VERIFIER(Code) 4503 DECLARE_VERIFIER(Code)
4562 4504
4563 void ClearInlineCaches(); 4505 void ClearInlineCaches();
4564 void ClearTypeFeedbackCells(Heap* heap); 4506 void ClearTypeFeedbackCells(Heap* heap);
4565 4507
4566 #define DECLARE_CODE_AGE_ENUM(X) k##X##CodeAge, 4508 #define DECLARE_CODE_AGE_ENUM(X) k##X##CodeAge,
4567 enum Age { 4509 enum Age {
4568 kNoAge = 0, 4510 kNoAge = 0,
4569 CODE_AGE_LIST(DECLARE_CODE_AGE_ENUM) 4511 CODE_AGE_LIST(DECLARE_CODE_AGE_ENUM)
4570 kAfterLastCodeAge, 4512 kAfterLastCodeAge,
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
5126 // Zaps the contents of backing data structures. Note that the 5068 // Zaps the contents of backing data structures. Note that the
5127 // heap verifier (i.e. VerifyMarkingVisitor) relies on zapping of objects 5069 // heap verifier (i.e. VerifyMarkingVisitor) relies on zapping of objects
5128 // holding weak references when incremental marking is used, because it also 5070 // holding weak references when incremental marking is used, because it also
5129 // iterates over objects that are otherwise unreachable. 5071 // iterates over objects that are otherwise unreachable.
5130 // In general we only want to call these functions in release mode when 5072 // In general we only want to call these functions in release mode when
5131 // heap verification is turned on. 5073 // heap verification is turned on.
5132 void ZapPrototypeTransitions(); 5074 void ZapPrototypeTransitions();
5133 void ZapTransitions(); 5075 void ZapTransitions();
5134 5076
5135 // Dispatched behavior. 5077 // Dispatched behavior.
5136 #ifdef OBJECT_PRINT 5078 DECLARE_PRINTER(Map)
5137 inline void MapPrint() {
5138 MapPrint(stdout);
5139 }
5140 void MapPrint(FILE* out);
5141 #endif
5142 DECLARE_VERIFIER(Map) 5079 DECLARE_VERIFIER(Map)
5143 5080
5144 #ifdef VERIFY_HEAP 5081 #ifdef VERIFY_HEAP
5145 void SharedMapVerify(); 5082 void SharedMapVerify();
5146 #endif 5083 #endif
5147 5084
5148 inline int visitor_id(); 5085 inline int visitor_id();
5149 inline void set_visitor_id(int visitor_id); 5086 inline void set_visitor_id(int visitor_id);
5150 5087
5151 typedef void (*TraverseCallback)(Map* map, void* data); 5088 typedef void (*TraverseCallback)(Map* map, void* data);
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
5332 // [eval_from_instructions_offset]: the instruction offset in the code for the 5269 // [eval_from_instructions_offset]: the instruction offset in the code for the
5333 // function from which eval was called where eval was called. 5270 // function from which eval was called where eval was called.
5334 DECL_ACCESSORS(eval_from_instructions_offset, Smi) 5271 DECL_ACCESSORS(eval_from_instructions_offset, Smi)
5335 5272
5336 static inline Script* cast(Object* obj); 5273 static inline Script* cast(Object* obj);
5337 5274
5338 // If script source is an external string, check that the underlying 5275 // If script source is an external string, check that the underlying
5339 // resource is accessible. Otherwise, always return true. 5276 // resource is accessible. Otherwise, always return true.
5340 inline bool HasValidSource(); 5277 inline bool HasValidSource();
5341 5278
5342 #ifdef OBJECT_PRINT 5279 // Dispatched behavior.
5343 inline void ScriptPrint() { 5280 DECLARE_PRINTER(Script)
5344 ScriptPrint(stdout);
5345 }
5346 void ScriptPrint(FILE* out);
5347 #endif
5348 DECLARE_VERIFIER(Script) 5281 DECLARE_VERIFIER(Script)
5349 5282
5350 static const int kSourceOffset = HeapObject::kHeaderSize; 5283 static const int kSourceOffset = HeapObject::kHeaderSize;
5351 static const int kNameOffset = kSourceOffset + kPointerSize; 5284 static const int kNameOffset = kSourceOffset + kPointerSize;
5352 static const int kLineOffsetOffset = kNameOffset + kPointerSize; 5285 static const int kLineOffsetOffset = kNameOffset + kPointerSize;
5353 static const int kColumnOffsetOffset = kLineOffsetOffset + kPointerSize; 5286 static const int kColumnOffsetOffset = kLineOffsetOffset + kPointerSize;
5354 static const int kDataOffset = kColumnOffsetOffset + kPointerSize; 5287 static const int kDataOffset = kColumnOffsetOffset + kPointerSize;
5355 static const int kContextOffset = kDataOffset + kPointerSize; 5288 static const int kContextOffset = kDataOffset + kPointerSize;
5356 static const int kWrapperOffset = kContextOffset + kPointerSize; 5289 static const int kWrapperOffset = kContextOffset + kPointerSize;
5357 static const int kTypeOffset = kWrapperOffset + kPointerSize; 5290 static const int kTypeOffset = kWrapperOffset + kPointerSize;
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
5812 5745
5813 // Calculate the instance size. 5746 // Calculate the instance size.
5814 int CalculateInstanceSize(); 5747 int CalculateInstanceSize();
5815 5748
5816 // Calculate the number of in-object properties. 5749 // Calculate the number of in-object properties.
5817 int CalculateInObjectProperties(); 5750 int CalculateInObjectProperties();
5818 5751
5819 // Dispatched behavior. 5752 // Dispatched behavior.
5820 // Set max_length to -1 for unlimited length. 5753 // Set max_length to -1 for unlimited length.
5821 void SourceCodePrint(StringStream* accumulator, int max_length); 5754 void SourceCodePrint(StringStream* accumulator, int max_length);
5822 #ifdef OBJECT_PRINT 5755 DECLARE_PRINTER(SharedFunctionInfo)
5823 inline void SharedFunctionInfoPrint() {
5824 SharedFunctionInfoPrint(stdout);
5825 }
5826 void SharedFunctionInfoPrint(FILE* out);
5827 #endif
5828 DECLARE_VERIFIER(SharedFunctionInfo) 5756 DECLARE_VERIFIER(SharedFunctionInfo)
5829 5757
5830 void ResetForNewContext(int new_ic_age); 5758 void ResetForNewContext(int new_ic_age);
5831 5759
5832 // Helper to compile the shared code. Returns true on success, false on 5760 // Helper to compile the shared code. Returns true on success, false on
5833 // failure (e.g., stack overflow during compilation). This is only used by 5761 // failure (e.g., stack overflow during compilation). This is only used by
5834 // the debugger, it is not possible to compile without a context otherwise. 5762 // the debugger, it is not possible to compile without a context otherwise.
5835 static bool CompileLazy(Handle<SharedFunctionInfo> shared, 5763 static bool CompileLazy(Handle<SharedFunctionInfo> shared,
5836 ClearExceptionFlag flag); 5764 ClearExceptionFlag flag);
5837 5765
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
6046 // [context]: the context holding the module's locals, or undefined if none. 5974 // [context]: the context holding the module's locals, or undefined if none.
6047 DECL_ACCESSORS(context, Object) 5975 DECL_ACCESSORS(context, Object)
6048 5976
6049 // [scope_info]: Scope info. 5977 // [scope_info]: Scope info.
6050 DECL_ACCESSORS(scope_info, ScopeInfo) 5978 DECL_ACCESSORS(scope_info, ScopeInfo)
6051 5979
6052 // Casting. 5980 // Casting.
6053 static inline JSModule* cast(Object* obj); 5981 static inline JSModule* cast(Object* obj);
6054 5982
6055 // Dispatched behavior. 5983 // Dispatched behavior.
6056 #ifdef OBJECT_PRINT 5984 DECLARE_PRINTER(JSModule)
6057 inline void JSModulePrint() {
6058 JSModulePrint(stdout);
6059 }
6060 void JSModulePrint(FILE* out);
6061 #endif
6062 DECLARE_VERIFIER(JSModule) 5985 DECLARE_VERIFIER(JSModule)
6063 5986
6064 // Layout description. 5987 // Layout description.
6065 static const int kContextOffset = JSObject::kHeaderSize; 5988 static const int kContextOffset = JSObject::kHeaderSize;
6066 static const int kScopeInfoOffset = kContextOffset + kPointerSize; 5989 static const int kScopeInfoOffset = kContextOffset + kPointerSize;
6067 static const int kSize = kScopeInfoOffset + kPointerSize; 5990 static const int kSize = kScopeInfoOffset + kPointerSize;
6068 5991
6069 private: 5992 private:
6070 DISALLOW_IMPLICIT_CONSTRUCTORS(JSModule); 5993 DISALLOW_IMPLICIT_CONSTRUCTORS(JSModule);
6071 }; 5994 };
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
6205 void PrintName(FILE* out); 6128 void PrintName(FILE* out);
6206 6129
6207 // Casting. 6130 // Casting.
6208 static inline JSFunction* cast(Object* obj); 6131 static inline JSFunction* cast(Object* obj);
6209 6132
6210 // Iterates the objects, including code objects indirectly referenced 6133 // Iterates the objects, including code objects indirectly referenced
6211 // through pointers to the first instruction in the code object. 6134 // through pointers to the first instruction in the code object.
6212 void JSFunctionIterateBody(int object_size, ObjectVisitor* v); 6135 void JSFunctionIterateBody(int object_size, ObjectVisitor* v);
6213 6136
6214 // Dispatched behavior. 6137 // Dispatched behavior.
6215 #ifdef OBJECT_PRINT 6138 DECLARE_PRINTER(JSFunction)
6216 inline void JSFunctionPrint() {
6217 JSFunctionPrint(stdout);
6218 }
6219 void JSFunctionPrint(FILE* out);
6220 #endif
6221 DECLARE_VERIFIER(JSFunction) 6139 DECLARE_VERIFIER(JSFunction)
6222 6140
6223 // Returns the number of allocated literals. 6141 // Returns the number of allocated literals.
6224 inline int NumberOfLiterals(); 6142 inline int NumberOfLiterals();
6225 6143
6226 // Retrieve the native context from a function's literal array. 6144 // Retrieve the native context from a function's literal array.
6227 static Context* NativeContextFromLiterals(FixedArray* literals); 6145 static Context* NativeContextFromLiterals(FixedArray* literals);
6228 6146
6229 // Layout descriptors. The last property (from kNonWeakFieldsEndOffset to 6147 // Layout descriptors. The last property (from kNonWeakFieldsEndOffset to
6230 // kSize) is weak and has special handling during garbage collection. 6148 // kSize) is weak and has special handling during garbage collection.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
6264 class JSGlobalProxy : public JSObject { 6182 class JSGlobalProxy : public JSObject {
6265 public: 6183 public:
6266 // [native_context]: the owner native context of this global proxy object. 6184 // [native_context]: the owner native context of this global proxy object.
6267 // It is null value if this object is not used by any context. 6185 // It is null value if this object is not used by any context.
6268 DECL_ACCESSORS(native_context, Object) 6186 DECL_ACCESSORS(native_context, Object)
6269 6187
6270 // Casting. 6188 // Casting.
6271 static inline JSGlobalProxy* cast(Object* obj); 6189 static inline JSGlobalProxy* cast(Object* obj);
6272 6190
6273 // Dispatched behavior. 6191 // Dispatched behavior.
6274 #ifdef OBJECT_PRINT 6192 DECLARE_PRINTER(JSGlobalProxy)
6275 inline void JSGlobalProxyPrint() {
6276 JSGlobalProxyPrint(stdout);
6277 }
6278 void JSGlobalProxyPrint(FILE* out);
6279 #endif
6280 DECLARE_VERIFIER(JSGlobalProxy) 6193 DECLARE_VERIFIER(JSGlobalProxy)
6281 6194
6282 // Layout description. 6195 // Layout description.
6283 static const int kNativeContextOffset = JSObject::kHeaderSize; 6196 static const int kNativeContextOffset = JSObject::kHeaderSize;
6284 static const int kSize = kNativeContextOffset + kPointerSize; 6197 static const int kSize = kNativeContextOffset + kPointerSize;
6285 6198
6286 private: 6199 private:
6287 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalProxy); 6200 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalProxy);
6288 }; 6201 };
6289 6202
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
6342 }; 6255 };
6343 6256
6344 6257
6345 // JavaScript global object. 6258 // JavaScript global object.
6346 class JSGlobalObject: public GlobalObject { 6259 class JSGlobalObject: public GlobalObject {
6347 public: 6260 public:
6348 // Casting. 6261 // Casting.
6349 static inline JSGlobalObject* cast(Object* obj); 6262 static inline JSGlobalObject* cast(Object* obj);
6350 6263
6351 // Dispatched behavior. 6264 // Dispatched behavior.
6352 #ifdef OBJECT_PRINT 6265 DECLARE_PRINTER(JSGlobalObject)
6353 inline void JSGlobalObjectPrint() {
6354 JSGlobalObjectPrint(stdout);
6355 }
6356 void JSGlobalObjectPrint(FILE* out);
6357 #endif
6358 DECLARE_VERIFIER(JSGlobalObject) 6266 DECLARE_VERIFIER(JSGlobalObject)
6359 6267
6360 // Layout description. 6268 // Layout description.
6361 static const int kSize = GlobalObject::kHeaderSize; 6269 static const int kSize = GlobalObject::kHeaderSize;
6362 6270
6363 private: 6271 private:
6364 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalObject); 6272 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalObject);
6365 }; 6273 };
6366 6274
6367 6275
6368 // Builtins global object which holds the runtime routines written in 6276 // Builtins global object which holds the runtime routines written in
6369 // JavaScript. 6277 // JavaScript.
6370 class JSBuiltinsObject: public GlobalObject { 6278 class JSBuiltinsObject: public GlobalObject {
6371 public: 6279 public:
6372 // Accessors for the runtime routines written in JavaScript. 6280 // Accessors for the runtime routines written in JavaScript.
6373 inline Object* javascript_builtin(Builtins::JavaScript id); 6281 inline Object* javascript_builtin(Builtins::JavaScript id);
6374 inline void set_javascript_builtin(Builtins::JavaScript id, Object* value); 6282 inline void set_javascript_builtin(Builtins::JavaScript id, Object* value);
6375 6283
6376 // Accessors for code of the runtime routines written in JavaScript. 6284 // Accessors for code of the runtime routines written in JavaScript.
6377 inline Code* javascript_builtin_code(Builtins::JavaScript id); 6285 inline Code* javascript_builtin_code(Builtins::JavaScript id);
6378 inline void set_javascript_builtin_code(Builtins::JavaScript id, Code* value); 6286 inline void set_javascript_builtin_code(Builtins::JavaScript id, Code* value);
6379 6287
6380 // Casting. 6288 // Casting.
6381 static inline JSBuiltinsObject* cast(Object* obj); 6289 static inline JSBuiltinsObject* cast(Object* obj);
6382 6290
6383 // Dispatched behavior. 6291 // Dispatched behavior.
6384 #ifdef OBJECT_PRINT 6292 DECLARE_PRINTER(JSBuiltinsObject)
6385 inline void JSBuiltinsObjectPrint() {
6386 JSBuiltinsObjectPrint(stdout);
6387 }
6388 void JSBuiltinsObjectPrint(FILE* out);
6389 #endif
6390 DECLARE_VERIFIER(JSBuiltinsObject) 6293 DECLARE_VERIFIER(JSBuiltinsObject)
6391 6294
6392 // Layout description. The size of the builtins object includes 6295 // Layout description. The size of the builtins object includes
6393 // room for two pointers per runtime routine written in javascript 6296 // room for two pointers per runtime routine written in javascript
6394 // (function and code object). 6297 // (function and code object).
6395 static const int kJSBuiltinsCount = Builtins::id_count; 6298 static const int kJSBuiltinsCount = Builtins::id_count;
6396 static const int kJSBuiltinsOffset = GlobalObject::kHeaderSize; 6299 static const int kJSBuiltinsOffset = GlobalObject::kHeaderSize;
6397 static const int kJSBuiltinsCodeOffset = 6300 static const int kJSBuiltinsCodeOffset =
6398 GlobalObject::kHeaderSize + (kJSBuiltinsCount * kPointerSize); 6301 GlobalObject::kHeaderSize + (kJSBuiltinsCount * kPointerSize);
6399 static const int kSize = 6302 static const int kSize =
(...skipping 15 matching lines...) Expand all
6415 // Representation for JS Wrapper objects, String, Number, Boolean, etc. 6318 // Representation for JS Wrapper objects, String, Number, Boolean, etc.
6416 class JSValue: public JSObject { 6319 class JSValue: public JSObject {
6417 public: 6320 public:
6418 // [value]: the object being wrapped. 6321 // [value]: the object being wrapped.
6419 DECL_ACCESSORS(value, Object) 6322 DECL_ACCESSORS(value, Object)
6420 6323
6421 // Casting. 6324 // Casting.
6422 static inline JSValue* cast(Object* obj); 6325 static inline JSValue* cast(Object* obj);
6423 6326
6424 // Dispatched behavior. 6327 // Dispatched behavior.
6425 #ifdef OBJECT_PRINT 6328 DECLARE_PRINTER(JSValue)
6426 inline void JSValuePrint() {
6427 JSValuePrint(stdout);
6428 }
6429 void JSValuePrint(FILE* out);
6430 #endif
6431 DECLARE_VERIFIER(JSValue) 6329 DECLARE_VERIFIER(JSValue)
6432 6330
6433 // Layout description. 6331 // Layout description.
6434 static const int kValueOffset = JSObject::kHeaderSize; 6332 static const int kValueOffset = JSObject::kHeaderSize;
6435 static const int kSize = kValueOffset + kPointerSize; 6333 static const int kSize = kValueOffset + kPointerSize;
6436 6334
6437 private: 6335 private:
6438 DISALLOW_IMPLICIT_CONSTRUCTORS(JSValue); 6336 DISALLOW_IMPLICIT_CONSTRUCTORS(JSValue);
6439 }; 6337 };
6440 6338
(...skipping 28 matching lines...) Expand all
6469 static inline JSDate* cast(Object* obj); 6367 static inline JSDate* cast(Object* obj);
6470 6368
6471 // Returns the date field with the specified index. 6369 // Returns the date field with the specified index.
6472 // See FieldIndex for the list of date fields. 6370 // See FieldIndex for the list of date fields.
6473 static Object* GetField(Object* date, Smi* index); 6371 static Object* GetField(Object* date, Smi* index);
6474 6372
6475 void SetValue(Object* value, bool is_value_nan); 6373 void SetValue(Object* value, bool is_value_nan);
6476 6374
6477 6375
6478 // Dispatched behavior. 6376 // Dispatched behavior.
6479 #ifdef OBJECT_PRINT 6377 DECLARE_PRINTER(JSDate)
6480 inline void JSDatePrint() {
6481 JSDatePrint(stdout);
6482 }
6483 void JSDatePrint(FILE* out);
6484 #endif
6485 DECLARE_VERIFIER(JSDate) 6378 DECLARE_VERIFIER(JSDate)
6486 6379
6487 // The order is important. It must be kept in sync with date macros 6380 // The order is important. It must be kept in sync with date macros
6488 // in macros.py. 6381 // in macros.py.
6489 enum FieldIndex { 6382 enum FieldIndex {
6490 kDateValue, 6383 kDateValue,
6491 kYear, 6384 kYear,
6492 kMonth, 6385 kMonth,
6493 kDay, 6386 kDay,
6494 kWeekday, 6387 kWeekday,
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
6566 inline void set_start_position(int value); 6459 inline void set_start_position(int value);
6567 6460
6568 // [end_position]: the end position in the script for the error message. 6461 // [end_position]: the end position in the script for the error message.
6569 inline int end_position(); 6462 inline int end_position();
6570 inline void set_end_position(int value); 6463 inline void set_end_position(int value);
6571 6464
6572 // Casting. 6465 // Casting.
6573 static inline JSMessageObject* cast(Object* obj); 6466 static inline JSMessageObject* cast(Object* obj);
6574 6467
6575 // Dispatched behavior. 6468 // Dispatched behavior.
6576 #ifdef OBJECT_PRINT 6469 DECLARE_PRINTER(JSMessageObject)
6577 inline void JSMessageObjectPrint() {
6578 JSMessageObjectPrint(stdout);
6579 }
6580 void JSMessageObjectPrint(FILE* out);
6581 #endif
6582 DECLARE_VERIFIER(JSMessageObject) 6470 DECLARE_VERIFIER(JSMessageObject)
6583 6471
6584 // Layout description. 6472 // Layout description.
6585 static const int kTypeOffset = JSObject::kHeaderSize; 6473 static const int kTypeOffset = JSObject::kHeaderSize;
6586 static const int kArgumentsOffset = kTypeOffset + kPointerSize; 6474 static const int kArgumentsOffset = kTypeOffset + kPointerSize;
6587 static const int kScriptOffset = kArgumentsOffset + kPointerSize; 6475 static const int kScriptOffset = kArgumentsOffset + kPointerSize;
6588 static const int kStackTraceOffset = kScriptOffset + kPointerSize; 6476 static const int kStackTraceOffset = kScriptOffset + kPointerSize;
6589 static const int kStackFramesOffset = kStackTraceOffset + kPointerSize; 6477 static const int kStackFramesOffset = kStackTraceOffset + kPointerSize;
6590 static const int kStartPositionOffset = kStackFramesOffset + kPointerSize; 6478 static const int kStartPositionOffset = kStackFramesOffset + kPointerSize;
6591 static const int kEndPositionOffset = kStartPositionOffset + kPointerSize; 6479 static const int kEndPositionOffset = kStartPositionOffset + kPointerSize;
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
6812 // code object is not in that cache. This index can be used to later call 6700 // code object is not in that cache. This index can be used to later call
6813 // RemoveByIndex. The cache cannot be modified between a call to GetIndex and 6701 // RemoveByIndex. The cache cannot be modified between a call to GetIndex and
6814 // RemoveByIndex. 6702 // RemoveByIndex.
6815 int GetIndex(Object* name, Code* code); 6703 int GetIndex(Object* name, Code* code);
6816 6704
6817 // Remove an object from the cache with the provided internal index. 6705 // Remove an object from the cache with the provided internal index.
6818 void RemoveByIndex(Object* name, Code* code, int index); 6706 void RemoveByIndex(Object* name, Code* code, int index);
6819 6707
6820 static inline CodeCache* cast(Object* obj); 6708 static inline CodeCache* cast(Object* obj);
6821 6709
6822 #ifdef OBJECT_PRINT 6710 // Dispatched behavior.
6823 inline void CodeCachePrint() { 6711 DECLARE_PRINTER(CodeCache)
6824 CodeCachePrint(stdout);
6825 }
6826 void CodeCachePrint(FILE* out);
6827 #endif
6828 DECLARE_VERIFIER(CodeCache) 6712 DECLARE_VERIFIER(CodeCache)
6829 6713
6830 static const int kDefaultCacheOffset = HeapObject::kHeaderSize; 6714 static const int kDefaultCacheOffset = HeapObject::kHeaderSize;
6831 static const int kNormalTypeCacheOffset = 6715 static const int kNormalTypeCacheOffset =
6832 kDefaultCacheOffset + kPointerSize; 6716 kDefaultCacheOffset + kPointerSize;
6833 static const int kSize = kNormalTypeCacheOffset + kPointerSize; 6717 static const int kSize = kNormalTypeCacheOffset + kPointerSize;
6834 6718
6835 private: 6719 private:
6836 MUST_USE_RESULT MaybeObject* UpdateDefaultCache(String* name, Code* code); 6720 MUST_USE_RESULT MaybeObject* UpdateDefaultCache(String* name, Code* code);
6837 MUST_USE_RESULT MaybeObject* UpdateNormalTypeCache(String* name, Code* code); 6721 MUST_USE_RESULT MaybeObject* UpdateNormalTypeCache(String* name, Code* code);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
6901 6785
6902 MUST_USE_RESULT MaybeObject* Update(MapHandleList* maps, 6786 MUST_USE_RESULT MaybeObject* Update(MapHandleList* maps,
6903 Code::Flags flags, 6787 Code::Flags flags,
6904 Code* code); 6788 Code* code);
6905 6789
6906 // Returns an undefined value if the entry is not found. 6790 // Returns an undefined value if the entry is not found.
6907 Handle<Object> Lookup(MapHandleList* maps, Code::Flags flags); 6791 Handle<Object> Lookup(MapHandleList* maps, Code::Flags flags);
6908 6792
6909 static inline PolymorphicCodeCache* cast(Object* obj); 6793 static inline PolymorphicCodeCache* cast(Object* obj);
6910 6794
6911 #ifdef OBJECT_PRINT 6795 // Dispatched behavior.
6912 inline void PolymorphicCodeCachePrint() { 6796 DECLARE_PRINTER(PolymorphicCodeCache)
6913 PolymorphicCodeCachePrint(stdout);
6914 }
6915 void PolymorphicCodeCachePrint(FILE* out);
6916 #endif
6917 DECLARE_VERIFIER(PolymorphicCodeCache) 6797 DECLARE_VERIFIER(PolymorphicCodeCache)
6918 6798
6919 static const int kCacheOffset = HeapObject::kHeaderSize; 6799 static const int kCacheOffset = HeapObject::kHeaderSize;
6920 static const int kSize = kCacheOffset + kPointerSize; 6800 static const int kSize = kCacheOffset + kPointerSize;
6921 6801
6922 private: 6802 private:
6923 DISALLOW_IMPLICIT_CONSTRUCTORS(PolymorphicCodeCache); 6803 DISALLOW_IMPLICIT_CONSTRUCTORS(PolymorphicCodeCache);
6924 }; 6804 };
6925 6805
6926 6806
(...skipping 27 matching lines...) Expand all
6954 inline void change_own_type_change_checksum(); 6834 inline void change_own_type_change_checksum();
6955 inline int own_type_change_checksum(); 6835 inline int own_type_change_checksum();
6956 6836
6957 inline void set_inlined_type_change_checksum(int checksum); 6837 inline void set_inlined_type_change_checksum(int checksum);
6958 inline bool matches_inlined_type_change_checksum(int checksum); 6838 inline bool matches_inlined_type_change_checksum(int checksum);
6959 6839
6960 DECL_ACCESSORS(type_feedback_cells, TypeFeedbackCells) 6840 DECL_ACCESSORS(type_feedback_cells, TypeFeedbackCells)
6961 6841
6962 static inline TypeFeedbackInfo* cast(Object* obj); 6842 static inline TypeFeedbackInfo* cast(Object* obj);
6963 6843
6964 #ifdef OBJECT_PRINT 6844 // Dispatched behavior.
6965 inline void TypeFeedbackInfoPrint() { 6845 DECLARE_PRINTER(TypeFeedbackInfo)
6966 TypeFeedbackInfoPrint(stdout);
6967 }
6968 void TypeFeedbackInfoPrint(FILE* out);
6969 #endif
6970 DECLARE_VERIFIER(TypeFeedbackInfo) 6846 DECLARE_VERIFIER(TypeFeedbackInfo)
6971 6847
6972 static const int kStorage1Offset = HeapObject::kHeaderSize; 6848 static const int kStorage1Offset = HeapObject::kHeaderSize;
6973 static const int kStorage2Offset = kStorage1Offset + kPointerSize; 6849 static const int kStorage2Offset = kStorage1Offset + kPointerSize;
6974 static const int kTypeFeedbackCellsOffset = kStorage2Offset + kPointerSize; 6850 static const int kTypeFeedbackCellsOffset = kStorage2Offset + kPointerSize;
6975 static const int kSize = kTypeFeedbackCellsOffset + kPointerSize; 6851 static const int kSize = kTypeFeedbackCellsOffset + kPointerSize;
6976 6852
6977 private: 6853 private:
6978 static const int kTypeChangeChecksumBits = 7; 6854 static const int kTypeChangeChecksumBits = 7;
6979 6855
(...skipping 20 matching lines...) Expand all
7000 // - the parameter map contains no fast alias mapping (i.e. the hole) 6876 // - the parameter map contains no fast alias mapping (i.e. the hole)
7001 // - this struct (in the slow backing store) contains an index into the context 6877 // - this struct (in the slow backing store) contains an index into the context
7002 // - all attributes are available as part if the property details 6878 // - all attributes are available as part if the property details
7003 class AliasedArgumentsEntry: public Struct { 6879 class AliasedArgumentsEntry: public Struct {
7004 public: 6880 public:
7005 inline int aliased_context_slot(); 6881 inline int aliased_context_slot();
7006 inline void set_aliased_context_slot(int count); 6882 inline void set_aliased_context_slot(int count);
7007 6883
7008 static inline AliasedArgumentsEntry* cast(Object* obj); 6884 static inline AliasedArgumentsEntry* cast(Object* obj);
7009 6885
7010 #ifdef OBJECT_PRINT 6886 // Dispatched behavior.
7011 inline void AliasedArgumentsEntryPrint() { 6887 DECLARE_PRINTER(AliasedArgumentsEntry)
7012 AliasedArgumentsEntryPrint(stdout);
7013 }
7014 void AliasedArgumentsEntryPrint(FILE* out);
7015 #endif
7016 DECLARE_VERIFIER(AliasedArgumentsEntry) 6888 DECLARE_VERIFIER(AliasedArgumentsEntry)
7017 6889
7018 static const int kAliasedContextSlot = HeapObject::kHeaderSize; 6890 static const int kAliasedContextSlot = HeapObject::kHeaderSize;
7019 static const int kSize = kAliasedContextSlot + kPointerSize; 6891 static const int kSize = kAliasedContextSlot + kPointerSize;
7020 6892
7021 private: 6893 private:
7022 DISALLOW_IMPLICIT_CONSTRUCTORS(AliasedArgumentsEntry); 6894 DISALLOW_IMPLICIT_CONSTRUCTORS(AliasedArgumentsEntry);
7023 }; 6895 };
7024 6896
7025 6897
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after
8114 static inline JSGlobalPropertyCell* cast(Object* obj); 7986 static inline JSGlobalPropertyCell* cast(Object* obj);
8115 7987
8116 static inline JSGlobalPropertyCell* FromValueAddress(Address value) { 7988 static inline JSGlobalPropertyCell* FromValueAddress(Address value) {
8117 return cast(FromAddress(value - kValueOffset)); 7989 return cast(FromAddress(value - kValueOffset));
8118 } 7990 }
8119 7991
8120 inline Address ValueAddress() { 7992 inline Address ValueAddress() {
8121 return address() + kValueOffset; 7993 return address() + kValueOffset;
8122 } 7994 }
8123 7995
7996 // Dispatched behavior.
7997 DECLARE_PRINTER(JSGlobalPropertyCell)
8124 DECLARE_VERIFIER(JSGlobalPropertyCell) 7998 DECLARE_VERIFIER(JSGlobalPropertyCell)
8125 7999
8126 #ifdef OBJECT_PRINT
8127 inline void JSGlobalPropertyCellPrint() {
8128 JSGlobalPropertyCellPrint(stdout);
8129 }
8130 void JSGlobalPropertyCellPrint(FILE* out);
8131 #endif
8132
8133 // Layout description. 8000 // Layout description.
8134 static const int kValueOffset = HeapObject::kHeaderSize; 8001 static const int kValueOffset = HeapObject::kHeaderSize;
8135 static const int kSize = kValueOffset + kPointerSize; 8002 static const int kSize = kValueOffset + kPointerSize;
8136 8003
8137 typedef FixedBodyDescriptor<kValueOffset, 8004 typedef FixedBodyDescriptor<kValueOffset,
8138 kValueOffset + kPointerSize, 8005 kValueOffset + kPointerSize,
8139 kSize> BodyDescriptor; 8006 kSize> BodyDescriptor;
8140 8007
8141 private: 8008 private:
8142 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalPropertyCell); 8009 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGlobalPropertyCell);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
8212 inline void InitializeBody(int object_size, Object* value); 8079 inline void InitializeBody(int object_size, Object* value);
8213 8080
8214 // Invoke a trap by name. If the trap does not exist on this's handler, 8081 // Invoke a trap by name. If the trap does not exist on this's handler,
8215 // but derived_trap is non-NULL, invoke that instead. May cause GC. 8082 // but derived_trap is non-NULL, invoke that instead. May cause GC.
8216 Handle<Object> CallTrap(const char* name, 8083 Handle<Object> CallTrap(const char* name,
8217 Handle<Object> derived_trap, 8084 Handle<Object> derived_trap,
8218 int argc, 8085 int argc,
8219 Handle<Object> args[]); 8086 Handle<Object> args[]);
8220 8087
8221 // Dispatched behavior. 8088 // Dispatched behavior.
8222 #ifdef OBJECT_PRINT 8089 DECLARE_PRINTER(JSProxy)
8223 inline void JSProxyPrint() {
8224 JSProxyPrint(stdout);
8225 }
8226 void JSProxyPrint(FILE* out);
8227 #endif
8228 DECLARE_VERIFIER(JSProxy) 8090 DECLARE_VERIFIER(JSProxy)
8229 8091
8230 // Layout description. We add padding so that a proxy has the same 8092 // Layout description. We add padding so that a proxy has the same
8231 // size as a virgin JSObject. This is essential for becoming a JSObject 8093 // size as a virgin JSObject. This is essential for becoming a JSObject
8232 // upon freeze. 8094 // upon freeze.
8233 static const int kHandlerOffset = HeapObject::kHeaderSize; 8095 static const int kHandlerOffset = HeapObject::kHeaderSize;
8234 static const int kHashOffset = kHandlerOffset + kPointerSize; 8096 static const int kHashOffset = kHandlerOffset + kPointerSize;
8235 static const int kPaddingOffset = kHashOffset + kPointerSize; 8097 static const int kPaddingOffset = kHashOffset + kPointerSize;
8236 static const int kSize = JSObject::kHeaderSize; 8098 static const int kSize = JSObject::kHeaderSize;
8237 static const int kHeaderSize = kPaddingOffset; 8099 static const int kHeaderSize = kPaddingOffset;
(...skipping 15 matching lines...) Expand all
8253 // [call_trap]: The call trap. 8115 // [call_trap]: The call trap.
8254 DECL_ACCESSORS(call_trap, Object) 8116 DECL_ACCESSORS(call_trap, Object)
8255 8117
8256 // [construct_trap]: The construct trap. 8118 // [construct_trap]: The construct trap.
8257 DECL_ACCESSORS(construct_trap, Object) 8119 DECL_ACCESSORS(construct_trap, Object)
8258 8120
8259 // Casting. 8121 // Casting.
8260 static inline JSFunctionProxy* cast(Object* obj); 8122 static inline JSFunctionProxy* cast(Object* obj);
8261 8123
8262 // Dispatched behavior. 8124 // Dispatched behavior.
8263 #ifdef OBJECT_PRINT 8125 DECLARE_PRINTER(JSFunctionProxy)
8264 inline void JSFunctionProxyPrint() {
8265 JSFunctionProxyPrint(stdout);
8266 }
8267 void JSFunctionProxyPrint(FILE* out);
8268 #endif
8269 DECLARE_VERIFIER(JSFunctionProxy) 8126 DECLARE_VERIFIER(JSFunctionProxy)
8270 8127
8271 // Layout description. 8128 // Layout description.
8272 static const int kCallTrapOffset = JSProxy::kPaddingOffset; 8129 static const int kCallTrapOffset = JSProxy::kPaddingOffset;
8273 static const int kConstructTrapOffset = kCallTrapOffset + kPointerSize; 8130 static const int kConstructTrapOffset = kCallTrapOffset + kPointerSize;
8274 static const int kPaddingOffset = kConstructTrapOffset + kPointerSize; 8131 static const int kPaddingOffset = kConstructTrapOffset + kPointerSize;
8275 static const int kSize = JSFunction::kSize; 8132 static const int kSize = JSFunction::kSize;
8276 static const int kPaddingSize = kSize - kPaddingOffset; 8133 static const int kPaddingSize = kSize - kPaddingOffset;
8277 8134
8278 STATIC_CHECK(kPaddingSize >= 0); 8135 STATIC_CHECK(kPaddingSize >= 0);
8279 8136
8280 typedef FixedBodyDescriptor<kHandlerOffset, 8137 typedef FixedBodyDescriptor<kHandlerOffset,
8281 kConstructTrapOffset + kPointerSize, 8138 kConstructTrapOffset + kPointerSize,
8282 kSize> BodyDescriptor; 8139 kSize> BodyDescriptor;
8283 8140
8284 private: 8141 private:
8285 DISALLOW_IMPLICIT_CONSTRUCTORS(JSFunctionProxy); 8142 DISALLOW_IMPLICIT_CONSTRUCTORS(JSFunctionProxy);
8286 }; 8143 };
8287 8144
8288 8145
8289 // The JSSet describes EcmaScript Harmony sets 8146 // The JSSet describes EcmaScript Harmony sets
8290 class JSSet: public JSObject { 8147 class JSSet: public JSObject {
8291 public: 8148 public:
8292 // [set]: the backing hash set containing keys. 8149 // [set]: the backing hash set containing keys.
8293 DECL_ACCESSORS(table, Object) 8150 DECL_ACCESSORS(table, Object)
8294 8151
8295 // Casting. 8152 // Casting.
8296 static inline JSSet* cast(Object* obj); 8153 static inline JSSet* cast(Object* obj);
8297 8154
8298 #ifdef OBJECT_PRINT 8155 // Dispatched behavior.
8299 inline void JSSetPrint() { 8156 DECLARE_PRINTER(JSSet)
8300 JSSetPrint(stdout);
8301 }
8302 void JSSetPrint(FILE* out);
8303 #endif
8304 DECLARE_VERIFIER(JSSet) 8157 DECLARE_VERIFIER(JSSet)
8305 8158
8306 static const int kTableOffset = JSObject::kHeaderSize; 8159 static const int kTableOffset = JSObject::kHeaderSize;
8307 static const int kSize = kTableOffset + kPointerSize; 8160 static const int kSize = kTableOffset + kPointerSize;
8308 8161
8309 private: 8162 private:
8310 DISALLOW_IMPLICIT_CONSTRUCTORS(JSSet); 8163 DISALLOW_IMPLICIT_CONSTRUCTORS(JSSet);
8311 }; 8164 };
8312 8165
8313 8166
8314 // The JSMap describes EcmaScript Harmony maps 8167 // The JSMap describes EcmaScript Harmony maps
8315 class JSMap: public JSObject { 8168 class JSMap: public JSObject {
8316 public: 8169 public:
8317 // [table]: the backing hash table mapping keys to values. 8170 // [table]: the backing hash table mapping keys to values.
8318 DECL_ACCESSORS(table, Object) 8171 DECL_ACCESSORS(table, Object)
8319 8172
8320 // Casting. 8173 // Casting.
8321 static inline JSMap* cast(Object* obj); 8174 static inline JSMap* cast(Object* obj);
8322 8175
8323 #ifdef OBJECT_PRINT 8176 // Dispatched behavior.
8324 inline void JSMapPrint() { 8177 DECLARE_PRINTER(JSMap)
8325 JSMapPrint(stdout);
8326 }
8327 void JSMapPrint(FILE* out);
8328 #endif
8329 DECLARE_VERIFIER(JSMap) 8178 DECLARE_VERIFIER(JSMap)
8330 8179
8331 static const int kTableOffset = JSObject::kHeaderSize; 8180 static const int kTableOffset = JSObject::kHeaderSize;
8332 static const int kSize = kTableOffset + kPointerSize; 8181 static const int kSize = kTableOffset + kPointerSize;
8333 8182
8334 private: 8183 private:
8335 DISALLOW_IMPLICIT_CONSTRUCTORS(JSMap); 8184 DISALLOW_IMPLICIT_CONSTRUCTORS(JSMap);
8336 }; 8185 };
8337 8186
8338 8187
8339 // The JSWeakMap describes EcmaScript Harmony weak maps 8188 // The JSWeakMap describes EcmaScript Harmony weak maps
8340 class JSWeakMap: public JSObject { 8189 class JSWeakMap: public JSObject {
8341 public: 8190 public:
8342 // [table]: the backing hash table mapping keys to values. 8191 // [table]: the backing hash table mapping keys to values.
8343 DECL_ACCESSORS(table, Object) 8192 DECL_ACCESSORS(table, Object)
8344 8193
8345 // [next]: linked list of encountered weak maps during GC. 8194 // [next]: linked list of encountered weak maps during GC.
8346 DECL_ACCESSORS(next, Object) 8195 DECL_ACCESSORS(next, Object)
8347 8196
8348 // Casting. 8197 // Casting.
8349 static inline JSWeakMap* cast(Object* obj); 8198 static inline JSWeakMap* cast(Object* obj);
8350 8199
8351 #ifdef OBJECT_PRINT 8200 // Dispatched behavior.
8352 inline void JSWeakMapPrint() { 8201 DECLARE_PRINTER(JSWeakMap)
8353 JSWeakMapPrint(stdout);
8354 }
8355 void JSWeakMapPrint(FILE* out);
8356 #endif
8357 DECLARE_VERIFIER(JSWeakMap) 8202 DECLARE_VERIFIER(JSWeakMap)
8358 8203
8359 static const int kTableOffset = JSObject::kHeaderSize; 8204 static const int kTableOffset = JSObject::kHeaderSize;
8360 static const int kNextOffset = kTableOffset + kPointerSize; 8205 static const int kNextOffset = kTableOffset + kPointerSize;
8361 static const int kSize = kNextOffset + kPointerSize; 8206 static const int kSize = kNextOffset + kPointerSize;
8362 8207
8363 private: 8208 private:
8364 DISALLOW_IMPLICIT_CONSTRUCTORS(JSWeakMap); 8209 DISALLOW_IMPLICIT_CONSTRUCTORS(JSWeakMap);
8365 }; 8210 };
8366 8211
8367 8212
8368 // Foreign describes objects pointing from JavaScript to C structures. 8213 // Foreign describes objects pointing from JavaScript to C structures.
8369 // Since they cannot contain references to JS HeapObjects they can be 8214 // Since they cannot contain references to JS HeapObjects they can be
8370 // placed in old_data_space. 8215 // placed in old_data_space.
8371 class Foreign: public HeapObject { 8216 class Foreign: public HeapObject {
8372 public: 8217 public:
8373 // [address]: field containing the address. 8218 // [address]: field containing the address.
8374 inline Address foreign_address(); 8219 inline Address foreign_address();
8375 inline void set_foreign_address(Address value); 8220 inline void set_foreign_address(Address value);
8376 8221
8377 // Casting. 8222 // Casting.
8378 static inline Foreign* cast(Object* obj); 8223 static inline Foreign* cast(Object* obj);
8379 8224
8380 // Dispatched behavior. 8225 // Dispatched behavior.
8381 inline void ForeignIterateBody(ObjectVisitor* v); 8226 inline void ForeignIterateBody(ObjectVisitor* v);
8382 8227
8383 template<typename StaticVisitor> 8228 template<typename StaticVisitor>
8384 inline void ForeignIterateBody(); 8229 inline void ForeignIterateBody();
8385 8230
8386 #ifdef OBJECT_PRINT 8231 // Dispatched behavior.
8387 inline void ForeignPrint() { 8232 DECLARE_PRINTER(Foreign)
8388 ForeignPrint(stdout);
8389 }
8390 void ForeignPrint(FILE* out);
8391 #endif
8392 DECLARE_VERIFIER(Foreign) 8233 DECLARE_VERIFIER(Foreign)
8393 8234
8394 // Layout description. 8235 // Layout description.
8395 8236
8396 static const int kForeignAddressOffset = HeapObject::kHeaderSize; 8237 static const int kForeignAddressOffset = HeapObject::kHeaderSize;
8397 static const int kSize = kForeignAddressOffset + kPointerSize; 8238 static const int kSize = kForeignAddressOffset + kPointerSize;
8398 8239
8399 STATIC_CHECK(kForeignAddressOffset == Internals::kForeignAddressOffset); 8240 STATIC_CHECK(kForeignAddressOffset == Internals::kForeignAddressOffset);
8400 8241
8401 private: 8242 private:
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
8434 MUST_USE_RESULT inline MaybeObject* SetContent(FixedArrayBase* storage); 8275 MUST_USE_RESULT inline MaybeObject* SetContent(FixedArrayBase* storage);
8435 8276
8436 // Casting. 8277 // Casting.
8437 static inline JSArray* cast(Object* obj); 8278 static inline JSArray* cast(Object* obj);
8438 8279
8439 // Uses handles. Ensures that the fixed array backing the JSArray has at 8280 // Uses handles. Ensures that the fixed array backing the JSArray has at
8440 // least the stated size. 8281 // least the stated size.
8441 inline void EnsureSize(int minimum_size_of_backing_fixed_array); 8282 inline void EnsureSize(int minimum_size_of_backing_fixed_array);
8442 8283
8443 // Dispatched behavior. 8284 // Dispatched behavior.
8444 #ifdef OBJECT_PRINT 8285 DECLARE_PRINTER(JSArray)
8445 inline void JSArrayPrint() {
8446 JSArrayPrint(stdout);
8447 }
8448 void JSArrayPrint(FILE* out);
8449 #endif
8450 DECLARE_VERIFIER(JSArray) 8286 DECLARE_VERIFIER(JSArray)
8451 8287
8452 // Number of element slots to pre-allocate for an empty array. 8288 // Number of element slots to pre-allocate for an empty array.
8453 static const int kPreallocatedArrayElements = 4; 8289 static const int kPreallocatedArrayElements = 4;
8454 8290
8455 // Layout description. 8291 // Layout description.
8456 static const int kLengthOffset = JSObject::kHeaderSize; 8292 static const int kLengthOffset = JSObject::kHeaderSize;
8457 static const int kSize = kLengthOffset + kPointerSize; 8293 static const int kSize = kLengthOffset + kPointerSize;
8458 8294
8459 private: 8295 private:
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
8513 inline void set_prohibits_overwriting(bool value); 8349 inline void set_prohibits_overwriting(bool value);
8514 8350
8515 inline PropertyAttributes property_attributes(); 8351 inline PropertyAttributes property_attributes();
8516 inline void set_property_attributes(PropertyAttributes attributes); 8352 inline void set_property_attributes(PropertyAttributes attributes);
8517 8353
8518 // Checks whether the given receiver is compatible with this accessor. 8354 // Checks whether the given receiver is compatible with this accessor.
8519 inline bool IsCompatibleReceiver(Object* receiver); 8355 inline bool IsCompatibleReceiver(Object* receiver);
8520 8356
8521 static inline AccessorInfo* cast(Object* obj); 8357 static inline AccessorInfo* cast(Object* obj);
8522 8358
8523 #ifdef OBJECT_PRINT 8359 // Dispatched behavior.
8524 inline void AccessorInfoPrint() { 8360 DECLARE_PRINTER(AccessorInfo)
8525 AccessorInfoPrint(stdout);
8526 }
8527 void AccessorInfoPrint(FILE* out);
8528 #endif
8529 DECLARE_VERIFIER(AccessorInfo) 8361 DECLARE_VERIFIER(AccessorInfo)
8530 8362
8531 static const int kGetterOffset = HeapObject::kHeaderSize; 8363 static const int kGetterOffset = HeapObject::kHeaderSize;
8532 static const int kSetterOffset = kGetterOffset + kPointerSize; 8364 static const int kSetterOffset = kGetterOffset + kPointerSize;
8533 static const int kDataOffset = kSetterOffset + kPointerSize; 8365 static const int kDataOffset = kSetterOffset + kPointerSize;
8534 static const int kNameOffset = kDataOffset + kPointerSize; 8366 static const int kNameOffset = kDataOffset + kPointerSize;
8535 static const int kFlagOffset = kNameOffset + kPointerSize; 8367 static const int kFlagOffset = kNameOffset + kPointerSize;
8536 static const int kExpectedReceiverTypeOffset = kFlagOffset + kPointerSize; 8368 static const int kExpectedReceiverTypeOffset = kFlagOffset + kPointerSize;
8537 static const int kSize = kExpectedReceiverTypeOffset + kPointerSize; 8369 static const int kSize = kExpectedReceiverTypeOffset + kPointerSize;
8538 8370
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
8580 // Set both components, skipping arguments which are a JavaScript null. 8412 // Set both components, skipping arguments which are a JavaScript null.
8581 void SetComponents(Object* getter, Object* setter) { 8413 void SetComponents(Object* getter, Object* setter) {
8582 if (!getter->IsNull()) set_getter(getter); 8414 if (!getter->IsNull()) set_getter(getter);
8583 if (!setter->IsNull()) set_setter(setter); 8415 if (!setter->IsNull()) set_setter(setter);
8584 } 8416 }
8585 8417
8586 bool ContainsAccessor() { 8418 bool ContainsAccessor() {
8587 return IsJSAccessor(getter()) || IsJSAccessor(setter()); 8419 return IsJSAccessor(getter()) || IsJSAccessor(setter());
8588 } 8420 }
8589 8421
8590 #ifdef OBJECT_PRINT 8422 // Dispatched behavior.
8591 void AccessorPairPrint(FILE* out = stdout); 8423 DECLARE_PRINTER(AccessorPair)
8592 #endif
8593 DECLARE_VERIFIER(AccessorPair) 8424 DECLARE_VERIFIER(AccessorPair)
8594 8425
8595 static const int kGetterOffset = HeapObject::kHeaderSize; 8426 static const int kGetterOffset = HeapObject::kHeaderSize;
8596 static const int kSetterOffset = kGetterOffset + kPointerSize; 8427 static const int kSetterOffset = kGetterOffset + kPointerSize;
8597 static const int kSize = kSetterOffset + kPointerSize; 8428 static const int kSize = kSetterOffset + kPointerSize;
8598 8429
8599 private: 8430 private:
8600 // Strangely enough, in addition to functions and harmony proxies, the spec 8431 // Strangely enough, in addition to functions and harmony proxies, the spec
8601 // requires us to consider undefined as a kind of accessor, too: 8432 // requires us to consider undefined as a kind of accessor, too:
8602 // var obj = {}; 8433 // var obj = {};
8603 // Object.defineProperty(obj, "foo", {get: undefined}); 8434 // Object.defineProperty(obj, "foo", {get: undefined});
8604 // assertTrue("foo" in obj); 8435 // assertTrue("foo" in obj);
8605 bool IsJSAccessor(Object* obj) { 8436 bool IsJSAccessor(Object* obj) {
8606 return obj->IsSpecFunction() || obj->IsUndefined(); 8437 return obj->IsSpecFunction() || obj->IsUndefined();
8607 } 8438 }
8608 8439
8609 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorPair); 8440 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorPair);
8610 }; 8441 };
8611 8442
8612 8443
8613 class AccessCheckInfo: public Struct { 8444 class AccessCheckInfo: public Struct {
8614 public: 8445 public:
8615 DECL_ACCESSORS(named_callback, Object) 8446 DECL_ACCESSORS(named_callback, Object)
8616 DECL_ACCESSORS(indexed_callback, Object) 8447 DECL_ACCESSORS(indexed_callback, Object)
8617 DECL_ACCESSORS(data, Object) 8448 DECL_ACCESSORS(data, Object)
8618 8449
8619 static inline AccessCheckInfo* cast(Object* obj); 8450 static inline AccessCheckInfo* cast(Object* obj);
8620 8451
8621 #ifdef OBJECT_PRINT 8452 // Dispatched behavior.
8622 inline void AccessCheckInfoPrint() { 8453 DECLARE_PRINTER(AccessCheckInfo)
8623 AccessCheckInfoPrint(stdout);
8624 }
8625 void AccessCheckInfoPrint(FILE* out);
8626 #endif
8627 DECLARE_VERIFIER(AccessCheckInfo) 8454 DECLARE_VERIFIER(AccessCheckInfo)
8628 8455
8629 static const int kNamedCallbackOffset = HeapObject::kHeaderSize; 8456 static const int kNamedCallbackOffset = HeapObject::kHeaderSize;
8630 static const int kIndexedCallbackOffset = kNamedCallbackOffset + kPointerSize; 8457 static const int kIndexedCallbackOffset = kNamedCallbackOffset + kPointerSize;
8631 static const int kDataOffset = kIndexedCallbackOffset + kPointerSize; 8458 static const int kDataOffset = kIndexedCallbackOffset + kPointerSize;
8632 static const int kSize = kDataOffset + kPointerSize; 8459 static const int kSize = kDataOffset + kPointerSize;
8633 8460
8634 private: 8461 private:
8635 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessCheckInfo); 8462 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessCheckInfo);
8636 }; 8463 };
8637 8464
8638 8465
8639 class InterceptorInfo: public Struct { 8466 class InterceptorInfo: public Struct {
8640 public: 8467 public:
8641 DECL_ACCESSORS(getter, Object) 8468 DECL_ACCESSORS(getter, Object)
8642 DECL_ACCESSORS(setter, Object) 8469 DECL_ACCESSORS(setter, Object)
8643 DECL_ACCESSORS(query, Object) 8470 DECL_ACCESSORS(query, Object)
8644 DECL_ACCESSORS(deleter, Object) 8471 DECL_ACCESSORS(deleter, Object)
8645 DECL_ACCESSORS(enumerator, Object) 8472 DECL_ACCESSORS(enumerator, Object)
8646 DECL_ACCESSORS(data, Object) 8473 DECL_ACCESSORS(data, Object)
8647 8474
8648 static inline InterceptorInfo* cast(Object* obj); 8475 static inline InterceptorInfo* cast(Object* obj);
8649 8476
8650 #ifdef OBJECT_PRINT 8477 // Dispatched behavior.
8651 inline void InterceptorInfoPrint() { 8478 DECLARE_PRINTER(InterceptorInfo)
8652 InterceptorInfoPrint(stdout);
8653 }
8654 void InterceptorInfoPrint(FILE* out);
8655 #endif
8656 DECLARE_VERIFIER(InterceptorInfo) 8479 DECLARE_VERIFIER(InterceptorInfo)
8657 8480
8658 static const int kGetterOffset = HeapObject::kHeaderSize; 8481 static const int kGetterOffset = HeapObject::kHeaderSize;
8659 static const int kSetterOffset = kGetterOffset + kPointerSize; 8482 static const int kSetterOffset = kGetterOffset + kPointerSize;
8660 static const int kQueryOffset = kSetterOffset + kPointerSize; 8483 static const int kQueryOffset = kSetterOffset + kPointerSize;
8661 static const int kDeleterOffset = kQueryOffset + kPointerSize; 8484 static const int kDeleterOffset = kQueryOffset + kPointerSize;
8662 static const int kEnumeratorOffset = kDeleterOffset + kPointerSize; 8485 static const int kEnumeratorOffset = kDeleterOffset + kPointerSize;
8663 static const int kDataOffset = kEnumeratorOffset + kPointerSize; 8486 static const int kDataOffset = kEnumeratorOffset + kPointerSize;
8664 static const int kSize = kDataOffset + kPointerSize; 8487 static const int kSize = kDataOffset + kPointerSize;
8665 8488
8666 private: 8489 private:
8667 DISALLOW_IMPLICIT_CONSTRUCTORS(InterceptorInfo); 8490 DISALLOW_IMPLICIT_CONSTRUCTORS(InterceptorInfo);
8668 }; 8491 };
8669 8492
8670 8493
8671 class CallHandlerInfo: public Struct { 8494 class CallHandlerInfo: public Struct {
8672 public: 8495 public:
8673 DECL_ACCESSORS(callback, Object) 8496 DECL_ACCESSORS(callback, Object)
8674 DECL_ACCESSORS(data, Object) 8497 DECL_ACCESSORS(data, Object)
8675 8498
8676 static inline CallHandlerInfo* cast(Object* obj); 8499 static inline CallHandlerInfo* cast(Object* obj);
8677 8500
8678 #ifdef OBJECT_PRINT 8501 // Dispatched behavior.
8679 inline void CallHandlerInfoPrint() { 8502 DECLARE_PRINTER(CallHandlerInfo)
8680 CallHandlerInfoPrint(stdout);
8681 }
8682 void CallHandlerInfoPrint(FILE* out);
8683 #endif
8684 DECLARE_VERIFIER(CallHandlerInfo) 8503 DECLARE_VERIFIER(CallHandlerInfo)
8685 8504
8686 static const int kCallbackOffset = HeapObject::kHeaderSize; 8505 static const int kCallbackOffset = HeapObject::kHeaderSize;
8687 static const int kDataOffset = kCallbackOffset + kPointerSize; 8506 static const int kDataOffset = kCallbackOffset + kPointerSize;
8688 static const int kSize = kDataOffset + kPointerSize; 8507 static const int kSize = kDataOffset + kPointerSize;
8689 8508
8690 private: 8509 private:
8691 DISALLOW_IMPLICIT_CONSTRUCTORS(CallHandlerInfo); 8510 DISALLOW_IMPLICIT_CONSTRUCTORS(CallHandlerInfo);
8692 }; 8511 };
8693 8512
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8727 // Following properties use flag bits. 8546 // Following properties use flag bits.
8728 DECL_BOOLEAN_ACCESSORS(hidden_prototype) 8547 DECL_BOOLEAN_ACCESSORS(hidden_prototype)
8729 DECL_BOOLEAN_ACCESSORS(undetectable) 8548 DECL_BOOLEAN_ACCESSORS(undetectable)
8730 // If the bit is set, object instances created by this function 8549 // If the bit is set, object instances created by this function
8731 // requires access check. 8550 // requires access check.
8732 DECL_BOOLEAN_ACCESSORS(needs_access_check) 8551 DECL_BOOLEAN_ACCESSORS(needs_access_check)
8733 DECL_BOOLEAN_ACCESSORS(read_only_prototype) 8552 DECL_BOOLEAN_ACCESSORS(read_only_prototype)
8734 8553
8735 static inline FunctionTemplateInfo* cast(Object* obj); 8554 static inline FunctionTemplateInfo* cast(Object* obj);
8736 8555
8737 #ifdef OBJECT_PRINT 8556 // Dispatched behavior.
8738 inline void FunctionTemplateInfoPrint() { 8557 DECLARE_PRINTER(FunctionTemplateInfo)
8739 FunctionTemplateInfoPrint(stdout);
8740 }
8741 void FunctionTemplateInfoPrint(FILE* out);
8742 #endif
8743 DECLARE_VERIFIER(FunctionTemplateInfo) 8558 DECLARE_VERIFIER(FunctionTemplateInfo)
8744 8559
8745 static const int kSerialNumberOffset = TemplateInfo::kHeaderSize; 8560 static const int kSerialNumberOffset = TemplateInfo::kHeaderSize;
8746 static const int kCallCodeOffset = kSerialNumberOffset + kPointerSize; 8561 static const int kCallCodeOffset = kSerialNumberOffset + kPointerSize;
8747 static const int kPropertyAccessorsOffset = kCallCodeOffset + kPointerSize; 8562 static const int kPropertyAccessorsOffset = kCallCodeOffset + kPointerSize;
8748 static const int kPrototypeTemplateOffset = 8563 static const int kPrototypeTemplateOffset =
8749 kPropertyAccessorsOffset + kPointerSize; 8564 kPropertyAccessorsOffset + kPointerSize;
8750 static const int kParentTemplateOffset = 8565 static const int kParentTemplateOffset =
8751 kPrototypeTemplateOffset + kPointerSize; 8566 kPrototypeTemplateOffset + kPointerSize;
8752 static const int kNamedPropertyHandlerOffset = 8567 static const int kNamedPropertyHandlerOffset =
(...skipping 21 matching lines...) Expand all
8774 }; 8589 };
8775 8590
8776 8591
8777 class ObjectTemplateInfo: public TemplateInfo { 8592 class ObjectTemplateInfo: public TemplateInfo {
8778 public: 8593 public:
8779 DECL_ACCESSORS(constructor, Object) 8594 DECL_ACCESSORS(constructor, Object)
8780 DECL_ACCESSORS(internal_field_count, Object) 8595 DECL_ACCESSORS(internal_field_count, Object)
8781 8596
8782 static inline ObjectTemplateInfo* cast(Object* obj); 8597 static inline ObjectTemplateInfo* cast(Object* obj);
8783 8598
8784 #ifdef OBJECT_PRINT 8599 // Dispatched behavior.
8785 inline void ObjectTemplateInfoPrint() { 8600 DECLARE_PRINTER(ObjectTemplateInfo)
8786 ObjectTemplateInfoPrint(stdout);
8787 }
8788 void ObjectTemplateInfoPrint(FILE* out);
8789 #endif
8790 DECLARE_VERIFIER(ObjectTemplateInfo) 8601 DECLARE_VERIFIER(ObjectTemplateInfo)
8791 8602
8792 static const int kConstructorOffset = TemplateInfo::kHeaderSize; 8603 static const int kConstructorOffset = TemplateInfo::kHeaderSize;
8793 static const int kInternalFieldCountOffset = 8604 static const int kInternalFieldCountOffset =
8794 kConstructorOffset + kPointerSize; 8605 kConstructorOffset + kPointerSize;
8795 static const int kSize = kInternalFieldCountOffset + kPointerSize; 8606 static const int kSize = kInternalFieldCountOffset + kPointerSize;
8796 }; 8607 };
8797 8608
8798 8609
8799 class SignatureInfo: public Struct { 8610 class SignatureInfo: public Struct {
8800 public: 8611 public:
8801 DECL_ACCESSORS(receiver, Object) 8612 DECL_ACCESSORS(receiver, Object)
8802 DECL_ACCESSORS(args, Object) 8613 DECL_ACCESSORS(args, Object)
8803 8614
8804 static inline SignatureInfo* cast(Object* obj); 8615 static inline SignatureInfo* cast(Object* obj);
8805 8616
8806 #ifdef OBJECT_PRINT 8617 // Dispatched behavior.
8807 inline void SignatureInfoPrint() { 8618 DECLARE_PRINTER(SignatureInfo)
8808 SignatureInfoPrint(stdout);
8809 }
8810 void SignatureInfoPrint(FILE* out);
8811 #endif
8812 DECLARE_VERIFIER(SignatureInfo) 8619 DECLARE_VERIFIER(SignatureInfo)
8813 8620
8814 static const int kReceiverOffset = Struct::kHeaderSize; 8621 static const int kReceiverOffset = Struct::kHeaderSize;
8815 static const int kArgsOffset = kReceiverOffset + kPointerSize; 8622 static const int kArgsOffset = kReceiverOffset + kPointerSize;
8816 static const int kSize = kArgsOffset + kPointerSize; 8623 static const int kSize = kArgsOffset + kPointerSize;
8817 8624
8818 private: 8625 private:
8819 DISALLOW_IMPLICIT_CONSTRUCTORS(SignatureInfo); 8626 DISALLOW_IMPLICIT_CONSTRUCTORS(SignatureInfo);
8820 }; 8627 };
8821 8628
8822 8629
8823 class TypeSwitchInfo: public Struct { 8630 class TypeSwitchInfo: public Struct {
8824 public: 8631 public:
8825 DECL_ACCESSORS(types, Object) 8632 DECL_ACCESSORS(types, Object)
8826 8633
8827 static inline TypeSwitchInfo* cast(Object* obj); 8634 static inline TypeSwitchInfo* cast(Object* obj);
8828 8635
8829 #ifdef OBJECT_PRINT 8636 // Dispatched behavior.
8830 inline void TypeSwitchInfoPrint() { 8637 DECLARE_PRINTER(TypeSwitchInfo)
8831 TypeSwitchInfoPrint(stdout);
8832 }
8833 void TypeSwitchInfoPrint(FILE* out);
8834 #endif
8835 DECLARE_VERIFIER(TypeSwitchInfo) 8638 DECLARE_VERIFIER(TypeSwitchInfo)
8836 8639
8837 static const int kTypesOffset = Struct::kHeaderSize; 8640 static const int kTypesOffset = Struct::kHeaderSize;
8838 static const int kSize = kTypesOffset + kPointerSize; 8641 static const int kSize = kTypesOffset + kPointerSize;
8839 }; 8642 };
8840 8643
8841 8644
8842 #ifdef ENABLE_DEBUGGER_SUPPORT 8645 #ifdef ENABLE_DEBUGGER_SUPPORT
8843 // The DebugInfo class holds additional information for a function being 8646 // The DebugInfo class holds additional information for a function being
8844 // debugged. 8647 // debugged.
(...skipping 24 matching lines...) Expand all
8869 // Get the break point objects for a code position. 8672 // Get the break point objects for a code position.
8870 Object* GetBreakPointObjects(int code_position); 8673 Object* GetBreakPointObjects(int code_position);
8871 // Find the break point info holding this break point object. 8674 // Find the break point info holding this break point object.
8872 static Object* FindBreakPointInfo(Handle<DebugInfo> debug_info, 8675 static Object* FindBreakPointInfo(Handle<DebugInfo> debug_info,
8873 Handle<Object> break_point_object); 8676 Handle<Object> break_point_object);
8874 // Get the number of break points for this function. 8677 // Get the number of break points for this function.
8875 int GetBreakPointCount(); 8678 int GetBreakPointCount();
8876 8679
8877 static inline DebugInfo* cast(Object* obj); 8680 static inline DebugInfo* cast(Object* obj);
8878 8681
8879 #ifdef OBJECT_PRINT 8682 // Dispatched behavior.
8880 inline void DebugInfoPrint() { 8683 DECLARE_PRINTER(DebugInfo)
8881 DebugInfoPrint(stdout);
8882 }
8883 void DebugInfoPrint(FILE* out);
8884 #endif
8885 DECLARE_VERIFIER(DebugInfo) 8684 DECLARE_VERIFIER(DebugInfo)
8886 8685
8887 static const int kSharedFunctionInfoIndex = Struct::kHeaderSize; 8686 static const int kSharedFunctionInfoIndex = Struct::kHeaderSize;
8888 static const int kOriginalCodeIndex = kSharedFunctionInfoIndex + kPointerSize; 8687 static const int kOriginalCodeIndex = kSharedFunctionInfoIndex + kPointerSize;
8889 static const int kPatchedCodeIndex = kOriginalCodeIndex + kPointerSize; 8688 static const int kPatchedCodeIndex = kOriginalCodeIndex + kPointerSize;
8890 static const int kActiveBreakPointsCountIndex = 8689 static const int kActiveBreakPointsCountIndex =
8891 kPatchedCodeIndex + kPointerSize; 8690 kPatchedCodeIndex + kPointerSize;
8892 static const int kBreakPointsStateIndex = 8691 static const int kBreakPointsStateIndex =
8893 kActiveBreakPointsCountIndex + kPointerSize; 8692 kActiveBreakPointsCountIndex + kPointerSize;
8894 static const int kSize = kBreakPointsStateIndex + kPointerSize; 8693 static const int kSize = kBreakPointsStateIndex + kPointerSize;
(...skipping 30 matching lines...) Expand all
8925 static void SetBreakPoint(Handle<BreakPointInfo> info, 8724 static void SetBreakPoint(Handle<BreakPointInfo> info,
8926 Handle<Object> break_point_object); 8725 Handle<Object> break_point_object);
8927 // Check if break point info has this break point object. 8726 // Check if break point info has this break point object.
8928 static bool HasBreakPointObject(Handle<BreakPointInfo> info, 8727 static bool HasBreakPointObject(Handle<BreakPointInfo> info,
8929 Handle<Object> break_point_object); 8728 Handle<Object> break_point_object);
8930 // Get the number of break points for this code position. 8729 // Get the number of break points for this code position.
8931 int GetBreakPointCount(); 8730 int GetBreakPointCount();
8932 8731
8933 static inline BreakPointInfo* cast(Object* obj); 8732 static inline BreakPointInfo* cast(Object* obj);
8934 8733
8935 #ifdef OBJECT_PRINT 8734 // Dispatched behavior.
8936 inline void BreakPointInfoPrint() { 8735 DECLARE_PRINTER(BreakPointInfo)
8937 BreakPointInfoPrint(stdout);
8938 }
8939 void BreakPointInfoPrint(FILE* out);
8940 #endif
8941 DECLARE_VERIFIER(BreakPointInfo) 8736 DECLARE_VERIFIER(BreakPointInfo)
8942 8737
8943 static const int kCodePositionIndex = Struct::kHeaderSize; 8738 static const int kCodePositionIndex = Struct::kHeaderSize;
8944 static const int kSourcePositionIndex = kCodePositionIndex + kPointerSize; 8739 static const int kSourcePositionIndex = kCodePositionIndex + kPointerSize;
8945 static const int kStatementPositionIndex = 8740 static const int kStatementPositionIndex =
8946 kSourcePositionIndex + kPointerSize; 8741 kSourcePositionIndex + kPointerSize;
8947 static const int kBreakPointObjectsIndex = 8742 static const int kBreakPointObjectsIndex =
8948 kStatementPositionIndex + kPointerSize; 8743 kStatementPositionIndex + kPointerSize;
8949 static const int kSize = kBreakPointObjectsIndex + kPointerSize; 8744 static const int kSize = kBreakPointObjectsIndex + kPointerSize;
8950 8745
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
9083 } else { 8878 } else {
9084 value &= ~(1 << bit_position); 8879 value &= ~(1 << bit_position);
9085 } 8880 }
9086 return value; 8881 return value;
9087 } 8882 }
9088 }; 8883 };
9089 8884
9090 } } // namespace v8::internal 8885 } } // namespace v8::internal
9091 8886
9092 #endif // V8_OBJECTS_H_ 8887 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698