%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/test/mjsunit/wasm/
Upload File :
Create Path :
Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/test/mjsunit/wasm/worker-memory.js

// Copyright 2017 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.

(function TestPostMessageUnsharedMemory() {
  let worker = new Worker('', {type: 'string'});
  let memory = new WebAssembly.Memory({initial: 1, maximum: 2});

  assertThrows(() => worker.postMessage(memory), Error);
})();

(function TestPostMessageUnsharedMemoryBuffer() {
  let worker = new Worker('', {type: 'string'});
  let memory = new WebAssembly.Memory({initial: 1, maximum: 2});

  worker.postMessage(memory.buffer);
  assertThrows(() => {
    worker.postMessage(memory.buffer, [memory.buffer])
  }, Error)
  assertThrows(() => {
    worker.postMessage(undefined, [memory.buffer])
  }, Error)
})();

// Can't use assert in a worker.
function workerHelpersHelper() {
  assertTrue = function(value, msg) {
    if (!value) {
      postMessage("Error: " + msg);
      throw new Error("Exit");  // To stop testing.
    }
   }

  assertIsWasmMemory = function(memory, expectedSize) {
    assertTrue(memory instanceof WebAssembly.Memory,
               "object is not a WebAssembly.Memory");

    assertTrue(memory.buffer instanceof SharedArrayBuffer,
               "object.buffer is not a SharedArrayBuffer");

    assertTrue(memory.buffer.byteLength == expectedSize,
               "object.buffer.byteLength is not " + expectedSize + " bytes");
  }
}

let workerHelpers = "(" + workerHelpersHelper.toString() + ")()";

(function TestPostMessageSharedMemory() {
  function workerCode(workerHelpers) {
    eval(workerHelpers);
    onmessage = function(memory) {
      assertIsWasmMemory(memory, 65536);
      postMessage("OK");
    };
  }

  let worker = new Worker(workerCode,
                         {type: 'function', arguments: [workerHelpers]});
  let memory = new WebAssembly.Memory({initial: 1, maximum: 2, shared: true});
  worker.postMessage(memory);
  assertEquals("OK", worker.getMessage());
  worker.terminate();
})();

(function TestPostMessageComplexObjectWithSharedMemory() {
  function workerCode(workerHelpers) {
    eval(workerHelpers);
    onmessage = function(obj) {
       assertIsWasmMemory(obj.memories[0], 65536);
       assertIsWasmMemory(obj.memories[1], 65536);
       assertTrue(obj.buffer instanceof SharedArrayBuffer,
                  "buffer is not a SharedArrayBuffer");
       assertTrue(obj.memories[0] === obj.memories[1], "memories aren't equal");
       assertTrue(obj.memories[0].buffer === obj.buffer,
                  "buffers aren't equal");
       assertTrue(obj.foo === 1, "foo is not 1");
       postMessage("OK");
    };
  }

  let worker = new Worker(workerCode,
                          {type: 'function', arguments: [workerHelpers]});
  let memory = new WebAssembly.Memory({initial: 1, maximum: 2, shared: true});
  let obj = {memories: [memory, memory], buffer: memory.buffer, foo: 1};
  worker.postMessage(obj);
  assertEquals("OK", worker.getMessage());
  worker.terminate();
})();

(function TestTwoWorkers() {
  function workerCode(workerHelpers) {
    eval(workerHelpers);
    onmessage = function(memory) {
       assertIsWasmMemory(memory, 65536);
       postMessage("OK");
    };
  }

  let workers = [new Worker(workerCode,
                            {type: 'function', arguments: [workerHelpers]}),
                 new Worker(workerCode,
                            {type: 'function', arguments: [workerHelpers]})];
  let memory = new WebAssembly.Memory({initial: 1, maximum: 2, shared: true});
  for (let worker of workers) {
    worker.postMessage(memory);
    assertEquals("OK", worker.getMessage());
    worker.terminate();
  }
})();

Zerion Mini Shell 1.0