OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // Review notes: | 5 // Review notes: |
6 // | 6 // |
7 // - The use of macros in these inline functions may seem superfluous | 7 // - The use of macros in these inline functions may seem superfluous |
8 // but it is absolutely needed to make sure gcc generates optimal | 8 // but it is absolutely needed to make sure gcc generates optimal |
9 // code. gcc is not happy when attempting to inline too deep. | 9 // code. gcc is not happy when attempting to inline too deep. |
10 // | 10 // |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 } | 53 } |
54 | 54 |
55 | 55 |
56 #define TYPE_CHECKER(type, instancetype) \ | 56 #define TYPE_CHECKER(type, instancetype) \ |
57 bool Object::Is##type() { \ | 57 bool Object::Is##type() { \ |
58 return Object::IsHeapObject() && \ | 58 return Object::IsHeapObject() && \ |
59 HeapObject::cast(this)->map()->instance_type() == instancetype; \ | 59 HeapObject::cast(this)->map()->instance_type() == instancetype; \ |
60 } | 60 } |
61 | 61 |
62 | 62 |
63 #define CAST_ACCESSOR(type) \ | 63 // TODO(svenpanne) We use const_cast here and at a few other places to break our |
64 type* type::cast(Object* object) { \ | 64 // dependency cycle between the cast methods and the predicates. This can be |
65 SLOW_ASSERT(object->Is##type()); \ | 65 // removed when the predicates are const-correct, too. |
66 return reinterpret_cast<type*>(object); \ | 66 #define CAST_ACCESSOR(type) \ |
| 67 type* type::cast(Object* object) { \ |
| 68 SLOW_ASSERT(object->Is##type()); \ |
| 69 return reinterpret_cast<type*>(object); \ |
| 70 } \ |
| 71 const type* type::cast(const Object* object) { \ |
| 72 SLOW_ASSERT(const_cast<Object*>(object)->Is##type()); \ |
| 73 return reinterpret_cast<const type*>(object); \ |
67 } | 74 } |
68 | 75 |
69 | 76 |
70 #define INT_ACCESSORS(holder, name, offset) \ | 77 #define INT_ACCESSORS(holder, name, offset) \ |
71 int holder::name() const { return READ_INT_FIELD(this, offset); } \ | 78 int holder::name() const { return READ_INT_FIELD(this, offset); } \ |
72 void holder::set_##name(int value) { WRITE_INT_FIELD(this, offset, value); } | 79 void holder::set_##name(int value) { WRITE_INT_FIELD(this, offset, value); } |
73 | 80 |
74 | 81 |
75 #define ACCESSORS(holder, name, type, offset) \ | 82 #define ACCESSORS(holder, name, type, offset) \ |
76 type* holder::name() const { return type::cast(READ_FIELD(this, offset)); } \ | 83 type* holder::name() const { return type::cast(READ_FIELD(this, offset)); } \ |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
814 } | 821 } |
815 | 822 |
816 | 823 |
817 bool Object::IsHashTable() { | 824 bool Object::IsHashTable() { |
818 return Object::IsHeapObject() && | 825 return Object::IsHeapObject() && |
819 HeapObject::cast(this)->map() == | 826 HeapObject::cast(this)->map() == |
820 HeapObject::cast(this)->GetHeap()->hash_table_map(); | 827 HeapObject::cast(this)->GetHeap()->hash_table_map(); |
821 } | 828 } |
822 | 829 |
823 | 830 |
| 831 bool Object::IsWeakHashTable() { |
| 832 return IsHashTable(); |
| 833 } |
| 834 |
| 835 |
824 bool Object::IsDictionary() { | 836 bool Object::IsDictionary() { |
825 return IsHashTable() && | 837 return IsHashTable() && |
826 this != HeapObject::cast(this)->GetHeap()->string_table(); | 838 this != HeapObject::cast(this)->GetHeap()->string_table(); |
827 } | 839 } |
828 | 840 |
829 | 841 |
| 842 bool Object::IsNameDictionary() { |
| 843 return IsDictionary(); |
| 844 } |
| 845 |
| 846 |
| 847 bool Object::IsSeededNumberDictionary() { |
| 848 return IsDictionary(); |
| 849 } |
| 850 |
| 851 |
| 852 bool Object::IsUnseededNumberDictionary() { |
| 853 return IsDictionary(); |
| 854 } |
| 855 |
| 856 |
830 bool Object::IsStringTable() { | 857 bool Object::IsStringTable() { |
831 return IsHashTable(); | 858 return IsHashTable(); |
832 } | 859 } |
833 | 860 |
834 | 861 |
835 bool Object::IsJSFunctionResultCache() { | 862 bool Object::IsJSFunctionResultCache() { |
836 if (!IsFixedArray()) return false; | 863 if (!IsFixedArray()) return false; |
837 FixedArray* self = FixedArray::cast(this); | 864 FixedArray* self = FixedArray::cast(this); |
838 int length = self->length(); | 865 int length = self->length(); |
839 if (length < JSFunctionResultCache::kEntriesIndex) return false; | 866 if (length < JSFunctionResultCache::kEntriesIndex) return false; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
900 } | 927 } |
901 | 928 |
902 | 929 |
903 bool Object::IsOrderedHashTable() { | 930 bool Object::IsOrderedHashTable() { |
904 return IsHeapObject() && | 931 return IsHeapObject() && |
905 HeapObject::cast(this)->map() == | 932 HeapObject::cast(this)->map() == |
906 HeapObject::cast(this)->GetHeap()->ordered_hash_table_map(); | 933 HeapObject::cast(this)->GetHeap()->ordered_hash_table_map(); |
907 } | 934 } |
908 | 935 |
909 | 936 |
| 937 bool Object::IsOrderedHashSet() { |
| 938 return IsOrderedHashTable(); |
| 939 } |
| 940 |
| 941 |
| 942 bool Object::IsOrderedHashMap() { |
| 943 return IsOrderedHashTable(); |
| 944 } |
| 945 |
| 946 |
910 bool Object::IsPrimitive() { | 947 bool Object::IsPrimitive() { |
911 return IsOddball() || IsNumber() || IsString(); | 948 return IsOddball() || IsNumber() || IsString(); |
912 } | 949 } |
913 | 950 |
914 | 951 |
915 bool Object::IsJSGlobalProxy() { | 952 bool Object::IsJSGlobalProxy() { |
916 bool result = IsHeapObject() && | 953 bool result = IsHeapObject() && |
917 (HeapObject::cast(this)->map()->instance_type() == | 954 (HeapObject::cast(this)->map()->instance_type() == |
918 JS_GLOBAL_PROXY_TYPE); | 955 JS_GLOBAL_PROXY_TYPE); |
919 ASSERT(!result || | 956 ASSERT(!result || |
(...skipping 1174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2094 IsUndefined() || | 2131 IsUndefined() || |
2095 IsTrue() || | 2132 IsTrue() || |
2096 IsFalse() || | 2133 IsFalse() || |
2097 IsNull())) { | 2134 IsNull())) { |
2098 FATAL("API call returned invalid object"); | 2135 FATAL("API call returned invalid object"); |
2099 } | 2136 } |
2100 #endif // ENABLE_EXTRA_CHECKS | 2137 #endif // ENABLE_EXTRA_CHECKS |
2101 } | 2138 } |
2102 | 2139 |
2103 | 2140 |
2104 FixedArrayBase* FixedArrayBase::cast(Object* object) { | |
2105 ASSERT(object->IsFixedArrayBase()); | |
2106 return reinterpret_cast<FixedArrayBase*>(object); | |
2107 } | |
2108 | |
2109 | |
2110 Object* FixedArray::get(int index) { | 2141 Object* FixedArray::get(int index) { |
2111 SLOW_ASSERT(index >= 0 && index < this->length()); | 2142 SLOW_ASSERT(index >= 0 && index < this->length()); |
2112 return READ_FIELD(this, kHeaderSize + index * kPointerSize); | 2143 return READ_FIELD(this, kHeaderSize + index * kPointerSize); |
2113 } | 2144 } |
2114 | 2145 |
2115 | 2146 |
2116 Handle<Object> FixedArray::get(Handle<FixedArray> array, int index) { | 2147 Handle<Object> FixedArray::get(Handle<FixedArray> array, int index) { |
2117 return handle(array->get(index), array->GetIsolate()); | 2148 return handle(array->get(index), array->GetIsolate()); |
2118 } | 2149 } |
2119 | 2150 |
(...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3009 | 3040 |
3010 void SeededNumberDictionary::set_requires_slow_elements() { | 3041 void SeededNumberDictionary::set_requires_slow_elements() { |
3011 set(kMaxNumberKeyIndex, Smi::FromInt(kRequiresSlowElementsMask)); | 3042 set(kMaxNumberKeyIndex, Smi::FromInt(kRequiresSlowElementsMask)); |
3012 } | 3043 } |
3013 | 3044 |
3014 | 3045 |
3015 // ------------------------------------ | 3046 // ------------------------------------ |
3016 // Cast operations | 3047 // Cast operations |
3017 | 3048 |
3018 | 3049 |
3019 CAST_ACCESSOR(FixedArray) | 3050 CAST_ACCESSOR(AccessorInfo) |
3020 CAST_ACCESSOR(FixedDoubleArray) | 3051 CAST_ACCESSOR(ByteArray) |
3021 CAST_ACCESSOR(FixedTypedArrayBase) | 3052 CAST_ACCESSOR(Cell) |
| 3053 CAST_ACCESSOR(Code) |
| 3054 CAST_ACCESSOR(CodeCacheHashTable) |
| 3055 CAST_ACCESSOR(CompilationCacheTable) |
| 3056 CAST_ACCESSOR(ConsString) |
3022 CAST_ACCESSOR(ConstantPoolArray) | 3057 CAST_ACCESSOR(ConstantPoolArray) |
3023 CAST_ACCESSOR(DescriptorArray) | |
3024 CAST_ACCESSOR(DeoptimizationInputData) | 3058 CAST_ACCESSOR(DeoptimizationInputData) |
3025 CAST_ACCESSOR(DeoptimizationOutputData) | 3059 CAST_ACCESSOR(DeoptimizationOutputData) |
3026 CAST_ACCESSOR(DependentCode) | 3060 CAST_ACCESSOR(DependentCode) |
3027 CAST_ACCESSOR(StringTable) | 3061 CAST_ACCESSOR(DescriptorArray) |
3028 CAST_ACCESSOR(JSFunctionResultCache) | 3062 CAST_ACCESSOR(ExternalArray) |
3029 CAST_ACCESSOR(NormalizedMapCache) | 3063 CAST_ACCESSOR(ExternalAsciiString) |
3030 CAST_ACCESSOR(ScopeInfo) | 3064 CAST_ACCESSOR(ExternalFloat32Array) |
3031 CAST_ACCESSOR(CompilationCacheTable) | 3065 CAST_ACCESSOR(ExternalFloat64Array) |
3032 CAST_ACCESSOR(CodeCacheHashTable) | 3066 CAST_ACCESSOR(ExternalInt16Array) |
3033 CAST_ACCESSOR(PolymorphicCodeCacheHashTable) | 3067 CAST_ACCESSOR(ExternalInt32Array) |
3034 CAST_ACCESSOR(MapCache) | 3068 CAST_ACCESSOR(ExternalInt8Array) |
3035 CAST_ACCESSOR(String) | |
3036 CAST_ACCESSOR(SeqString) | |
3037 CAST_ACCESSOR(SeqOneByteString) | |
3038 CAST_ACCESSOR(SeqTwoByteString) | |
3039 CAST_ACCESSOR(SlicedString) | |
3040 CAST_ACCESSOR(ConsString) | |
3041 CAST_ACCESSOR(ExternalString) | 3069 CAST_ACCESSOR(ExternalString) |
3042 CAST_ACCESSOR(ExternalAsciiString) | |
3043 CAST_ACCESSOR(ExternalTwoByteString) | 3070 CAST_ACCESSOR(ExternalTwoByteString) |
3044 CAST_ACCESSOR(Symbol) | 3071 CAST_ACCESSOR(ExternalUint16Array) |
3045 CAST_ACCESSOR(Name) | 3072 CAST_ACCESSOR(ExternalUint32Array) |
3046 CAST_ACCESSOR(JSReceiver) | 3073 CAST_ACCESSOR(ExternalUint8Array) |
3047 CAST_ACCESSOR(JSObject) | 3074 CAST_ACCESSOR(ExternalUint8ClampedArray) |
3048 CAST_ACCESSOR(Smi) | 3075 CAST_ACCESSOR(FixedArray) |
| 3076 CAST_ACCESSOR(FixedArrayBase) |
| 3077 CAST_ACCESSOR(FixedDoubleArray) |
| 3078 CAST_ACCESSOR(FixedTypedArrayBase) |
| 3079 CAST_ACCESSOR(Foreign) |
| 3080 CAST_ACCESSOR(FreeSpace) |
| 3081 CAST_ACCESSOR(GlobalObject) |
| 3082 CAST_ACCESSOR(HeapNumber) |
3049 CAST_ACCESSOR(HeapObject) | 3083 CAST_ACCESSOR(HeapObject) |
3050 CAST_ACCESSOR(HeapNumber) | |
3051 CAST_ACCESSOR(Oddball) | |
3052 CAST_ACCESSOR(Cell) | |
3053 CAST_ACCESSOR(PropertyCell) | |
3054 CAST_ACCESSOR(SharedFunctionInfo) | |
3055 CAST_ACCESSOR(Map) | |
3056 CAST_ACCESSOR(JSFunction) | |
3057 CAST_ACCESSOR(GlobalObject) | |
3058 CAST_ACCESSOR(JSGlobalProxy) | |
3059 CAST_ACCESSOR(JSGlobalObject) | |
3060 CAST_ACCESSOR(JSBuiltinsObject) | |
3061 CAST_ACCESSOR(Code) | |
3062 CAST_ACCESSOR(JSArray) | 3084 CAST_ACCESSOR(JSArray) |
3063 CAST_ACCESSOR(JSArrayBuffer) | 3085 CAST_ACCESSOR(JSArrayBuffer) |
3064 CAST_ACCESSOR(JSArrayBufferView) | 3086 CAST_ACCESSOR(JSArrayBufferView) |
| 3087 CAST_ACCESSOR(JSBuiltinsObject) |
| 3088 CAST_ACCESSOR(JSDataView) |
| 3089 CAST_ACCESSOR(JSDate) |
| 3090 CAST_ACCESSOR(JSFunction) |
| 3091 CAST_ACCESSOR(JSFunctionProxy) |
| 3092 CAST_ACCESSOR(JSFunctionResultCache) |
| 3093 CAST_ACCESSOR(JSGeneratorObject) |
| 3094 CAST_ACCESSOR(JSGlobalObject) |
| 3095 CAST_ACCESSOR(JSGlobalProxy) |
| 3096 CAST_ACCESSOR(JSMap) |
| 3097 CAST_ACCESSOR(JSMapIterator) |
| 3098 CAST_ACCESSOR(JSMessageObject) |
| 3099 CAST_ACCESSOR(JSModule) |
| 3100 CAST_ACCESSOR(JSObject) |
| 3101 CAST_ACCESSOR(JSProxy) |
| 3102 CAST_ACCESSOR(JSReceiver) |
| 3103 CAST_ACCESSOR(JSRegExp) |
| 3104 CAST_ACCESSOR(JSSet) |
| 3105 CAST_ACCESSOR(JSSetIterator) |
3065 CAST_ACCESSOR(JSTypedArray) | 3106 CAST_ACCESSOR(JSTypedArray) |
3066 CAST_ACCESSOR(JSDataView) | 3107 CAST_ACCESSOR(JSValue) |
3067 CAST_ACCESSOR(JSRegExp) | |
3068 CAST_ACCESSOR(JSProxy) | |
3069 CAST_ACCESSOR(JSFunctionProxy) | |
3070 CAST_ACCESSOR(JSSet) | |
3071 CAST_ACCESSOR(JSMap) | |
3072 CAST_ACCESSOR(JSSetIterator) | |
3073 CAST_ACCESSOR(JSMapIterator) | |
3074 CAST_ACCESSOR(JSWeakMap) | 3108 CAST_ACCESSOR(JSWeakMap) |
3075 CAST_ACCESSOR(JSWeakSet) | 3109 CAST_ACCESSOR(JSWeakSet) |
3076 CAST_ACCESSOR(Foreign) | 3110 CAST_ACCESSOR(Map) |
3077 CAST_ACCESSOR(ByteArray) | 3111 CAST_ACCESSOR(MapCache) |
3078 CAST_ACCESSOR(FreeSpace) | 3112 CAST_ACCESSOR(Name) |
3079 CAST_ACCESSOR(ExternalArray) | 3113 CAST_ACCESSOR(NameDictionary) |
3080 CAST_ACCESSOR(ExternalInt8Array) | 3114 CAST_ACCESSOR(NormalizedMapCache) |
3081 CAST_ACCESSOR(ExternalUint8Array) | 3115 CAST_ACCESSOR(Object) |
3082 CAST_ACCESSOR(ExternalInt16Array) | 3116 CAST_ACCESSOR(ObjectHashTable) |
3083 CAST_ACCESSOR(ExternalUint16Array) | 3117 CAST_ACCESSOR(Oddball) |
3084 CAST_ACCESSOR(ExternalInt32Array) | 3118 CAST_ACCESSOR(OrderedHashMap) |
3085 CAST_ACCESSOR(ExternalUint32Array) | 3119 CAST_ACCESSOR(OrderedHashSet) |
3086 CAST_ACCESSOR(ExternalFloat32Array) | 3120 CAST_ACCESSOR(PolymorphicCodeCacheHashTable) |
3087 CAST_ACCESSOR(ExternalFloat64Array) | 3121 CAST_ACCESSOR(PropertyCell) |
3088 CAST_ACCESSOR(ExternalUint8ClampedArray) | 3122 CAST_ACCESSOR(ScopeInfo) |
| 3123 CAST_ACCESSOR(SeededNumberDictionary) |
| 3124 CAST_ACCESSOR(SeqOneByteString) |
| 3125 CAST_ACCESSOR(SeqString) |
| 3126 CAST_ACCESSOR(SeqTwoByteString) |
| 3127 CAST_ACCESSOR(SharedFunctionInfo) |
| 3128 CAST_ACCESSOR(SlicedString) |
| 3129 CAST_ACCESSOR(Smi) |
| 3130 CAST_ACCESSOR(String) |
| 3131 CAST_ACCESSOR(StringTable) |
3089 CAST_ACCESSOR(Struct) | 3132 CAST_ACCESSOR(Struct) |
3090 CAST_ACCESSOR(AccessorInfo) | 3133 CAST_ACCESSOR(Symbol) |
| 3134 CAST_ACCESSOR(UnseededNumberDictionary) |
| 3135 CAST_ACCESSOR(WeakHashTable) |
| 3136 |
3091 | 3137 |
3092 template <class Traits> | 3138 template <class Traits> |
3093 FixedTypedArray<Traits>* FixedTypedArray<Traits>::cast(Object* object) { | 3139 FixedTypedArray<Traits>* FixedTypedArray<Traits>::cast(Object* object) { |
3094 SLOW_ASSERT(object->IsHeapObject() && | 3140 SLOW_ASSERT(object->IsHeapObject() && |
3095 HeapObject::cast(object)->map()->instance_type() == | 3141 HeapObject::cast(object)->map()->instance_type() == |
3096 Traits::kInstanceType); | 3142 Traits::kInstanceType); |
3097 return reinterpret_cast<FixedTypedArray<Traits>*>(object); | 3143 return reinterpret_cast<FixedTypedArray<Traits>*>(object); |
3098 } | 3144 } |
3099 | 3145 |
| 3146 |
| 3147 template <class Traits> |
| 3148 const FixedTypedArray<Traits>* |
| 3149 FixedTypedArray<Traits>::cast(const Object* object) { |
| 3150 SLOW_ASSERT(const_cast<Object*>(object)->IsHeapObject() && |
| 3151 HeapObject::cast(object)->map()->instance_type() == |
| 3152 Traits::kInstanceType); |
| 3153 return reinterpret_cast<FixedTypedArray<Traits>*>(object); |
| 3154 } |
| 3155 |
3100 | 3156 |
3101 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) | 3157 #define MAKE_STRUCT_CAST(NAME, Name, name) CAST_ACCESSOR(Name) |
3102 STRUCT_LIST(MAKE_STRUCT_CAST) | 3158 STRUCT_LIST(MAKE_STRUCT_CAST) |
3103 #undef MAKE_STRUCT_CAST | 3159 #undef MAKE_STRUCT_CAST |
3104 | 3160 |
3105 | 3161 |
3106 template <typename Derived, typename Shape, typename Key> | 3162 template <typename Derived, typename Shape, typename Key> |
3107 HashTable<Derived, Shape, Key>* | 3163 HashTable<Derived, Shape, Key>* |
3108 HashTable<Derived, Shape, Key>::cast(Object* obj) { | 3164 HashTable<Derived, Shape, Key>::cast(Object* obj) { |
3109 ASSERT(obj->IsHashTable()); | 3165 SLOW_ASSERT(obj->IsHashTable()); |
3110 return reinterpret_cast<HashTable*>(obj); | 3166 return reinterpret_cast<HashTable*>(obj); |
3111 } | 3167 } |
3112 | 3168 |
3113 | 3169 |
| 3170 template <typename Derived, typename Shape, typename Key> |
| 3171 const HashTable<Derived, Shape, Key>* |
| 3172 HashTable<Derived, Shape, Key>::cast(const Object* obj) { |
| 3173 SLOW_ASSERT(const_cast<Object*>(obj)->IsHashTable()); |
| 3174 return reinterpret_cast<const HashTable*>(obj); |
| 3175 } |
| 3176 |
| 3177 |
3114 SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) | 3178 SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) |
3115 SYNCHRONIZED_SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) | 3179 SYNCHRONIZED_SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) |
3116 | 3180 |
3117 SMI_ACCESSORS(FreeSpace, size, kSizeOffset) | 3181 SMI_ACCESSORS(FreeSpace, size, kSizeOffset) |
3118 NOBARRIER_SMI_ACCESSORS(FreeSpace, size, kSizeOffset) | 3182 NOBARRIER_SMI_ACCESSORS(FreeSpace, size, kSizeOffset) |
3119 | 3183 |
3120 SMI_ACCESSORS(String, length, kLengthOffset) | 3184 SMI_ACCESSORS(String, length, kLengthOffset) |
3121 SYNCHRONIZED_SMI_ACCESSORS(String, length, kLengthOffset) | 3185 SYNCHRONIZED_SMI_ACCESSORS(String, length, kLengthOffset) |
3122 | 3186 |
3123 | 3187 |
(...skipping 2752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5876 } | 5940 } |
5877 | 5941 |
5878 bool JSGeneratorObject::is_closed() { | 5942 bool JSGeneratorObject::is_closed() { |
5879 return continuation() == kGeneratorClosed; | 5943 return continuation() == kGeneratorClosed; |
5880 } | 5944 } |
5881 | 5945 |
5882 bool JSGeneratorObject::is_executing() { | 5946 bool JSGeneratorObject::is_executing() { |
5883 return continuation() == kGeneratorExecuting; | 5947 return continuation() == kGeneratorExecuting; |
5884 } | 5948 } |
5885 | 5949 |
5886 JSGeneratorObject* JSGeneratorObject::cast(Object* obj) { | |
5887 ASSERT(obj->IsJSGeneratorObject()); | |
5888 ASSERT(HeapObject::cast(obj)->Size() == JSGeneratorObject::kSize); | |
5889 return reinterpret_cast<JSGeneratorObject*>(obj); | |
5890 } | |
5891 | |
5892 | |
5893 ACCESSORS(JSModule, context, Object, kContextOffset) | 5950 ACCESSORS(JSModule, context, Object, kContextOffset) |
5894 ACCESSORS(JSModule, scope_info, ScopeInfo, kScopeInfoOffset) | 5951 ACCESSORS(JSModule, scope_info, ScopeInfo, kScopeInfoOffset) |
5895 | 5952 |
5896 | 5953 |
5897 JSModule* JSModule::cast(Object* obj) { | |
5898 ASSERT(obj->IsJSModule()); | |
5899 ASSERT(HeapObject::cast(obj)->Size() == JSModule::kSize); | |
5900 return reinterpret_cast<JSModule*>(obj); | |
5901 } | |
5902 | |
5903 | |
5904 ACCESSORS(JSValue, value, Object, kValueOffset) | 5954 ACCESSORS(JSValue, value, Object, kValueOffset) |
5905 | 5955 |
5906 | 5956 |
5907 JSValue* JSValue::cast(Object* obj) { | |
5908 ASSERT(obj->IsJSValue()); | |
5909 ASSERT(HeapObject::cast(obj)->Size() == JSValue::kSize); | |
5910 return reinterpret_cast<JSValue*>(obj); | |
5911 } | |
5912 | |
5913 | |
5914 ACCESSORS(JSDate, value, Object, kValueOffset) | 5957 ACCESSORS(JSDate, value, Object, kValueOffset) |
5915 ACCESSORS(JSDate, cache_stamp, Object, kCacheStampOffset) | 5958 ACCESSORS(JSDate, cache_stamp, Object, kCacheStampOffset) |
5916 ACCESSORS(JSDate, year, Object, kYearOffset) | 5959 ACCESSORS(JSDate, year, Object, kYearOffset) |
5917 ACCESSORS(JSDate, month, Object, kMonthOffset) | 5960 ACCESSORS(JSDate, month, Object, kMonthOffset) |
5918 ACCESSORS(JSDate, day, Object, kDayOffset) | 5961 ACCESSORS(JSDate, day, Object, kDayOffset) |
5919 ACCESSORS(JSDate, weekday, Object, kWeekdayOffset) | 5962 ACCESSORS(JSDate, weekday, Object, kWeekdayOffset) |
5920 ACCESSORS(JSDate, hour, Object, kHourOffset) | 5963 ACCESSORS(JSDate, hour, Object, kHourOffset) |
5921 ACCESSORS(JSDate, min, Object, kMinOffset) | 5964 ACCESSORS(JSDate, min, Object, kMinOffset) |
5922 ACCESSORS(JSDate, sec, Object, kSecOffset) | 5965 ACCESSORS(JSDate, sec, Object, kSecOffset) |
5923 | 5966 |
5924 | 5967 |
5925 JSDate* JSDate::cast(Object* obj) { | |
5926 ASSERT(obj->IsJSDate()); | |
5927 ASSERT(HeapObject::cast(obj)->Size() == JSDate::kSize); | |
5928 return reinterpret_cast<JSDate*>(obj); | |
5929 } | |
5930 | |
5931 | |
5932 ACCESSORS(JSMessageObject, type, String, kTypeOffset) | 5968 ACCESSORS(JSMessageObject, type, String, kTypeOffset) |
5933 ACCESSORS(JSMessageObject, arguments, JSArray, kArgumentsOffset) | 5969 ACCESSORS(JSMessageObject, arguments, JSArray, kArgumentsOffset) |
5934 ACCESSORS(JSMessageObject, script, Object, kScriptOffset) | 5970 ACCESSORS(JSMessageObject, script, Object, kScriptOffset) |
5935 ACCESSORS(JSMessageObject, stack_frames, Object, kStackFramesOffset) | 5971 ACCESSORS(JSMessageObject, stack_frames, Object, kStackFramesOffset) |
5936 SMI_ACCESSORS(JSMessageObject, start_position, kStartPositionOffset) | 5972 SMI_ACCESSORS(JSMessageObject, start_position, kStartPositionOffset) |
5937 SMI_ACCESSORS(JSMessageObject, end_position, kEndPositionOffset) | 5973 SMI_ACCESSORS(JSMessageObject, end_position, kEndPositionOffset) |
5938 | 5974 |
5939 | 5975 |
5940 JSMessageObject* JSMessageObject::cast(Object* obj) { | |
5941 ASSERT(obj->IsJSMessageObject()); | |
5942 ASSERT(HeapObject::cast(obj)->Size() == JSMessageObject::kSize); | |
5943 return reinterpret_cast<JSMessageObject*>(obj); | |
5944 } | |
5945 | |
5946 | |
5947 INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset) | 5976 INT_ACCESSORS(Code, instruction_size, kInstructionSizeOffset) |
5948 INT_ACCESSORS(Code, prologue_offset, kPrologueOffset) | 5977 INT_ACCESSORS(Code, prologue_offset, kPrologueOffset) |
5949 ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset) | 5978 ACCESSORS(Code, relocation_info, ByteArray, kRelocationInfoOffset) |
5950 ACCESSORS(Code, handler_table, FixedArray, kHandlerTableOffset) | 5979 ACCESSORS(Code, handler_table, FixedArray, kHandlerTableOffset) |
5951 ACCESSORS(Code, deoptimization_data, FixedArray, kDeoptimizationDataOffset) | 5980 ACCESSORS(Code, deoptimization_data, FixedArray, kDeoptimizationDataOffset) |
5952 ACCESSORS(Code, raw_type_feedback_info, Object, kTypeFeedbackInfoOffset) | 5981 ACCESSORS(Code, raw_type_feedback_info, Object, kTypeFeedbackInfoOffset) |
5953 ACCESSORS(Code, next_code_link, Object, kNextCodeLinkOffset) | 5982 ACCESSORS(Code, next_code_link, Object, kNextCodeLinkOffset) |
5954 | 5983 |
5955 | 5984 |
5956 void Code::WipeOutHeader() { | 5985 void Code::WipeOutHeader() { |
(...skipping 1038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6995 #undef READ_SHORT_FIELD | 7024 #undef READ_SHORT_FIELD |
6996 #undef WRITE_SHORT_FIELD | 7025 #undef WRITE_SHORT_FIELD |
6997 #undef READ_BYTE_FIELD | 7026 #undef READ_BYTE_FIELD |
6998 #undef WRITE_BYTE_FIELD | 7027 #undef WRITE_BYTE_FIELD |
6999 #undef NOBARRIER_READ_BYTE_FIELD | 7028 #undef NOBARRIER_READ_BYTE_FIELD |
7000 #undef NOBARRIER_WRITE_BYTE_FIELD | 7029 #undef NOBARRIER_WRITE_BYTE_FIELD |
7001 | 7030 |
7002 } } // namespace v8::internal | 7031 } } // namespace v8::internal |
7003 | 7032 |
7004 #endif // V8_OBJECTS_INL_H_ | 7033 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |