Skip to content
Permalink
Browse files
WebAssembly: We should be able to postMessage a JSWebAssemblyModule
https://bugs.webkit.org/show_bug.cgi?id=170573

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch adds a callback to JSRunLoopTimer to notify
clients that a timer has been set. This is used inside
WorkerRunLoop in WebCore so that its RunLoop can perform
an iteration when it sees that a timer got set.

* JavaScriptCore.xcodeproj/project.pbxproj:
* runtime/JSRunLoopTimer.cpp:
(JSC::JSRunLoopTimer::scheduleTimer):
(JSC::JSRunLoopTimer::addTimerSetNotification):
(JSC::JSRunLoopTimer::removeTimerSetNotification):
* runtime/JSRunLoopTimer.h:
* wasm/WasmCodeBlock.cpp:
(JSC::Wasm::CodeBlock::~CodeBlock):
* wasm/WasmCodeBlock.h:
* wasm/WasmModule.cpp:
(JSC::Wasm::Module::~Module):
(JSC::Wasm::Module::signatureIndexFromFunctionIndexSpace):
(JSC::Wasm::makeValidationCallback):
(JSC::Wasm::Module::validateSync):
(JSC::Wasm::Module::validateAsync):
(JSC::Wasm::Module::validateSyncImpl): Deleted.
(JSC::Wasm::Module::makeValidationCallback): Deleted.
* wasm/WasmModule.h:
(JSC::Wasm::Module::validateSync): Deleted.
(JSC::Wasm::Module::validateAsync): Deleted.
(JSC::Wasm::Module::signatureIndexFromFunctionIndexSpace): Deleted.
(JSC::Wasm::Module::nonNullCodeBlock): Deleted.
* wasm/js/JSWebAssemblyCodeBlock.cpp:
(JSC::JSWebAssemblyCodeBlock::create):
* wasm/js/JSWebAssemblyCodeBlock.h:
(JSC::JSWebAssemblyCodeBlock::create): Deleted.
* wasm/js/JSWebAssemblyModule.cpp:
(JSC::JSWebAssemblyModule::source):
* wasm/js/JSWebAssemblyModule.h:
(JSC::JSWebAssemblyModule::source): Deleted.
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction):
* wasm/js/WebAssemblyModulePrototype.cpp:

Source/WebCore:

This patch's main purpose is to implement postMessage of JSWebAssemblyModule.
The spec text describing the behavior is: https://github.com/WebAssembly/design/blob/master/JS.md#structured-clone-of-a-webassemblymodule
We only allow for JSWebAssemblyModule to be serialized in the postMessage
context. More work needs to be done to make it valid to store a module in
IndexDB.

All that is needed to serialize a JSWebAssemblyModule is grab a Ref
to its underlying Wasm::Module. So, when doing a postMessage, all we
do is grab this Ref, and then re-create the JSWebAssemblyModule from
the Wasm::Module in the new VM/global object. Because the code for
Wasm::Module is VM-independent, this is all that's needed. This turned
out nicely, because it requires little knowledge from WebCore about
what it means to clone a JSWebAssemblyModule.

The second significant part of this patch is teaching WorkerRunLoop about
the various timers inside JSC. Before, the WorkerRunLoop wouldn't always
wake up to address JSC timers. I noticed this bug when I was writing
tests to make sure that Wasm was running concurrently in different
workers. The bug is that the WorkerRunLoop's message queue has no insight
into a timer being scheduled. This effected the PromiseDeferredTimer that
Wasm uses, as well as the various GC timers that Heap uses. Now, WorkerRunLoop
will set itself up to be notified when timers are set. When a timer is
set, the WorkerRunLoop will perform an iteration to to reset its top
level MessageQueue timeout to be no longer than the next timer fire date.

Tests: storage/indexeddb/wasm-exceptions.html
       workers/wasm-hashset-many.html
       workers/wasm-hashset.html
       workers/wasm-long-compile-many.html
       workers/wasm-long-compile.html

