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

Unified Diff: src/bootstrapper.cc

Issue 1069883002: WIP SharedArrayBuffer implementation (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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/arraybuffer.js ('k') | src/contexts.h » ('j') | src/factory.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/bootstrapper.cc
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index af75efd543a215b645e29484a0c9c91b2a272e38..3d35d4439f7399b86ffd6c851153802008808385 100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -189,11 +189,9 @@ class Genesis BASE_EMBEDDED {
ElementsKind elements_kind);
bool InstallNatives();
- void InstallTypedArray(
- const char* name,
- ElementsKind elements_kind,
- Handle<JSFunction>* fun,
- Handle<Map>* external_map);
+ void InstallTypedArray(const char* name, ElementsKind elements_kind,
+ Handle<JSFunction>* fun, Handle<Map>* external_map,
+ bool is_shared);
Jarin 2015/04/16 14:55:28 Could you introduce an enum for the various places
binji 2015/04/16 21:00:33 Done.
bool InstallExperimentalNatives();
void InstallBuiltinFunctionIds();
void InstallJSFunctionResultCaches();
@@ -1153,17 +1151,15 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> global_object,
}
{ // -- T y p e d A r r a y s
-#define INSTALL_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
- { \
- Handle<JSFunction> fun; \
- Handle<Map> external_map; \
- InstallTypedArray(#Type "Array", \
- TYPE##_ELEMENTS, \
- &fun, \
- &external_map); \
- native_context()->set_##type##_array_fun(*fun); \
- native_context()->set_##type##_array_external_map(*external_map); \
- }
+#define INSTALL_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
+ { \
+ Handle<JSFunction> fun; \
+ Handle<Map> external_map; \
+ InstallTypedArray(#Type "Array", TYPE##_ELEMENTS, &fun, &external_map, \
+ false); \
+ native_context()->set_##type##_array_fun(*fun); \
+ native_context()->set_##type##_array_external_map(*external_map); \
+ }
TYPED_ARRAYS(INSTALL_TYPED_ARRAY)
#undef INSTALL_TYPED_ARRAY
@@ -1176,6 +1172,28 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> global_object,
native_context()->set_data_view_fun(*data_view_fun);
}
+ { // -- S h a r e d A r r a y B u f f e r
+ Handle<JSFunction> shared_array_buffer_fun = InstallFunction(
+ global, "SharedArrayBuffer", JS_SHARED_ARRAY_BUFFER_TYPE,
+ JSArrayBuffer::kSizeWithInternalFields,
+ isolate->initial_object_prototype(), Builtins::kIllegal);
+ native_context()->set_shared_array_buffer_fun(*shared_array_buffer_fun);
+ }
+
+ { // -- S h a r e d T y p e d A r r a y s
+#define INSTALL_SHARED_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
+ { \
+ Handle<JSFunction> fun; \
+ Handle<Map> external_map; \
+ InstallTypedArray("Shared" #Type "Array", TYPE##_ELEMENTS, &fun, \
+ &external_map, true); \
+ native_context()->set_shared_##type##_array_fun(*fun); \
+ native_context()->set_shared_##type##_array_external_map(*external_map); \
+ }
+ TYPED_ARRAYS(INSTALL_SHARED_TYPED_ARRAY)
+#undef INSTALL_SHARED_TYPED_ARRAY
+ }
+
// -- M a p
InstallFunction(global, "Map", JS_MAP_TYPE, JSMap::kSize,
isolate->initial_object_prototype(), Builtins::kIllegal);
@@ -1371,20 +1389,18 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> global_object,
}
-void Genesis::InstallTypedArray(
- const char* name,
- ElementsKind elements_kind,
- Handle<JSFunction>* fun,
- Handle<Map>* external_map) {
+void Genesis::InstallTypedArray(const char* name, ElementsKind elements_kind,
+ Handle<JSFunction>* fun,
+ Handle<Map>* external_map, bool is_shared) {
+ InstanceType type =
+ is_shared ? JS_SHARED_TYPED_ARRAY_TYPE : JS_TYPED_ARRAY_TYPE;
Handle<JSObject> global = Handle<JSObject>(native_context()->global_object());
Handle<JSFunction> result = InstallFunction(
- global, name, JS_TYPED_ARRAY_TYPE, JSTypedArray::kSize,
+ global, name, type, JSTypedArray::kSize,
isolate()->initial_object_prototype(), Builtins::kIllegal);
Handle<Map> initial_map = isolate()->factory()->NewMap(
- JS_TYPED_ARRAY_TYPE,
- JSTypedArray::kSizeWithInternalFields,
- elements_kind);
+ type, JSTypedArray::kSizeWithInternalFields, elements_kind);
JSFunction::SetInitialMap(result, initial_map,
handle(initial_map->prototype(), isolate()));
*fun = result;
« no previous file with comments | « src/arraybuffer.js ('k') | src/contexts.h » ('j') | src/factory.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698