[webkit-changes] [WebKit/WebKit] 37e162: [JSC] Implement Float16Array
Yusuke Suzuki
noreply at github.com
Mon Aug 5 18:59:22 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 37e1627df65ba9930454d8c3483dadd5f258f685
https://github.com/WebKit/WebKit/commit/37e1627df65ba9930454d8c3483dadd5f258f685
Author: Yusuke Suzuki <ysuzuki at apple.com>
Date: 2024-08-05 (Mon, 05 Aug 2024)
Changed paths:
M JSTests/test262/config.yaml
M LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any.worker_81-100-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any_81-100-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.serviceworker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.sharedworker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-clone.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-clone.any.serviceworker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-clone.any.sharedworker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-clone.any.worker-expected.txt
M LayoutTests/js/Object-getOwnPropertyNames-expected.txt
M LayoutTests/js/script-tests/Object-getOwnPropertyNames.js
M LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt
M LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.serviceworker-expected.txt
M LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.sharedworker-expected.txt
M LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt
M LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt
M LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt
M LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt
M LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt
M Source/JavaScriptCore/API/JSTypedArray.cpp
M Source/JavaScriptCore/CMakeLists.txt
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
M Source/JavaScriptCore/builtins/BuiltinNames.h
M Source/JavaScriptCore/bytecode/ArrayProfile.cpp
M Source/JavaScriptCore/bytecode/ArrayProfile.h
M Source/JavaScriptCore/bytecode/LinkTimeConstant.h
M Source/JavaScriptCore/bytecode/Repatch.cpp
M Source/JavaScriptCore/bytecode/SpeculatedType.cpp
M Source/JavaScriptCore/bytecode/SpeculatedType.h
M Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
M Source/JavaScriptCore/dfg/DFGArrayMode.cpp
M Source/JavaScriptCore/dfg/DFGArrayMode.h
M Source/JavaScriptCore/dfg/DFGClobberize.h
M Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
M Source/JavaScriptCore/dfg/DFGOperations.h
M Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp
M Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
M Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
M Source/JavaScriptCore/dfg/DFGStoreBarrierInsertionPhase.cpp
M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
M Source/JavaScriptCore/heap/Heap.h
M Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp
M Source/JavaScriptCore/llint/LowLevelInterpreter.asm
A Source/JavaScriptCore/runtime/Float16Array.h
M Source/JavaScriptCore/runtime/JSCast.h
M Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp
A Source/JavaScriptCore/runtime/JSFloat16Array.h
M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h
M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h
M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h
M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
M Source/JavaScriptCore/runtime/JSType.cpp
M Source/JavaScriptCore/runtime/JSType.h
M Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp
M Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h
M Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp
M Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.h
M Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp
M Source/JavaScriptCore/runtime/JSTypedArrays.cpp
M Source/JavaScriptCore/runtime/JSTypedArrays.h
M Source/JavaScriptCore/runtime/MathObject.cpp
M Source/JavaScriptCore/runtime/OptionsList.h
M Source/JavaScriptCore/runtime/TypedArrayAdaptersForwardDeclarations.h
M Source/JavaScriptCore/runtime/TypedArrayAdaptors.h
M Source/JavaScriptCore/runtime/TypedArrayType.cpp
M Source/JavaScriptCore/runtime/TypedArrayType.h
M Source/WTF/WTF.xcodeproj/project.pbxproj
M Source/WTF/wtf/CMakeLists.txt
A Source/WTF/wtf/Float16.h
M Source/WTF/wtf/text/StringCommon.h
M Source/WebCore/bindings/js/JSDOMConvertBufferSource.h
M Source/WebCore/bindings/js/SerializedScriptValue.cpp
M Source/WebCore/bindings/scripts/CodeGenerator.pm
M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
M Source/WebInspectorUI/UserInterface/Base/Utilities.js
Log Message:
-----------
[JSC] Implement Float16Array
https://bugs.webkit.org/show_bug.cgi?id=257022
rdar://109883982
Reviewed by Yijia Huang.
This patch adds Float16Array implementation. In the subsequent patch, we will implement JIT optimization in ARM64 for Float16Array too.
Basically, it is just a TypedArray with Float16. wtf/Float16.h implements Float16 data structure, and we just use it to implement Float16Array in JSC.
* JSTests/test262/config.yaml:
* LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any.worker_81-100-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any_81-100-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.serviceworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.sharedworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-clone.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-clone.any.serviceworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-clone.any.sharedworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-clone.any.worker-expected.txt:
* LayoutTests/js/Object-getOwnPropertyNames-expected.txt:
* LayoutTests/js/script-tests/Object-getOwnPropertyNames.js:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.serviceworker-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.sharedworker-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt:
* LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt:
* Source/JavaScriptCore/API/JSTypedArray.cpp:
(createTypedArray):
* Source/JavaScriptCore/CMakeLists.txt:
* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/builtins/BuiltinNames.h:
* Source/JavaScriptCore/bytecode/ArrayProfile.cpp:
(JSC::dumpArrayModes):
* Source/JavaScriptCore/bytecode/ArrayProfile.h:
* Source/JavaScriptCore/bytecode/LinkTimeConstant.h:
* Source/JavaScriptCore/bytecode/Repatch.cpp:
(JSC::tryCacheArrayGetByVal):
(JSC::tryCacheArrayPutByVal):
(JSC::tryCacheArrayInByVal):
* Source/JavaScriptCore/bytecode/SpeculatedType.cpp:
(JSC::dumpSpeculation):
(JSC::speculationToAbbreviatedString):
(JSC::speculationFromTypedArrayType):
(JSC::typedArrayTypeFromSpeculation):
(JSC::speculationFromString):
* Source/JavaScriptCore/bytecode/SpeculatedType.h:
(JSC::isFloat16ArraySpeculation):
* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* Source/JavaScriptCore/dfg/DFGArrayMode.cpp:
(JSC::DFG::ArrayMode::fromObserved):
(JSC::DFG::ArrayMode::refine const):
(JSC::DFG::ArrayMode::alreadyChecked const):
(JSC::DFG::arrayTypeToString):
(JSC::DFG::toTypedArrayType):
(JSC::DFG::toArrayType):
(JSC::DFG::permitsBoundsCheckLowering):
* Source/JavaScriptCore/dfg/DFGArrayMode.h:
(JSC::DFG::ArrayMode::supportsSelfLength const):
(JSC::DFG::ArrayMode::arrayModesThatPassFiltering const):
* Source/JavaScriptCore/dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* Source/JavaScriptCore/dfg/DFGOperations.h:
(JSC::DFG::operationNewTypedArrayWithSizeForType):
(JSC::DFG::operationNewTypedArrayWithOneArgumentForType):
* Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByVal):
(JSC::DFG::SpeculativeJIT::compilePutByVal):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByVal):
(JSC::DFG::SpeculativeJIT::compilePutByVal):
* Source/JavaScriptCore/dfg/DFGStoreBarrierInsertionPhase.cpp:
* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetByValImpl):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
* Source/JavaScriptCore/heap/Heap.h:
* Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::subtype):
* Source/JavaScriptCore/llint/LowLevelInterpreter.asm:
* Source/JavaScriptCore/runtime/Float16Array.h: Copied from Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp.
* Source/JavaScriptCore/runtime/JSCast.h:
* Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp:
(JSC::getData):
(JSC::setData):
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/JSFloat16Array.h: Copied from Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp.
* Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructor.h:
* Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::setFromTypedArray):
(JSC::JSGenericTypedArrayView<Adaptor>::sort):
(JSC::JSGenericTypedArrayView<Adaptor>::subspaceFor):
* Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::typedArrayIndexOfImpl):
(JSC::genericTypedArrayViewProtoFuncIncludes):
(JSC::genericTypedArrayViewProtoFuncSlice):
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* Source/JavaScriptCore/runtime/JSType.cpp:
(WTF::printInternal):
* Source/JavaScriptCore/runtime/JSType.h:
* Source/JavaScriptCore/runtime/JSTypedArrayConstructors.cpp:
* Source/JavaScriptCore/runtime/JSTypedArrayConstructors.h:
* Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp:
* Source/JavaScriptCore/runtime/JSTypedArrayPrototypes.h:
* Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/JSTypedArrays.cpp:
* Source/JavaScriptCore/runtime/JSTypedArrays.h:
* Source/JavaScriptCore/runtime/MathObject.cpp:
(JSC::MathObject::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/OptionsList.h:
* Source/JavaScriptCore/runtime/TypedArrayAdaptersForwardDeclarations.h:
* Source/JavaScriptCore/runtime/TypedArrayAdaptors.h:
(JSC::BigIntTypedArrayAdaptor::convertTo):
(JSC::Float16Adaptor::toJSValue):
(JSC::Float16Adaptor::toNativeFromInt32):
(JSC::Float16Adaptor::toNativeFromUint32):
(JSC::Float16Adaptor::toNativeFromDouble):
(JSC::Float16Adaptor::toNativeFromUndefined):
(JSC::Float16Adaptor::convertTo):
(JSC::Float16Adaptor::toNativeFromInt32WithoutCoercion):
(JSC::Float16Adaptor::toNativeFromDoubleWithoutCoercion):
* Source/JavaScriptCore/runtime/TypedArrayType.cpp:
(JSC::constructorClassInfoForType):
(WTF::printInternal):
* Source/JavaScriptCore/runtime/TypedArrayType.h:
(JSC::typedArrayType):
(JSC::logElementSize):
(JSC::isFloat):
(JSC::isSigned):
(JSC::contentType):
(JSC::isSomeUint8):
* Source/WTF/WTF.xcodeproj/project.pbxproj:
* Source/WTF/wtf/CMakeLists.txt:
* Source/WTF/wtf/Float16.h: Added.
(WTF::convertFloat16ToFloat32):
(WTF::convertFloat16ToFloat64):
(WTF::convertFloat32ToFloat16):
(WTF::convertFloat64ToFloat16):
(WTF::Float16::Float16):
(WTF::Float16::min):
(WTF::Float16::max):
(WTF::Float16::operator double const):
(WTF::Float16::operator<=> const):
(WTF::Float16::operator== const):
(WTF::Float16::operator!= const):
(WTF::Float16::asDouble const):
* Source/WTF/wtf/text/StringCommon.h:
(WTF::findFloat16):
* Source/WebCore/bindings/js/JSDOMConvertBufferSource.h:
(WebCore::toPossiblySharedFloat16Array):
(WebCore::toUnsharedFloat16Array):
* Source/WebCore/bindings/js/SerializedScriptValue.cpp:
(WebCore::typedArrayElementSize):
(WebCore::CloneSerializer::dumpArrayBufferView):
(WebCore::CloneDeserializer::readArrayBufferViewImpl):
* Source/WebCore/bindings/scripts/CodeGenerator.pm:
* Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:
(GetBaseIDLType):
Canonical link: https://commits.webkit.org/281870@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list