/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
deps/v8/test/mjsunit/shared-memory/shared-string.js
47 строк
2 KB
Michaël Zasso
deps: update V8 to 12.8.374.13
16 авг 2024, 17:03
Не верифицирован
16 авг 2024, 17:03
9d7cd9b
Код
Авторство
О чём код?
// Copyright 2021 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. // // Flags: --harmony-struct --shared-string-table --allow-natives-syntax if (this.Worker) { (function TestSharedStringPostMessage() { let workerScript = `let Box = new SharedStructType(['payload']); let b1 = new Box(); b1.payload = "started"; postMessage(b1); onmessage = function({data:box}) { if (!%IsSharedString(box.payload)) { throw new Error("str isn't shared"); } let b2 = new Box(); b2.payload = box.payload; postMessage(b2); };`; // Strings referenced in shared structs are serialized by sharing. let worker = new Worker(workerScript, { type: 'string' }); let started = worker.getMessage(); assertTrue(%IsSharedString(started.payload)); assertEquals("started", started.payload); // The string literal appears in source and is internalized, so should // already be shared. let Box = new SharedStructType(['payload']); let box_to_send = new Box(); box_to_send.payload = 'foo'; assertTrue(%IsSharedString(box_to_send.payload)); worker.postMessage(box_to_send); let box_received = worker.getMessage(); assertTrue(%IsSharedString(box_received.payload)); assertFalse(box_to_send === box_received); // Object.is and === won't check pointer equality of Strings. assertTrue(%IsSameHeapObject(box_to_send.payload, box_received.payload)); worker.terminate(); })(); }