Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/js/src/tests/shell/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  mailbox.js   Sprache: JAVA

 
// |reftest| skip-if(!xulRuntime.shell)
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/licenses/publicdomain/
 */


// Tests the shared-object mailbox in the shell.

var hasSharedMemory = !!(this.SharedArrayBuffer &&
                         this.getSharedObject &&
                         this.setSharedObject);

if (!hasSharedMemory) {
    reportCompare(truetrue);
    quit(0);
}

var sab = new SharedArrayBuffer(12);
var mem = new Int32Array(sab);

// SharedArrayBuffer mailbox tests

assertEq(getSharedObject(), null); // Mbx starts empty

assertEq(setSharedObject(mem.buffer), undefined); // Setter returns undefined
assertEq(getSharedObject() == nullfalse);       // And then the mbx is not empty

var v = getSharedObject();
assertEq(v.byteLength, mem.buffer.byteLength); // Looks like what we put in?
var w = new Int32Array(v);
mem[0] = 314159;
assertEq(w[0], 314159);  // Shares memory (locally) with what we put in?
mem[0] = 0;

setSharedObject(3.14); // Share numbers
assertEq(getSharedObject(), 3.14);

setSharedObject(null); // Setting to null clears to null
assertEq(getSharedObject(), null);

setSharedObject(mem.buffer);
setSharedObject(undefined); // Setting to undefined clears to null
assertEq(getSharedObject(), null);

setSharedObject(mem.buffer);
setSharedObject();  // Setting without arguments clears to null
assertEq(getSharedObject(), null);

// Non-shared objects cannot be stored in the mbx

assertThrowsInstanceOf(() => setSharedObject({x:10, y:20}), Error);
assertThrowsInstanceOf(() => setSharedObject([1,2]), Error);
assertThrowsInstanceOf(() => setSharedObject(new ArrayBuffer(10)), Error);
assertThrowsInstanceOf(() => setSharedObject(new Int32Array(10)), Error);
assertThrowsInstanceOf(() => setSharedObject(false), Error);
assertThrowsInstanceOf(() => setSharedObject(mem), Error);
assertThrowsInstanceOf(() => setSharedObject("abracadabra"), Error);
assertThrowsInstanceOf(() => setSharedObject(() => 37), Error);

// We can store wasm shared memories, too

if (!this.WebAssembly || !wasmThreadsEnabled()) {
    reportCompare(truetrue);
    quit(0);
}

setSharedObject(null);

var mem = new WebAssembly.Memory({initial: 1, maximum: 1, shared: true});
setSharedObject(mem);
var ia1 = new Int32Array(mem.buffer);

var mem2 = getSharedObject();
assertEq(mem2.buffer instanceof SharedArrayBuffer, true);
assertEq(mem2.buffer.byteLength, 65536);
var ia2 = new Int32Array(mem2.buffer);

ia2[37] = 0x12345678;
assertEq(ia1[37], 0x12345678);

// Can't store a non-shared memory

assertThrowsInstanceOf(() => setSharedObject(new WebAssembly.Memory({initial: 1, maximum: 1})), Error);

// We can store wasm modules

var mod = new WebAssembly.Module(wasmTextToBinary(`(module
                                                    (import "m" "f" (func (param i32) (result i32)))
                                                    (func (export "hi") (result i32)
                                                     (i32.const 37))
                                                    )`));

setSharedObject(mod);

var mod2 = getSharedObject();

// This should fail because we're not providing the correct import object
assertThrowsInstanceOf(() => new WebAssembly.Instance(mod2, {m:{}}), WebAssembly.LinkError);

// But this should work
new WebAssembly.Instance(mod2, {m:{f:(x) => x}});

reportCompare(true,true);

Messung V0.5
C=64 H=100 G=83

¤ Dauer der Verarbeitung: 0.22 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.