Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(474)

Unified Diff: src/factory.cc

Issue 1069883002: WIP SharedArrayBuffer implementation (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: merge master Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/factory.h ('k') | src/flag-definitions.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/factory.cc
diff --git a/src/factory.cc b/src/factory.cc
index fca1e1c1ca8abc821566f8e697fd591c7705e098..234149f2589708f5aa9c3ae1b3b0ed28eb88cdf5 100644
--- a/src/factory.cc
+++ b/src/factory.cc
@@ -1761,9 +1761,10 @@ Handle<JSGeneratorObject> Factory::NewJSGeneratorObject(
}
-Handle<JSArrayBuffer> Factory::NewJSArrayBuffer() {
+Handle<JSArrayBuffer> Factory::NewJSArrayBuffer(SharedFlag is_shared) {
Handle<JSFunction> array_buffer_fun(
- isolate()->native_context()->array_buffer_fun());
+ is_shared ? isolate()->native_context()->shared_array_buffer_fun()
+ : isolate()->native_context()->array_buffer_fun());
CALL_HEAP_FUNCTION(
isolate(),
isolate()->heap()->AllocateJSObject(*array_buffer_fun),
@@ -1888,6 +1889,23 @@ JSFunction* GetTypedArrayFun(ElementsKind elements_kind, Isolate* isolate) {
}
+JSFunction* GetSharedTypedArrayFun(ExternalArrayType type, Isolate* isolate) {
+ Context* native_context = isolate->context()->native_context();
+ switch (type) {
+#define SHARED_TYPED_ARRAY_FUN(Type, type, TYPE, ctype, size) \
+ case kExternal##Type##Array: \
+ return native_context->shared_##type##_array_fun();
+
+ TYPED_ARRAYS(SHARED_TYPED_ARRAY_FUN)
+#undef SHARED_TYPED_ARRAY_FUN
+
+ default:
+ UNREACHABLE();
+ return NULL;
+ }
+}
+
+
void SetupArrayBufferView(i::Isolate* isolate,
i::Handle<i::JSArrayBufferView> obj,
i::Handle<i::JSArrayBuffer> buffer,
@@ -1910,8 +1928,11 @@ void SetupArrayBufferView(i::Isolate* isolate,
} // namespace
-Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type) {
- Handle<JSFunction> typed_array_fun_handle(GetTypedArrayFun(type, isolate()));
+Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type,
+ SharedFlag is_shared) {
+ Handle<JSFunction> typed_array_fun_handle(
+ is_shared ? GetSharedTypedArrayFun(type, isolate())
+ : GetTypedArrayFun(type, isolate()));
CALL_HEAP_FUNCTION(
isolate(),
@@ -1932,9 +1953,9 @@ Handle<JSTypedArray> Factory::NewJSTypedArray(ElementsKind elements_kind) {
Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type,
Handle<JSArrayBuffer> buffer,
- size_t byte_offset,
- size_t length) {
- Handle<JSTypedArray> obj = NewJSTypedArray(type);
+ size_t byte_offset, size_t length,
+ SharedFlag is_shared) {
+ Handle<JSTypedArray> obj = NewJSTypedArray(type, is_shared);
size_t element_size = GetExternalArrayElementSize(type);
ElementsKind elements_kind = GetExternalArrayElementsKind(type);
« no previous file with comments | « src/factory.h ('k') | src/flag-definitions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698