OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #include <iomanip> | 5 #include <iomanip> |
6 | 6 |
7 #include "src/types.h" | 7 #include "src/types.h" |
8 | 8 |
9 #include "src/handles-inl.h" | 9 #include "src/handles-inl.h" |
10 #include "src/ostreams.h" | 10 #include "src/ostreams.h" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 int bitset = type->AsUnion()->Get(0)->BitsetLub(); | 140 int bitset = type->AsUnion()->Get(0)->BitsetLub(); |
141 for (int i = 0, n = type->AsUnion()->Length(); i < n; ++i) { | 141 for (int i = 0, n = type->AsUnion()->Length(); i < n; ++i) { |
142 // Other elements only contribute their semantic part. | 142 // Other elements only contribute their semantic part. |
143 bitset |= SEMANTIC(type->AsUnion()->Get(i)->BitsetLub()); | 143 bitset |= SEMANTIC(type->AsUnion()->Get(i)->BitsetLub()); |
144 } | 144 } |
145 return bitset; | 145 return bitset; |
146 } | 146 } |
147 if (type->IsClass()) return type->AsClass()->Lub(); | 147 if (type->IsClass()) return type->AsClass()->Lub(); |
148 if (type->IsConstant()) return type->AsConstant()->Lub(); | 148 if (type->IsConstant()) return type->AsConstant()->Lub(); |
149 if (type->IsRange()) return type->AsRange()->Lub(); | 149 if (type->IsRange()) return type->AsRange()->Lub(); |
150 if (type->IsContext()) return kInternal & kTaggedPointer; | 150 if (type->IsContext()) return kOtherInternal & kTaggedPointer; |
151 if (type->IsArray()) return kOtherObject; | 151 if (type->IsArray()) return kOtherObject; |
152 if (type->IsFunction()) return kFunction; | 152 if (type->IsFunction()) return kFunction; |
153 if (type->IsTuple()) return kInternal; | 153 if (type->IsTuple()) return kOtherInternal; |
154 UNREACHABLE(); | 154 UNREACHABLE(); |
155 return kNone; | 155 return kNone; |
156 } | 156 } |
157 | 157 |
158 Type::bitset BitsetType::Lub(i::Map* map) { | 158 Type::bitset BitsetType::Lub(i::Map* map) { |
159 DisallowHeapAllocation no_allocation; | 159 DisallowHeapAllocation no_allocation; |
160 switch (map->instance_type()) { | 160 switch (map->instance_type()) { |
161 case STRING_TYPE: | 161 case STRING_TYPE: |
162 case ONE_BYTE_STRING_TYPE: | 162 case ONE_BYTE_STRING_TYPE: |
163 case CONS_STRING_TYPE: | 163 case CONS_STRING_TYPE: |
(...skipping 16 matching lines...) Expand all Loading... |
180 case SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE: | 180 case SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE: |
181 case SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE: | 181 case SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE: |
182 return kInternalizedString; | 182 return kInternalizedString; |
183 case SYMBOL_TYPE: | 183 case SYMBOL_TYPE: |
184 return kSymbol; | 184 return kSymbol; |
185 case ODDBALL_TYPE: { | 185 case ODDBALL_TYPE: { |
186 Heap* heap = map->GetHeap(); | 186 Heap* heap = map->GetHeap(); |
187 if (map == heap->undefined_map()) return kUndefined; | 187 if (map == heap->undefined_map()) return kUndefined; |
188 if (map == heap->null_map()) return kNull; | 188 if (map == heap->null_map()) return kNull; |
189 if (map == heap->boolean_map()) return kBoolean; | 189 if (map == heap->boolean_map()) return kBoolean; |
190 DCHECK(map == heap->the_hole_map() || | 190 if (map == heap->the_hole_map()) return kHole; |
191 map == heap->uninitialized_map() || | 191 DCHECK(map == heap->uninitialized_map() || |
192 map == heap->no_interceptor_result_sentinel_map() || | 192 map == heap->no_interceptor_result_sentinel_map() || |
193 map == heap->termination_exception_map() || | 193 map == heap->termination_exception_map() || |
194 map == heap->arguments_marker_map() || | 194 map == heap->arguments_marker_map() || |
195 map == heap->optimized_out_map() || | 195 map == heap->optimized_out_map() || |
196 map == heap->stale_register_map()); | 196 map == heap->stale_register_map()); |
197 return kInternal & kTaggedPointer; | 197 return kOtherInternal & kTaggedPointer; |
198 } | 198 } |
199 case HEAP_NUMBER_TYPE: | 199 case HEAP_NUMBER_TYPE: |
200 return kNumber & kTaggedPointer; | 200 return kNumber & kTaggedPointer; |
201 case SIMD128_VALUE_TYPE: | 201 case SIMD128_VALUE_TYPE: |
202 return kSimd; | 202 return kSimd; |
203 case JS_OBJECT_TYPE: | 203 case JS_OBJECT_TYPE: |
204 case JS_ARGUMENTS_TYPE: | 204 case JS_ARGUMENTS_TYPE: |
205 case JS_ERROR_TYPE: | 205 case JS_ERROR_TYPE: |
206 case JS_GLOBAL_OBJECT_TYPE: | 206 case JS_GLOBAL_OBJECT_TYPE: |
207 case JS_GLOBAL_PROXY_TYPE: | 207 case JS_GLOBAL_PROXY_TYPE: |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 case ACCESSOR_PAIR_TYPE: | 243 case ACCESSOR_PAIR_TYPE: |
244 case FIXED_ARRAY_TYPE: | 244 case FIXED_ARRAY_TYPE: |
245 case FIXED_DOUBLE_ARRAY_TYPE: | 245 case FIXED_DOUBLE_ARRAY_TYPE: |
246 case BYTE_ARRAY_TYPE: | 246 case BYTE_ARRAY_TYPE: |
247 case BYTECODE_ARRAY_TYPE: | 247 case BYTECODE_ARRAY_TYPE: |
248 case TRANSITION_ARRAY_TYPE: | 248 case TRANSITION_ARRAY_TYPE: |
249 case FOREIGN_TYPE: | 249 case FOREIGN_TYPE: |
250 case SCRIPT_TYPE: | 250 case SCRIPT_TYPE: |
251 case CODE_TYPE: | 251 case CODE_TYPE: |
252 case PROPERTY_CELL_TYPE: | 252 case PROPERTY_CELL_TYPE: |
253 return kInternal & kTaggedPointer; | 253 return kOtherInternal & kTaggedPointer; |
254 | 254 |
255 // Remaining instance types are unsupported for now. If any of them do | 255 // Remaining instance types are unsupported for now. If any of them do |
256 // require bit set types, they should get kInternal & kTaggedPointer. | 256 // require bit set types, they should get kOtherInternal & kTaggedPointer. |
257 case MUTABLE_HEAP_NUMBER_TYPE: | 257 case MUTABLE_HEAP_NUMBER_TYPE: |
258 case FREE_SPACE_TYPE: | 258 case FREE_SPACE_TYPE: |
259 #define FIXED_TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ | 259 #define FIXED_TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ |
260 case FIXED_##TYPE##_ARRAY_TYPE: | 260 case FIXED_##TYPE##_ARRAY_TYPE: |
261 | 261 |
262 TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE) | 262 TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE) |
263 #undef FIXED_TYPED_ARRAY_CASE | 263 #undef FIXED_TYPED_ARRAY_CASE |
264 case FILLER_TYPE: | 264 case FILLER_TYPE: |
265 case ACCESS_CHECK_INFO_TYPE: | 265 case ACCESS_CHECK_INFO_TYPE: |
266 case INTERCEPTOR_INFO_TYPE: | 266 case INTERCEPTOR_INFO_TYPE: |
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1270 #undef CONSTRUCT_SIMD_TYPE | 1270 #undef CONSTRUCT_SIMD_TYPE |
1271 | 1271 |
1272 // ----------------------------------------------------------------------------- | 1272 // ----------------------------------------------------------------------------- |
1273 // Instantiations. | 1273 // Instantiations. |
1274 | 1274 |
1275 template class Type::Iterator<i::Map>; | 1275 template class Type::Iterator<i::Map>; |
1276 template class Type::Iterator<i::Object>; | 1276 template class Type::Iterator<i::Object>; |
1277 | 1277 |
1278 } // namespace internal | 1278 } // namespace internal |
1279 } // namespace v8 | 1279 } // namespace v8 |
OLD | NEW |