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

Unified Diff: src/arraybuffer.js

Issue 149053009: V8 JavaScript shared memory prototype. Base URL: https://chromium.googlesource.com/external/v8.git@master
Patch Set: Tweaks Created 6 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/api.cc ('k') | src/objects.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/arraybuffer.js
diff --git a/src/arraybuffer.js b/src/arraybuffer.js
index 07924e4b818952dab5a3378b17c058a5a8b1f143..3f434eee86d31a3db4a78e0cb7a394daff6bfa48 100644
--- a/src/arraybuffer.js
+++ b/src/arraybuffer.js
@@ -31,10 +31,11 @@ var $ArrayBuffer = global.ArrayBuffer;
// -------------------------------------------------------------------
-function ArrayBufferConstructor(length) { // length = 1
+function ArrayBufferConstructor(length, shared) { // length = 1
if (%_IsConstructCall()) {
var byteLength = ToPositiveInteger(length, 'invalid_array_buffer_length');
- %ArrayBufferInitialize(this, byteLength);
+ var is_shared = !!shared;
+ %ArrayBufferInitialize(this, byteLength, is_shared);
} else {
throw MakeTypeError('constructor_not_function', ["ArrayBuffer"]);
}
@@ -48,6 +49,14 @@ function ArrayBufferGetByteLength() {
return %_ArrayBufferGetByteLength(this);
}
+function ArrayBufferGetShared() {
+ if (!IS_ARRAYBUFFER(this)) {
+ throw MakeTypeError('incompatible_method_receiver',
+ ['ArrayBuffer.prototype.shared', this]);
+ }
+ return %ArrayBufferGetShared(this);
+}
+
// ES6 Draft 15.13.5.5.3
function ArrayBufferSlice(start, end) {
if (!IS_ARRAYBUFFER(this)) {
@@ -89,6 +98,80 @@ function ArrayBufferIsView(obj) {
return %ArrayBufferIsView(obj);
}
+function ArrayBufferMutexInit(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferMutexInit(this, a);
+}
+
+function ArrayBufferMutexDestroy(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferMutexDestroy(this, a);
+}
+
+function ArrayBufferMutexLock(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferMutexLock(this, a);
+}
+
+function ArrayBufferMutexUnlock(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferMutexUnlock(this, a);
+}
+
+function ArrayBufferMutexSize(obj) {
+ return %ArrayBufferMutexSize(obj);
+}
+
+function ArrayBufferCondInit(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferCondInit(this, a);
+}
+
+function ArrayBufferCondDestroy(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferCondDestroy(this, a);
+}
+
+function ArrayBufferCondWait(caddr, maddr) {
+ var ca = TO_INTEGER(caddr);
+ var ma = TO_INTEGER(maddr);
+ return %ArrayBufferCondWait(this, ca, ma);
+}
+
+function ArrayBufferCondSignal(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferCondSignal(this, a);
+}
+
+function ArrayBufferCondBroadcast(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferCondBroadcast(this, a);
+}
+
+function ArrayBufferCondSize(obj) {
+ return %ArrayBufferCondSize(obj);
+}
+
+function ArrayBufferBarrierInit(addr, count) {
+ var a = TO_INTEGER(addr);
+ var c = TO_INTEGER(count);
+ return %ArrayBufferBarrierInit(this, a, c);
+}
+
+function ArrayBufferBarrierDestroy(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferBarrierDestroy(this, a);
+}
+
+function ArrayBufferBarrierWait(addr) {
+ var a = TO_INTEGER(addr);
+ return %ArrayBufferBarrierWait(this, a);
+}
+
+function ArrayBufferBarrierSize(obj) {
+ return %ArrayBufferBarrierSize(obj);
+}
+
function SetUpArrayBuffer() {
%CheckIsBootstrapping();
@@ -101,11 +184,28 @@ function SetUpArrayBuffer() {
InstallGetter($ArrayBuffer.prototype, "byteLength", ArrayBufferGetByteLength);
+ InstallGetter($ArrayBuffer.prototype, "shared", ArrayBufferGetShared);
+
InstallFunctions($ArrayBuffer, DONT_ENUM, $Array(
"isView", ArrayBufferIsView
));
InstallFunctions($ArrayBuffer.prototype, DONT_ENUM, $Array(
+ "mutexInit", ArrayBufferMutexInit,
+ "mutexDestroy", ArrayBufferMutexDestroy,
+ "mutexLock", ArrayBufferMutexLock,
+ "mutexUnlock", ArrayBufferMutexUnlock,
+ "mutexSize", ArrayBufferMutexSize,
+ "condInit", ArrayBufferCondInit,
+ "condDestroy", ArrayBufferCondDestroy,
+ "condWait", ArrayBufferCondWait,
+ "condSignal", ArrayBufferCondSignal,
+ "condBroadcast", ArrayBufferCondBroadcast,
+ "condSize", ArrayBufferCondSize,
+ "barrierInit", ArrayBufferBarrierInit,
+ "barrierDestroy", ArrayBufferBarrierDestroy,
+ "barrierWait", ArrayBufferBarrierWait,
+ "barrierSize", ArrayBufferBarrierSize,
"slice", ArrayBufferSlice
));
}
« no previous file with comments | « src/api.cc ('k') | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698