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 #include "src/code-stubs.h" | 5 #include "src/code-stubs.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/cpu-profiler.h" | 10 #include "src/cpu-profiler.h" |
(...skipping 950 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
961 SimpleListPrinter p(os); | 961 SimpleListPrinter p(os); |
962 if (s.IsEmpty()) p.Add("None"); | 962 if (s.IsEmpty()) p.Add("None"); |
963 if (s.Contains(ToBooleanStub::UNDEFINED)) p.Add("Undefined"); | 963 if (s.Contains(ToBooleanStub::UNDEFINED)) p.Add("Undefined"); |
964 if (s.Contains(ToBooleanStub::BOOLEAN)) p.Add("Bool"); | 964 if (s.Contains(ToBooleanStub::BOOLEAN)) p.Add("Bool"); |
965 if (s.Contains(ToBooleanStub::NULL_TYPE)) p.Add("Null"); | 965 if (s.Contains(ToBooleanStub::NULL_TYPE)) p.Add("Null"); |
966 if (s.Contains(ToBooleanStub::SMI)) p.Add("Smi"); | 966 if (s.Contains(ToBooleanStub::SMI)) p.Add("Smi"); |
967 if (s.Contains(ToBooleanStub::SPEC_OBJECT)) p.Add("SpecObject"); | 967 if (s.Contains(ToBooleanStub::SPEC_OBJECT)) p.Add("SpecObject"); |
968 if (s.Contains(ToBooleanStub::STRING)) p.Add("String"); | 968 if (s.Contains(ToBooleanStub::STRING)) p.Add("String"); |
969 if (s.Contains(ToBooleanStub::SYMBOL)) p.Add("Symbol"); | 969 if (s.Contains(ToBooleanStub::SYMBOL)) p.Add("Symbol"); |
970 if (s.Contains(ToBooleanStub::HEAP_NUMBER)) p.Add("HeapNumber"); | 970 if (s.Contains(ToBooleanStub::HEAP_NUMBER)) p.Add("HeapNumber"); |
| 971 if (s.Contains(ToBooleanStub::SIMD_VALUE)) p.Add("SimdValue"); |
971 return os << ")"; | 972 return os << ")"; |
972 } | 973 } |
973 | 974 |
974 | 975 |
975 bool ToBooleanStub::Types::UpdateStatus(Handle<Object> object) { | 976 bool ToBooleanStub::Types::UpdateStatus(Handle<Object> object) { |
976 if (object->IsUndefined()) { | 977 if (object->IsUndefined()) { |
977 Add(UNDEFINED); | 978 Add(UNDEFINED); |
978 return false; | 979 return false; |
979 } else if (object->IsBoolean()) { | 980 } else if (object->IsBoolean()) { |
980 Add(BOOLEAN); | 981 Add(BOOLEAN); |
(...skipping 12 matching lines...) Expand all Loading... |
993 return !object->IsUndetectableObject() && | 994 return !object->IsUndetectableObject() && |
994 String::cast(*object)->length() != 0; | 995 String::cast(*object)->length() != 0; |
995 } else if (object->IsSymbol()) { | 996 } else if (object->IsSymbol()) { |
996 Add(SYMBOL); | 997 Add(SYMBOL); |
997 return true; | 998 return true; |
998 } else if (object->IsHeapNumber()) { | 999 } else if (object->IsHeapNumber()) { |
999 DCHECK(!object->IsUndetectableObject()); | 1000 DCHECK(!object->IsUndetectableObject()); |
1000 Add(HEAP_NUMBER); | 1001 Add(HEAP_NUMBER); |
1001 double value = HeapNumber::cast(*object)->value(); | 1002 double value = HeapNumber::cast(*object)->value(); |
1002 return value != 0 && !std::isnan(value); | 1003 return value != 0 && !std::isnan(value); |
| 1004 } else if (object->IsFloat32x4()) { |
| 1005 Add(SIMD_VALUE); |
| 1006 return true; |
1003 } else { | 1007 } else { |
1004 // We should never see an internal object at runtime here! | 1008 // We should never see an internal object at runtime here! |
1005 UNREACHABLE(); | 1009 UNREACHABLE(); |
1006 return true; | 1010 return true; |
1007 } | 1011 } |
1008 } | 1012 } |
1009 | 1013 |
1010 | 1014 |
1011 bool ToBooleanStub::Types::NeedsMap() const { | 1015 bool ToBooleanStub::Types::NeedsMap() const { |
1012 return Contains(ToBooleanStub::SPEC_OBJECT) | 1016 return Contains(ToBooleanStub::SPEC_OBJECT) || |
1013 || Contains(ToBooleanStub::STRING) | 1017 Contains(ToBooleanStub::STRING) || Contains(ToBooleanStub::SYMBOL) || |
1014 || Contains(ToBooleanStub::SYMBOL) | 1018 Contains(ToBooleanStub::HEAP_NUMBER) || |
1015 || Contains(ToBooleanStub::HEAP_NUMBER); | 1019 Contains(ToBooleanStub::SIMD_VALUE); |
1016 } | 1020 } |
1017 | 1021 |
1018 | 1022 |
1019 bool ToBooleanStub::Types::CanBeUndetectable() const { | 1023 bool ToBooleanStub::Types::CanBeUndetectable() const { |
1020 return Contains(ToBooleanStub::SPEC_OBJECT) | 1024 return Contains(ToBooleanStub::SPEC_OBJECT) |
1021 || Contains(ToBooleanStub::STRING); | 1025 || Contains(ToBooleanStub::STRING); |
1022 } | 1026 } |
1023 | 1027 |
1024 | 1028 |
1025 void StubFailureTrampolineStub::GenerateAheadOfTime(Isolate* isolate) { | 1029 void StubFailureTrampolineStub::GenerateAheadOfTime(Isolate* isolate) { |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1079 | 1083 |
1080 if (type->Is(Type::UntaggedPointer())) { | 1084 if (type->Is(Type::UntaggedPointer())) { |
1081 return Representation::External(); | 1085 return Representation::External(); |
1082 } | 1086 } |
1083 | 1087 |
1084 DCHECK(!type->Is(Type::Untagged())); | 1088 DCHECK(!type->Is(Type::Untagged())); |
1085 return Representation::Tagged(); | 1089 return Representation::Tagged(); |
1086 } | 1090 } |
1087 } // namespace internal | 1091 } // namespace internal |
1088 } // namespace v8 | 1092 } // namespace v8 |
OLD | NEW |