diff options
Diffstat (limited to 'deps/v8/src/objects/embedder-data-array.cc')
-rw-r--r-- | deps/v8/src/objects/embedder-data-array.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/deps/v8/src/objects/embedder-data-array.cc b/deps/v8/src/objects/embedder-data-array.cc new file mode 100644 index 0000000000..665a1fa2f4 --- /dev/null +++ b/deps/v8/src/objects/embedder-data-array.cc @@ -0,0 +1,27 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "src/objects/embedder-data-array.h" +#include "src/objects/embedder-data-array-inl.h" + +namespace v8 { +namespace internal { + +// static +Handle<EmbedderDataArray> EmbedderDataArray::EnsureCapacity( + Isolate* isolate, Handle<EmbedderDataArray> array, int index) { + if (index < array->length()) return array; + DCHECK_LT(index, kMaxLength); + Handle<EmbedderDataArray> new_array = + isolate->factory()->NewEmbedderDataArray(index + 1); + DisallowHeapAllocation no_gc; + // Last new space allocation does not require any write barriers. + size_t size = array->length() * kEmbedderDataSlotSize; + MemCopy(reinterpret_cast<void*>(new_array->slots_start()), + reinterpret_cast<void*>(array->slots_start()), size); + return new_array; +} + +} // namespace internal +} // namespace v8 |