| 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 |