* ForwardingHeaders/heap/GCActivityCallback.h: Added.
* ForwardingHeaders/runtime/JSRunLoopTimer.h: Added.
* ForwardingHeaders/runtime/PromiseDeferredTimer.h: Added.
* ForwardingHeaders/wasm: Added.
* ForwardingHeaders/wasm/js: Added.
* ForwardingHeaders/wasm/js/JSWebAssemblyModule.h: Added.
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::serialize):
(WebCore::CloneSerializer::CloneSerializer):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneDeserializer::deserialize):
(WebCore::CloneDeserializer::CloneDeserializer):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::SerializedScriptValue::SerializedScriptValue):
(WebCore::SerializedScriptValue::create):
(WebCore::SerializedScriptValue::deserialize):
* bindings/js/SerializedScriptValue.h:
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::addTimerSetNotification):
(WebCore::WorkerScriptController::removeTimerSetNotification):
* bindings/js/WorkerScriptController.h:
* workers/WorkerRunLoop.cpp:
(WebCore::WorkerRunLoop::runInMode):

LayoutTests:

* storage/indexeddb/resources/wasm-exceptions.js: Added.
(const._fail):
(const.isNotA.assert.isNotA):
(const):
(switch.typeof):
(Builder):
(Builder.prototype.setChecked):
(Builder.prototype.setPreamble):
(Builder.prototype._functionIndexSpaceKeyHash):
(Builder.prototype._registerFunctionToIndexSpace):
(Builder.prototype._getFunctionFromIndexSpace):
(Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):
(Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.const.codeBuilder.End.switch.case.string_appeared_here.e):
(Builder.prototype._registerSectionBuilders.this.Unknown):
(prepareDatabase):
(testDatabase):
* storage/indexeddb/wasm-exceptions-expected.txt: Added.
* storage/indexeddb/wasm-exceptions.html: Added.
* workers/wasm-hashset: Added.
* workers/wasm-hashset-expected.txt: Added.
* workers/wasm-hashset-many-expected.txt: Added.
* workers/wasm-hashset-many.html: Added.
* workers/wasm-hashset.html: Added.
* workers/wasm-hashset/many-test.js: Added.
(reallyDone):
(console.log):
(console.error):
(console.assert):
(i.worker.onmessage):
(Module.print):
(Module.printErr):
(Module.canvas):
(Module.setStatus):
(Module):
(setValue):
(getValue):
(allocate):
(getMemory):
(Pointer_stringify):
(AsciiToString):
(stringToAscii):
(UTF8ArrayToString):
(UTF8ToString):
(stringToUTF8Array):
(stringToUTF8):
(lengthBytesUTF8):
(demangle):
(demangleAll):
(stackTrace):
(alignUp):
(updateGlobalBuffer):
(updateGlobalBufferViews):
(abortOnCannotGrowMemory):
(enlargeMemory):
(getTotalMemory):
(callRuntimeCallbacks):
(preRun):
(ensureInitRuntime):
(preMain):
(exitRuntime):
(postRun):
(addOnPreRun):
(addOnInit):
(addOnPreMain):
(addOnExit):
(addOnPostRun):
(intArrayFromString):
(intArrayToString):
(writeStringToMemory):
(writeArrayToMemory):
(writeAsciiToMemory):
(Math.string_appeared_here):
(addRunDependency):
(removeRunDependency):
(integrateWasmJS.asm2wasmImports.string_appeared_here):
(integrateWasmJS.lookupImport):
(integrateWasmJS.mergeMemory):
(integrateWasmJS.fixImports):
(integrateWasmJS.getBinary):
(integrateWasmJS.doJustAsm):
(integrateWasmJS.receiveInstance):
(integrateWasmJS.):
(integrateWasmJS.doNativeWasm):
(integrateWasmJS.doWasmPolyfill):
(integrateWasmJS.Module.string_appeared_here):
(integrateWasmJS):
(___setErrNo):
(__ZSt18uncaught_exceptionv):
(EXCEPTIONS.deAdjust):
(EXCEPTIONS.addRef):
(EXCEPTIONS.decRef):
(EXCEPTIONS.clearRef):
(___cxa_find_matching_catch):
(___gxx_personality_v0):
(___lock):
(_emscripten_memcpy_big):
(_gettimeofday):
(_abort):
(SYSCALLS):
(SYSCALLS.get getStr):
(SYSCALLS.get64):
(SYSCALLS.getZero):
(try.___syscall146.printChar):
(___syscall146):
(___syscall54):
(___unlock):
(___syscall6):
(invoke_ii):
(invoke_iiii):
(invoke_v):
(_malloc.Module.string_appeared_here):
(getTempRet0.Module.string_appeared_here):
(_free.Module.string_appeared_here):
(_main.Module.string_appeared_here):
(setTempRet0.Module.string_appeared_here):
(establishStackSpace.Module.string_appeared_here):
(stackSave.Module.string_appeared_here):
(_memset.Module.string_appeared_here):
(_sbrk.Module.string_appeared_here):
(_emscripten_get_global_libc.Module.string_appeared_here):
(_memcpy.Module.string_appeared_here):
(___errno_location.Module.string_appeared_here):
(setThrew.Module.string_appeared_here):
(_fflush.Module.string_appeared_here):
(stackAlloc.Module.string_appeared_here):
(stackRestore.Module.string_appeared_here):
(_llvm_bswap_i32.Module.string_appeared_here):
(runPostSets.Module.string_appeared_here):
(dynCall_ii.Module.string_appeared_here):
(dynCall_iiii.Module.string_appeared_here):
(dynCall_v.Module.string_appeared_here):
(else.applyMemoryInitializer):
(else):
(else.useRequest):
(ExitStatus):
(dependenciesFulfilled):
(Module.string_appeared_here.Module.callMain.callMain.pad):
(Module.string_appeared_here.Module.callMain):
(run.doRun):
(run):
(exit):
* workers/wasm-hashset/many-worker.js: Added.
(console.log):
(console.error):
(console.assert):
(Module.print):
(Module.printErr):
(Module.canvas):
(Module.setStatus):
(Module):
(setValue):
(getValue):
(allocate):
(getMemory):
(Pointer_stringify):
(AsciiToString):
(stringToAscii):
(UTF8ArrayToString):
(UTF8ToString):
(stringToUTF8Array):
(stringToUTF8):
(lengthBytesUTF8):
(demangle):
(demangleAll):
(stackTrace):
(alignUp):
(updateGlobalBuffer):
(updateGlobalBufferViews):
(abortOnCannotGrowMemory):
(enlargeMemory):
(getTotalMemory):
(callRuntimeCallbacks):
(preRun):
(ensureInitRuntime):
(preMain):
(exitRuntime):
(postRun):
(addOnPreRun):
(addOnInit):
(addOnPreMain):
(addOnExit):
(addOnPostRun):
(intArrayFromString):
(intArrayToString):
(writeStringToMemory):
(writeArrayToMemory):
(writeAsciiToMemory):
(Math.string_appeared_here):
(addRunDependency):
(removeRunDependency):
(integrateWasmJS.asm2wasmImports.string_appeared_here):
(integrateWasmJS.lookupImport):
(integrateWasmJS.mergeMemory):
(integrateWasmJS.fixImports):
(integrateWasmJS.getBinary):
(integrateWasmJS.doJustAsm):
(integrateWasmJS.receiveInstance):
(integrateWasmJS.doNativeWasm):
(integrateWasmJS.doWasmPolyfill):
(integrateWasmJS.Module.string_appeared_here):
(integrateWasmJS):
(___setErrNo):
(__ZSt18uncaught_exceptionv):
(EXCEPTIONS.deAdjust):
(EXCEPTIONS.addRef):
(EXCEPTIONS.decRef):
(EXCEPTIONS.clearRef):
(___cxa_find_matching_catch):
(___gxx_personality_v0):
(___lock):
(_emscripten_memcpy_big):
(_gettimeofday):
(_abort):
(SYSCALLS):
(SYSCALLS.get getStr):
(SYSCALLS.get64):
(SYSCALLS.getZero):
(try.___syscall146.printChar):
(___syscall146):
(___syscall54):
(___unlock):
(___syscall6):
(invoke_ii):
(invoke_iiii):
(invoke_v):
(_malloc.Module.string_appeared_here):
(getTempRet0.Module.string_appeared_here):
(_free.Module.string_appeared_here):
(_main.Module.string_appeared_here):
(setTempRet0.Module.string_appeared_here):
(establishStackSpace.Module.string_appeared_here):
(stackSave.Module.string_appeared_here):
(_memset.Module.string_appeared_here):
(_sbrk.Module.string_appeared_here):
(_emscripten_get_global_libc.Module.string_appeared_here):
(_memcpy.Module.string_appeared_here):
(___errno_location.Module.string_appeared_here):
(setThrew.Module.string_appeared_here):
(_fflush.Module.string_appeared_here):
(stackAlloc.Module.string_appeared_here):
(stackRestore.Module.string_appeared_here):
(_llvm_bswap_i32.Module.string_appeared_here):
(runPostSets.Module.string_appeared_here):
(dynCall_ii.Module.string_appeared_here):
(dynCall_iiii.Module.string_appeared_here):
(dynCall_v.Module.string_appeared_here):
(else.applyMemoryInitializer):
(else):
(else.useRequest):
(ExitStatus):
(dependenciesFulfilled):
(Module.string_appeared_here.Module.callMain.callMain.pad):
(Module.string_appeared_here.Module.callMain):
(run.doRun):
(run):
(exit):
* workers/wasm-hashset/test.js: Added.
(reallyDone):
(console.log):
(console.error):
(console.assert):
(Module.print):
(Module.printErr):
(Module.canvas):
(Module.setStatus):
(Module):
(setValue):
(getValue):
(allocate):
(getMemory):
(Pointer_stringify):
(AsciiToString):
(stringToAscii):
(UTF8ArrayToString):
(UTF8ToString):
(stringToUTF8Array):
(stringToUTF8):
(lengthBytesUTF8):
(demangle):
(demangleAll):
(stackTrace):
(alignUp):
(updateGlobalBuffer):
(updateGlobalBufferViews):
(abortOnCannotGrowMemory):
(enlargeMemory):
(getTotalMemory):
(callRuntimeCallbacks):
(preRun):
(ensureInitRuntime):
(preMain):
(exitRuntime):
(postRun):
(addOnPreRun):
(addOnInit):
(addOnPreMain):
(addOnExit):
(addOnPostRun):
(intArrayFromString):
(intArrayToString):
(writeStringToMemory):
(writeArrayToMemory):
(writeAsciiToMemory):
(Math.string_appeared_here):
(addRunDependency):
(removeRunDependency):
(integrateWasmJS.asm2wasmImports.string_appeared_here):
(integrateWasmJS.lookupImport):
(integrateWasmJS.mergeMemory):
(integrateWasmJS.fixImports):
(integrateWasmJS.getBinary):
(integrateWasmJS.doJustAsm):
(integrateWasmJS.receiveInstance):
(integrateWasmJS.doNativeWasm):
(integrateWasmJS.doWasmPolyfill):
(integrateWasmJS.Module.string_appeared_here):
(integrateWasmJS):
(___setErrNo):
(__ZSt18uncaught_exceptionv):
(EXCEPTIONS.deAdjust):
(EXCEPTIONS.addRef):
(EXCEPTIONS.decRef):
(EXCEPTIONS.clearRef):
(___cxa_find_matching_catch):
(___gxx_personality_v0):
(___lock):
(_emscripten_memcpy_big):
(_gettimeofday):
(_abort):
(SYSCALLS):
(SYSCALLS.get getStr):
(SYSCALLS.get64):
(SYSCALLS.getZero):
(try.___syscall146.printChar):
(___syscall146):
(___syscall54):
(___unlock):
(___syscall6):
(invoke_ii):
(invoke_iiii):
(invoke_v):
(_malloc.Module.string_appeared_here):
(getTempRet0.Module.string_appeared_here):
(_free.Module.string_appeared_here):
(_main.Module.string_appeared_here):
(setTempRet0.Module.string_appeared_here):
(establishStackSpace.Module.string_appeared_here):
(stackSave.Module.string_appeared_here):
(_memset.Module.string_appeared_here):
(_sbrk.Module.string_appeared_here):
(_emscripten_get_global_libc.Module.string_appeared_here):
(_memcpy.Module.string_appeared_here):
(___errno_location.Module.string_appeared_here):
(setThrew.Module.string_appeared_here):
(_fflush.Module.string_appeared_here):
(stackAlloc.Module.string_appeared_here):
(stackRestore.Module.string_appeared_here):
(_llvm_bswap_i32.Module.string_appeared_here):
(runPostSets.Module.string_appeared_here):
(dynCall_ii.Module.string_appeared_here):
(dynCall_iiii.Module.string_appeared_here):
(dynCall_v.Module.string_appeared_here):
(else.applyMemoryInitializer):
(else):
(else.useRequest):
(ExitStatus):
(dependenciesFulfilled):
(Module.string_appeared_here.Module.callMain.callMain.pad):
(Module.string_appeared_here.Module.callMain):
(run.doRun):
(run):
(exit):
* workers/wasm-hashset/worker.js: Added.
(console.log):
(console.error):
(console.assert):
(Module.print):
(Module.printErr):
(Module.canvas):
(Module.setStatus):
(Module):
(setValue):
(getValue):
(allocate):
(getMemory):
(Pointer_stringify):
(AsciiToString):
(stringToAscii):
(UTF8ArrayToString):
(UTF8ToString):
(stringToUTF8Array):
(stringToUTF8):
(lengthBytesUTF8):
(demangle):
(demangleAll):
(stackTrace):
(alignUp):
(updateGlobalBuffer):
(updateGlobalBufferViews):
(abortOnCannotGrowMemory):
(enlargeMemory):
(getTotalMemory):
(callRuntimeCallbacks):
(preRun):
(ensureInitRuntime):
(preMain):
(exitRuntime):
(postRun):
(addOnPreRun):
(addOnInit):
(addOnPreMain):
(addOnExit):
(addOnPostRun):
(intArrayFromString):
(intArrayToString):
(writeStringToMemory):
(writeArrayToMemory):
(writeAsciiToMemory):
(Math.string_appeared_here):
(addRunDependency):
(removeRunDependency):
(integrateWasmJS.asm2wasmImports.string_appeared_here):
(integrateWasmJS.lookupImport):
(integrateWasmJS.mergeMemory):
(integrateWasmJS.fixImports):
(integrateWasmJS.getBinary):
(integrateWasmJS.doJustAsm):
(integrateWasmJS.receiveInstance):
(integrateWasmJS.):
(integrateWasmJS.doNativeWasm):
(integrateWasmJS.doWasmPolyfill):
(integrateWasmJS.Module.string_appeared_here):
(integrateWasmJS):
(___setErrNo):
(__ZSt18uncaught_exceptionv):
(EXCEPTIONS.deAdjust):
(EXCEPTIONS.addRef):
(EXCEPTIONS.decRef):
(EXCEPTIONS.clearRef):
(___cxa_find_matching_catch):
(___gxx_personality_v0):
(___lock):
(_emscripten_memcpy_big):
(_gettimeofday):
(_abort):
(SYSCALLS):
(SYSCALLS.get getStr):
(SYSCALLS.get64):
(SYSCALLS.getZero):
(try.___syscall146.printChar):
(___syscall146):
(___syscall54):
(___unlock):
(___syscall6):
(invoke_ii):
(invoke_iiii):
(invoke_v):
(_malloc.Module.string_appeared_here):
(getTempRet0.Module.string_appeared_here):
(_free.Module.string_appeared_here):
(_main.Module.string_appeared_here):
(setTempRet0.Module.string_appeared_here):
(establishStackSpace.Module.string_appeared_here):
(stackSave.Module.string_appeared_here):
(_memset.Module.string_appeared_here):
(_sbrk.Module.string_appeared_here):
(_emscripten_get_global_libc.Module.string_appeared_here):
(_memcpy.Module.string_appeared_here):
(___errno_location.Module.string_appeared_here):
(setThrew.Module.string_appeared_here):
(_fflush.Module.string_appeared_here):
(stackAlloc.Module.string_appeared_here):
(stackRestore.Module.string_appeared_here):
(_llvm_bswap_i32.Module.string_appeared_here):
(runPostSets.Module.string_appeared_here):
(dynCall_ii.Module.string_appeared_here):
(dynCall_iiii.Module.string_appeared_here):
(dynCall_v.Module.string_appeared_here):
(else.applyMemoryInitializer):
(else):
(else.useRequest):
(ExitStatus):
(dependenciesFulfilled):
(Module.string_appeared_here.Module.callMain.callMain.pad):
(Module.string_appeared_here.Module.callMain):
(run.doRun):
(run):
(exit):
* workers/wasm-long-compile-expected.txt: Added.
* workers/wasm-long-compile-many-expected.txt: Added.
* workers/wasm-long-compile-many.html: Added.
* workers/wasm-long-compile.html: Added.
* workers/wasm-resources: Added.
* workers/wasm-resources/long-compile-many.js: Added.
(done):
(i.async.run):
(i.worker.onmessage):
* workers/wasm-resources/long-compile-worker.js: Added.
(const._fail):
(const.isNotA.assert.isNotA):
(const):
(switch.typeof):
(Builder):
(Builder.prototype.setChecked):
(Builder.prototype.setPreamble):
(Builder.prototype._functionIndexSpaceKeyHash):
(Builder.prototype._registerFunctionToIndexSpace):
(Builder.prototype._getFunctionFromIndexSpace):
(Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):
(Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.const.codeBuilder.End.switch.case.string_appeared_here.e):
(Builder.prototype._registerSectionBuilders.this.Unknown):
* workers/wasm-resources/long-compile.js: Added.
(done):
(async.run):
(worker.onmessage):


