Changeset 215103 in webkit for trunk/Source/JavaScriptCore/ChangeLog
- Timestamp:
- Apr 7, 2017, 11:25:14 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r215088 r215103 1 2017-04-07 Saam Barati <[email protected]> 2 3 WebAssembly: Make to a compilation API that allows for multi-VM concurrent compilations of Wasm Modules 4 https://bugs.webkit.org/show_bug.cgi?id=170488 5 6 Reviewed by JF Bastien. 7 8 This patch adds a class called Wasm::Module. It contains the bits from 9 JSWebAssemblyModule that were not VM specific. JSWebAssemblyModule 10 now has a Ref<Wasm::Module>. Similarly, there is now a Wasm::CodeBlock, 11 which owns the non-VM-specific bits that JSWebAssemblyCodeBlock used 12 to own. 13 14 This patch also simplifies how we verify and compile code. Wasm::Module 15 now has an API for both sync/async validation and compilation. This 16 API abstracts away how Wasm::Plan works. 17 18 This is hopefully the last patch needed before we can implement 19 window.postMessage for a JSWebAssemblyModule. I think all that's 20 needed now to implement postMessage is simply creating a new 21 JSWebAssemblyModule with the underlying Wasm::Module. 22 23 This patch is neutral on WasmBench. 24 25 Finally, this patch changes the promise deferred timer to 26 allow for new tasks to be added while we're executing 27 a task. Before, we'd deadlock if this happened. 28 29 * CMakeLists.txt: 30 * JavaScriptCore.xcodeproj/project.pbxproj: 31 * jsc.cpp: 32 (functionTestWasmModuleFunctions): 33 * runtime/PromiseDeferredTimer.cpp: 34 (JSC::PromiseDeferredTimer::doWork): 35 (JSC::PromiseDeferredTimer::scheduleWorkSoon): 36 * runtime/PromiseDeferredTimer.h: 37 * wasm/WasmB3IRGenerator.cpp: 38 * wasm/WasmBinding.cpp: 39 (JSC::Wasm::wasmToJs): 40 (JSC::Wasm::wasmToWasm): 41 (JSC::Wasm::exitStubGenerator): Deleted. 42 * wasm/WasmBinding.h: 43 * wasm/WasmCodeBlock.cpp: Added. 44 (JSC::Wasm::CodeBlock::CodeBlock): 45 (JSC::Wasm::CodeBlock::waitUntilFinished): 46 (JSC::Wasm::CodeBlock::compileAsync): 47 (JSC::Wasm::CodeBlock::isSafeToRun): 48 * wasm/WasmCodeBlock.h: Added. 49 (JSC::Wasm::CodeBlock::create): 50 (JSC::Wasm::CodeBlock::compilationFinished): 51 (JSC::Wasm::CodeBlock::runnable): 52 (JSC::Wasm::CodeBlock::errorMessage): 53 (JSC::Wasm::CodeBlock::functionImportCount): 54 (JSC::Wasm::CodeBlock::jsEntrypointCalleeFromFunctionIndexSpace): 55 (JSC::Wasm::CodeBlock::wasmEntrypointCalleeFromFunctionIndexSpace): 56 * wasm/WasmModule.cpp: Added. 57 (JSC::Wasm::Module::Module): 58 (JSC::Wasm::makeValidationResult): 59 (JSC::Wasm::Module::validateSyncImpl): 60 (JSC::Wasm::Module::getOrCreateCodeBlock): 61 (JSC::Wasm::Module::compileSync): 62 (JSC::Wasm::Module::makeValidationCallback): 63 (JSC::Wasm::Module::compileAsync): 64 * wasm/WasmModule.h: Added. 65 (JSC::Wasm::Module::create): 66 (JSC::Wasm::Module::validateSync): 67 (JSC::Wasm::Module::validateAsync): 68 (JSC::Wasm::Module::signatureIndexFromFunctionIndexSpace): 69 (JSC::Wasm::Module::moduleInformation): 70 (JSC::Wasm::Module::nonNullCodeBlock): 71 * wasm/WasmPlan.cpp: 72 (JSC::Wasm::Plan::Plan): 73 (JSC::Wasm::Plan::addCompletionTask): 74 (JSC::Wasm::Plan::prepare): 75 (JSC::Wasm::Plan::compileFunctions): 76 (JSC::Wasm::Plan::complete): 77 (JSC::Wasm::Plan::tryRemoveVMAndCancelIfLast): 78 (JSC::Wasm::Plan::cancel): Deleted. 79 * wasm/WasmPlan.h: 80 (JSC::Wasm::Plan::dontFinalize): 81 (JSC::Wasm::Plan::takeWasmToWasmExitStubs): 82 (JSC::Wasm::Plan::mode): 83 (JSC::Wasm::Plan::takeWasmExitStubs): Deleted. 84 (JSC::Wasm::Plan::vm): Deleted. 85 * wasm/WasmWorklist.cpp: 86 (JSC::Wasm::Worklist::stopAllPlansForVM): 87 * wasm/js/JSWebAssemblyCodeBlock.cpp: 88 (JSC::JSWebAssemblyCodeBlock::JSWebAssemblyCodeBlock): 89 (JSC::JSWebAssemblyCodeBlock::isSafeToRun): 90 (JSC::JSWebAssemblyCodeBlock::initialize): Deleted. 91 * wasm/js/JSWebAssemblyCodeBlock.h: 92 (JSC::JSWebAssemblyCodeBlock::create): 93 (JSC::JSWebAssemblyCodeBlock::functionImportCount): 94 (JSC::JSWebAssemblyCodeBlock::jsEntrypointCalleeFromFunctionIndexSpace): 95 (JSC::JSWebAssemblyCodeBlock::wasmEntrypointCalleeFromFunctionIndexSpace): 96 (JSC::JSWebAssemblyCodeBlock::wasmToJsCallStubForImport): 97 (JSC::JSWebAssemblyCodeBlock::mode): Deleted. 98 (JSC::JSWebAssemblyCodeBlock::initialized): Deleted. 99 (JSC::JSWebAssemblyCodeBlock::plan): Deleted. 100 (JSC::JSWebAssemblyCodeBlock::runnable): Deleted. 101 (JSC::JSWebAssemblyCodeBlock::errorMessage): Deleted. 102 (JSC::JSWebAssemblyCodeBlock::setJSEntrypointCallee): Deleted. 103 (JSC::JSWebAssemblyCodeBlock::setWasmEntrypointCallee): Deleted. 104 * wasm/js/JSWebAssemblyInstance.cpp: 105 (JSC::JSWebAssemblyInstance::finalizeCreation): 106 (JSC::JSWebAssemblyInstance::addUnitializedCodeBlock): Deleted. 107 * wasm/js/JSWebAssemblyInstance.h: 108 (JSC::JSWebAssemblyInstance::initialized): Deleted. 109 * wasm/js/JSWebAssemblyModule.cpp: 110 (JSC::JSWebAssemblyModule::createStub): 111 (JSC::JSWebAssemblyModule::JSWebAssemblyModule): 112 (JSC::JSWebAssemblyModule::finishCreation): 113 * wasm/js/JSWebAssemblyModule.h: 114 (JSC::JSWebAssemblyModule::moduleInformation): 115 (JSC::JSWebAssemblyModule::signatureIndexFromFunctionIndexSpace): 116 (JSC::JSWebAssemblyModule::module): 117 * wasm/js/WebAssemblyFunction.cpp: 118 (JSC::WebAssemblyFunction::create): 119 * wasm/js/WebAssemblyInstanceConstructor.cpp: 120 (JSC::constructJSWebAssemblyInstance): 121 * wasm/js/WebAssemblyModuleConstructor.cpp: 122 (JSC::WebAssemblyModuleConstructor::createModule): 123 * wasm/js/WebAssemblyPrototype.cpp: 124 (JSC::reject): 125 (JSC::webAssemblyCompileFunc): 126 (JSC::resolve): 127 (JSC::instantiate): 128 (JSC::compileAndInstantiate): 129 (JSC::webAssemblyValidateFunc): 130 1 131 2017-04-07 Carlos Garcia Campos <[email protected]> 2 132
Note:
See TracChangeset
for help on using the changeset viewer.