OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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/value-serializer.h" | 5 #include "src/value-serializer.h" |
6 | 6 |
7 #include <type_traits> | 7 #include <type_traits> |
8 | 8 |
9 #include "src/base/logging.h" | 9 #include "src/base/logging.h" |
10 #include "src/conversions.h" | 10 #include "src/conversions.h" |
(...skipping 1121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 } | 1132 } |
1133 | 1133 |
1134 expected = String::Flatten(expected); | 1134 expected = String::Flatten(expected); |
1135 DisallowHeapAllocation no_gc; | 1135 DisallowHeapAllocation no_gc; |
1136 String::FlatContent flat = expected->GetFlatContent(); | 1136 String::FlatContent flat = expected->GetFlatContent(); |
1137 | 1137 |
1138 // If the bytes are verbatim what is in the flattened string, then the string | 1138 // If the bytes are verbatim what is in the flattened string, then the string |
1139 // is successfully consumed. | 1139 // is successfully consumed. |
1140 if (tag == SerializationTag::kUtf8String && flat.IsOneByte()) { | 1140 if (tag == SerializationTag::kUtf8String && flat.IsOneByte()) { |
1141 Vector<const uint8_t> chars = flat.ToOneByteVector(); | 1141 Vector<const uint8_t> chars = flat.ToOneByteVector(); |
1142 if (byte_length == chars.length() && | 1142 if (byte_length == static_cast<size_t>(chars.length()) && |
1143 String::IsAscii(chars.begin(), chars.length()) && | 1143 String::IsAscii(chars.begin(), chars.length()) && |
1144 memcmp(bytes.begin(), chars.begin(), byte_length) == 0) { | 1144 memcmp(bytes.begin(), chars.begin(), byte_length) == 0) { |
1145 return true; | 1145 return true; |
1146 } | 1146 } |
1147 } else if (tag == SerializationTag::kTwoByteString && flat.IsTwoByte()) { | 1147 } else if (tag == SerializationTag::kTwoByteString && flat.IsTwoByte()) { |
1148 Vector<const uc16> chars = flat.ToUC16Vector(); | 1148 Vector<const uc16> chars = flat.ToUC16Vector(); |
1149 if (byte_length == static_cast<unsigned>(chars.length()) * sizeof(uc16) && | 1149 if (byte_length == static_cast<unsigned>(chars.length()) * sizeof(uc16) && |
1150 memcmp(bytes.begin(), chars.begin(), byte_length) == 0) { | 1150 memcmp(bytes.begin(), chars.begin(), byte_length) == 0) { |
1151 return true; | 1151 return true; |
1152 } | 1152 } |
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1825 if (stack.size() != 1) { | 1825 if (stack.size() != 1) { |
1826 isolate_->Throw(*isolate_->factory()->NewError( | 1826 isolate_->Throw(*isolate_->factory()->NewError( |
1827 MessageTemplate::kDataCloneDeserializationError)); | 1827 MessageTemplate::kDataCloneDeserializationError)); |
1828 return MaybeHandle<Object>(); | 1828 return MaybeHandle<Object>(); |
1829 } | 1829 } |
1830 return scope.CloseAndEscape(stack[0]); | 1830 return scope.CloseAndEscape(stack[0]); |
1831 } | 1831 } |
1832 | 1832 |
1833 } // namespace internal | 1833 } // namespace internal |
1834 } // namespace v8 | 1834 } // namespace v8 |
OLD | NEW |