Canonical link: https://commits.webkit.org/187770@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@215353 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
saambarati committed Apr 14, 2017
1 parent fad734f commit 74dc9c82584af9db86dd1d1b3347a31d12baa0a0
Showing 47 changed files with 14,860 additions and 81 deletions.

Large diffs are not rendered by default.

@@ -981,6 +981,13 @@ webkit.org/b/159370 [ Debug ] fast/history/page-cache-destroy-document.html [ Sk
# This test is just way too slow.
workers/bomb-with-v8.html [ Skip ]

# These tests are slow by design.
workers/wasm-hashset-many.html [ Slow ]
workers/wasm-hashset-many-2.html [ Slow ]
workers/wasm-hashset.html [ Slow ]
workers/wasm-long-compile-many.html [ Slow ]
workers/wasm-long-compile.html [ Slow ]

# WebCryptoAPI tests that take too long to complete
imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.worker.html [ Skip ]
imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.html [ Slow ]

Large diffs are not rendered by default.

@@ -0,0 +1,18 @@
Test that expected exceptions are thrown when storing a Wasm Module into a DB.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;

indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
store = db.createObjectStore('store')
Expecting exception from store.add(module, 'key')
PASS Exception was thrown.
PASS code is DOMException.DATA_CLONE_ERR
Exception message: Failed to store record in an IDBObjectStore: An object could not be cloned.
PASS successfullyParsed is true

TEST COMPLETE

@@ -0,0 +1,9 @@
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="resources/shared.js"></script>
</head>
<body>
<script src="resources/wasm-exceptions.js"></script>
</body>
</html>
@@ -0,0 +1,8 @@
CONSOLE MESSAGE: line 98: about to start worker
CONSOLE MESSAGE: line 107: Byte length of response: 52733
CONSOLE MESSAGE: line 111: Got the wasm module from worker
CONSOLE MESSAGE: line 8: Finished running
PASS successfullyParsed is true

TEST COMPLETE

@@ -0,0 +1,22 @@
CONSOLE MESSAGE: line 24: Got module in main test. Posting to all workers.
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 36: Worker finished
CONSOLE MESSAGE: line 8: Finished running
PASS successfullyParsed is true

TEST COMPLETE

@@ -0,0 +1,13 @@
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<script>
if (window.testRunner)
testRunner.waitUntilDone();
</script>
<script src="./wasm-hashset/many-test-2.js"></script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>
@@ -0,0 +1,21 @@
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 27: Worker finished
CONSOLE MESSAGE: line 8: Finished running
PASS successfullyParsed is true

TEST COMPLETE

@@ -0,0 +1,13 @@
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<script>
if (window.testRunner)
testRunner.waitUntilDone();
</script>
<script src="./wasm-hashset/many-test.js"></script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>
@@ -0,0 +1,13 @@
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<script>
if (window.testRunner)
testRunner.waitUntilDone();
</script>
<script src="./wasm-hashset/test.js"></script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>

0 comments on commit 74dc9c8

Please sign in to comment.