Reviewers: jarin,
Description:
d8 Worker test of SharedArrayBuffer transferring
BUG=chromium:497295
[email protected]
LOG=n
Please review this at https://codereview.chromium.org/1216023003/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+29, -11 lines):
A + test/mjsunit/d8-worker-sharedarraybuffer.js
Index: test/mjsunit/d8-worker-sharedarraybuffer.js
diff --git a/test/mjsunit/d8-worker-spawn-worker.js
b/test/mjsunit/d8-worker-sharedarraybuffer.js
similarity index 66%
copy from test/mjsunit/d8-worker-spawn-worker.js
copy to test/mjsunit/d8-worker-sharedarraybuffer.js
index
b9d7f9ade4fd116837c275a73867eeda26076e5a..99d730690c6b0af09020265fed25c0649638e1fc
100644
--- a/test/mjsunit/d8-worker-spawn-worker.js
+++ b/test/mjsunit/d8-worker-sharedarraybuffer.js
@@ -25,22 +25,40 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Flags: --harmony-sharedarraybuffer --harmony-atomics
+
if (this.Worker) {
function f() {
- var g = function () {
- postMessage(42);
- };
+ onmessage = function(m) {
+ var sab = m;
+ var ta = new Uint32Array(sab);
+ if (sab.byteLength !== 16)
+ throw new Error("SharedArrayBuffer transfer byteLength");
+ for (var i = 0; i < 4; ++i)
+ if (ta[i] !== i)
+ throw new Error("SharedArrayBuffer transfer value " + i);
- var w = new Worker(g);
-
- onmessage = function(parentMsg) {
- w.postMessage(parentMsg);
- var childMsg = w.getMessage();
- postMessage(childMsg);
+ // Atomically update ta[0]
+ Atomics.store(ta, 0, 100);
};
}
var w = new Worker(f);
- w.postMessage(9);
- assertEquals(42, w.getMessage());
+
+ var sab = new SharedArrayBuffer(16);
+ var ta = new Uint32Array(sab);
+ for (var i = 0; i < 4; ++i)
+ ta[i] = i;
+
+ // Transfer SharedArrayBuffer
+ w.postMessage(sab, [sab]);
+ assertEquals(16, sab.byteLength); // ArrayBuffer should not neutered.
+
+ // Spinwait for the worker to update ta[0]
+ var ta0;
+ while ((ta0 = Atomics.load(ta, 0)) == 0);
+
+ assertEquals(100, ta0);
+
+ w.terminate();
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.