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 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 void ValueSerializer::WriteRawBytes(const void* source, size_t length) { | 225 void ValueSerializer::WriteRawBytes(const void* source, size_t length) { |
226 uint8_t* dest; | 226 uint8_t* dest; |
227 if (ReserveRawBytes(length).To(&dest)) { | 227 if (ReserveRawBytes(length).To(&dest)) { |
228 memcpy(dest, source, length); | 228 memcpy(dest, source, length); |
229 } | 229 } |
230 } | 230 } |
231 | 231 |
232 Maybe<uint8_t*> ValueSerializer::ReserveRawBytes(size_t bytes) { | 232 Maybe<uint8_t*> ValueSerializer::ReserveRawBytes(size_t bytes) { |
233 size_t old_size = buffer_size_; | 233 size_t old_size = buffer_size_; |
234 size_t new_size = old_size + bytes; | 234 size_t new_size = old_size + bytes; |
235 if (new_size > buffer_capacity_) { | 235 if (V8_UNLIKELY(new_size > buffer_capacity_)) { |
236 bool ok; | 236 bool ok; |
237 if (!ExpandBuffer(new_size).To(&ok)) { | 237 if (!ExpandBuffer(new_size).To(&ok)) { |
238 return Nothing<uint8_t*>(); | 238 return Nothing<uint8_t*>(); |
239 } | 239 } |
240 } | 240 } |
241 buffer_size_ = new_size; | 241 buffer_size_ = new_size; |
242 return Just(&buffer_[old_size]); | 242 return Just(&buffer_[old_size]); |
243 } | 243 } |
244 | 244 |
245 Maybe<bool> ValueSerializer::ExpandBuffer(size_t required_capacity) { | 245 Maybe<bool> ValueSerializer::ExpandBuffer(size_t required_capacity) { |
(...skipping 1688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1934 if (stack.size() != 1) { | 1934 if (stack.size() != 1) { |
1935 isolate_->Throw(*isolate_->factory()->NewError( | 1935 isolate_->Throw(*isolate_->factory()->NewError( |
1936 MessageTemplate::kDataCloneDeserializationError)); | 1936 MessageTemplate::kDataCloneDeserializationError)); |
1937 return MaybeHandle<Object>(); | 1937 return MaybeHandle<Object>(); |
1938 } | 1938 } |
1939 return scope.CloseAndEscape(stack[0]); | 1939 return scope.CloseAndEscape(stack[0]); |
1940 } | 1940 } |
1941 | 1941 |
1942 } // namespace internal | 1942 } // namespace internal |
1943 } // namespace v8 | 1943 } // namespace v8 |
OLD | NEW |