-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Re-land [WASM-Function-References] Fix block signature parsing for reftypes https://bugs.webkit.org/show_bug.cgi?id=247383 #17146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
EWS run on previous version of this PR (hash 97a7f7f) |
97a7f7f to
df44828
Compare
|
EWS run on previous version of this PR (hash df44828) |
justinmichaud
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me, with some tiny suggestions to make the control flow more clear
df44828 to
bca8358
Compare
|
EWS run on current version of this PR (hash bca8358) |
|
Failed ios-wk2-wpt, api-gtk checks. Please resolve failures and re-apply Rejecting #17146 from merge queue. |
|
Safe-Merge-Queue: Build #4713. |
…ftypes https://bugs.webkit.org/show_bug.cgi?id=247383 Reviewed by Justin Michaud. This is a re-land of this patch that removes a perf issue introduced in the previous attempts. Adds a fast path for parsing potentially nested blocks with simple (one byte) type signatures. Also changes BlockSignature definition in order to avoid redundant calls to as<FunctionSignature>(). Also fixes the error case when a block signature refers to a non-function type. * JSTests/wasm/function-references/block_signature.js: Added. (module): (async blockSignatureTest): * JSTests/wasm/gc-spec-tests/type-equivalence.wast.js: * JSTests/wasm/gc-spec-tests/type-subtyping.wast.js: * JSTests/wasm/gc/block.js: Added. (testBlockType): * Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::B3IRGenerator::ControlData::ControlData): (JSC::Wasm::B3IRGenerator::ControlData::hasNonVoidresult const): (JSC::Wasm::B3IRGenerator::ControlData::branchTargetArity const): (JSC::Wasm::B3IRGenerator::ControlData::branchTargetType const): (JSC::Wasm::B3IRGenerator::toB3ResultType): (JSC::Wasm::B3IRGenerator::addLoop): (JSC::Wasm::B3IRGenerator::addElseToUnreachable): (JSC::Wasm::B3IRGenerator::endBlock): (JSC::Wasm::B3IRGenerator::addEndToUnreachable): * Source/JavaScriptCore/wasm/WasmBBQJIT.cpp: (JSC::Wasm::BBQJIT::ControlData::ControlData): (JSC::Wasm::BBQJIT::ControlData::branchTargetArity const): (JSC::Wasm::BBQJIT::ControlData::branchTargetType const): (JSC::Wasm::BBQJIT::ControlData::argumentType const): (JSC::Wasm::BBQJIT::addBlock): (JSC::Wasm::BBQJIT::addLoop): (JSC::Wasm::BBQJIT::addIf): (JSC::Wasm::BBQJIT::addElse): (JSC::Wasm::BBQJIT::addElseToUnreachable): (JSC::Wasm::BBQJIT::addTry): (JSC::Wasm::BBQJIT::addEndToUnreachable): * Source/JavaScriptCore/wasm/WasmCallingConvention.h: (JSC::Wasm::WasmCallingConvention::callInformationFor const): * Source/JavaScriptCore/wasm/WasmFormat.h: (JSC::Wasm::isValueType): * Source/JavaScriptCore/wasm/WasmFunctionParser.h: (JSC::Wasm::splitStack): (JSC::Wasm::FunctionParser<Context>::parseBody): (JSC::Wasm::FunctionParser<Context>::unify): (JSC::Wasm::FunctionParser<Context>::parseNestedBlocksEagerly): (JSC::Wasm::FunctionParser<Context>::parseExpression): (JSC::Wasm::FunctionParser<Context>::switchToBlock): * Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp: (JSC::Wasm::IPIntControlType::branchTargetType const): (JSC::Wasm::IPIntControlType::branchTargetArity const): (JSC::Wasm::IPIntGenerator::addElse): (JSC::Wasm::IPIntGenerator::addEndToUnreachable): (JSC::Wasm::IPIntGenerator::endTopLevel): * Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp: (JSC::Wasm::LLIntGenerator::ControlType::loop): (JSC::Wasm::LLIntGenerator::ControlType::block): (JSC::Wasm::LLIntGenerator::ControlType::if_): (JSC::Wasm::LLIntGenerator::ControlType::createTry): (JSC::Wasm::LLIntGenerator::ControlType::branchTargetArity const): (JSC::Wasm::LLIntGenerator::ControlType::branchTargetType const): (JSC::Wasm::LLIntGenerator::addElseToUnreachable): (JSC::Wasm::LLIntGenerator::addReturn): (JSC::Wasm::LLIntGenerator::addEndToUnreachable): (JSC::Wasm::LLIntGenerator::endTopLevel): * Source/JavaScriptCore/wasm/WasmParser.h: (JSC::Wasm::Parser<SuccessType>::parseBlockSignature): (JSC::Wasm::Parser<SuccessType>::parseReftypeSignature): * Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp: (JSC::Wasm::TypeInformation::TypeInformation): * Source/JavaScriptCore/wasm/WasmTypeDefinition.h: (JSC::Wasm::TypeInformation::thunkFor const): Canonical link: https://commits.webkit.org/271262@main
bca8358 to
9a518a5
Compare
|
Committed 271262@main (9a518a5): https://commits.webkit.org/271262@main Reviewed commits have been landed. Closing PR #17146 and removing active labels. |
9a518a5
bca8358
🧪 ios-wk2-wpt