OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 <ostream> | 5 #include <ostream> |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/compilation-dependencies.h" | 8 #include "src/compilation-dependencies.h" |
9 #include "src/compiler/access-info.h" | 9 #include "src/compiler/access-info.h" |
10 #include "src/compiler/type-cache.h" | 10 #include "src/compiler/type-cache.h" |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 case DATA: { | 293 case DATA: { |
294 int index = descriptors->GetFieldIndex(number); | 294 int index = descriptors->GetFieldIndex(number); |
295 Representation details_representation = details.representation(); | 295 Representation details_representation = details.representation(); |
296 FieldIndex field_index = FieldIndex::ForPropertyIndex( | 296 FieldIndex field_index = FieldIndex::ForPropertyIndex( |
297 *map, index, details_representation.IsDouble()); | 297 *map, index, details_representation.IsDouble()); |
298 Type* field_type = Type::NonInternal(); | 298 Type* field_type = Type::NonInternal(); |
299 MachineRepresentation field_representation = | 299 MachineRepresentation field_representation = |
300 MachineRepresentation::kTagged; | 300 MachineRepresentation::kTagged; |
301 MaybeHandle<Map> field_map; | 301 MaybeHandle<Map> field_map; |
302 if (details_representation.IsSmi()) { | 302 if (details_representation.IsSmi()) { |
303 field_type = type_cache_.kSmi; | 303 field_type = Type::SignedSmall(); |
304 field_representation = MachineRepresentation::kTaggedSigned; | 304 field_representation = MachineRepresentation::kTaggedSigned; |
305 } else if (details_representation.IsDouble()) { | 305 } else if (details_representation.IsDouble()) { |
306 field_type = type_cache_.kFloat64; | 306 field_type = type_cache_.kFloat64; |
307 field_representation = MachineRepresentation::kFloat64; | 307 field_representation = MachineRepresentation::kFloat64; |
308 } else if (details_representation.IsHeapObject()) { | 308 } else if (details_representation.IsHeapObject()) { |
309 // Extract the field type from the property details (make sure its | 309 // Extract the field type from the property details (make sure its |
310 // representation is TaggedPointer to reflect the heap object case). | 310 // representation is TaggedPointer to reflect the heap object case). |
311 field_representation = MachineRepresentation::kTaggedPointer; | 311 field_representation = MachineRepresentation::kTaggedPointer; |
312 Handle<FieldType> descriptors_field_type( | 312 Handle<FieldType> descriptors_field_type( |
313 descriptors->GetFieldType(number), isolate()); | 313 descriptors->GetFieldType(number), isolate()); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 // TODO(bmeurer): Handle transition to data constant? | 490 // TODO(bmeurer): Handle transition to data constant? |
491 if (details.type() != DATA) return false; | 491 if (details.type() != DATA) return false; |
492 int const index = details.field_index(); | 492 int const index = details.field_index(); |
493 Representation details_representation = details.representation(); | 493 Representation details_representation = details.representation(); |
494 FieldIndex field_index = FieldIndex::ForPropertyIndex( | 494 FieldIndex field_index = FieldIndex::ForPropertyIndex( |
495 *transition_map, index, details_representation.IsDouble()); | 495 *transition_map, index, details_representation.IsDouble()); |
496 Type* field_type = Type::NonInternal(); | 496 Type* field_type = Type::NonInternal(); |
497 MaybeHandle<Map> field_map; | 497 MaybeHandle<Map> field_map; |
498 MachineRepresentation field_representation = MachineRepresentation::kTagged; | 498 MachineRepresentation field_representation = MachineRepresentation::kTagged; |
499 if (details_representation.IsSmi()) { | 499 if (details_representation.IsSmi()) { |
500 field_type = type_cache_.kSmi; | 500 field_type = Type::SignedSmall(); |
501 field_representation = MachineRepresentation::kTaggedSigned; | 501 field_representation = MachineRepresentation::kTaggedSigned; |
502 } else if (details_representation.IsDouble()) { | 502 } else if (details_representation.IsDouble()) { |
503 field_type = type_cache_.kFloat64; | 503 field_type = type_cache_.kFloat64; |
504 field_representation = MachineRepresentation::kFloat64; | 504 field_representation = MachineRepresentation::kFloat64; |
505 } else if (details_representation.IsHeapObject()) { | 505 } else if (details_representation.IsHeapObject()) { |
506 // Extract the field type from the property details (make sure its | 506 // Extract the field type from the property details (make sure its |
507 // representation is TaggedPointer to reflect the heap object case). | 507 // representation is TaggedPointer to reflect the heap object case). |
508 field_representation = MachineRepresentation::kTaggedPointer; | 508 field_representation = MachineRepresentation::kTaggedPointer; |
509 Handle<FieldType> descriptors_field_type( | 509 Handle<FieldType> descriptors_field_type( |
510 transition_map->instance_descriptors()->GetFieldType(number), | 510 transition_map->instance_descriptors()->GetFieldType(number), |
(...skipping 20 matching lines...) Expand all Loading... |
531 } | 531 } |
532 return false; | 532 return false; |
533 } | 533 } |
534 | 534 |
535 | 535 |
536 Factory* AccessInfoFactory::factory() const { return isolate()->factory(); } | 536 Factory* AccessInfoFactory::factory() const { return isolate()->factory(); } |
537 | 537 |
538 } // namespace compiler | 538 } // namespace compiler |
539 } // namespace internal | 539 } // namespace internal |
540 } // namespace v8 | 540 } // namespace v8 |
OLD | NEW |