WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-171637-20170512234825.patch (text/plain), 421.55 KB, created by
Yusuke Suzuki
on 2017-05-12 07:48:27 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2017-05-12 07:48:27 PDT
Size:
421.55 KB
patch
obsolete
>Subversion Revision: 216734 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index a06087b4841b76d965a69412c4b0f22c933af32e..13211887f549a737b078d317a2d904c2e028af24 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,135 @@ >+2017-05-12 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ Hoist DOM binding attribute getter/setter prologue into JavaScriptCore taking advantage of DOMJIT / CheckDOM >+ https://bugs.webkit.org/show_bug.cgi?id=171637 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * CMakeLists.txt: >+ * JavaScriptCore.xcodeproj/project.pbxproj: >+ * bytecode/AccessCase.cpp: >+ (JSC::AccessCase::generateImpl): >+ * bytecode/DOMJITAccessCasePatchpointParams.h: >+ (JSC::DOMJITAccessCasePatchpointParams::DOMJITAccessCasePatchpointParams): >+ * bytecode/GetByIdStatus.cpp: >+ (JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback): >+ * bytecode/GetByIdVariant.cpp: >+ (JSC::GetByIdVariant::GetByIdVariant): >+ (JSC::GetByIdVariant::operator=): >+ (JSC::GetByIdVariant::attemptToMerge): >+ (JSC::GetByIdVariant::dumpInContext): >+ * bytecode/GetByIdVariant.h: >+ (JSC::GetByIdVariant::customAccessorGetter): >+ (JSC::GetByIdVariant::domAttribute): >+ (JSC::GetByIdVariant::domJIT): Deleted. >+ * bytecode/GetterSetterAccessCase.cpp: >+ (JSC::GetterSetterAccessCase::create): >+ (JSC::GetterSetterAccessCase::GetterSetterAccessCase): >+ (JSC::GetterSetterAccessCase::emitDOMJITGetter): >+ * bytecode/GetterSetterAccessCase.h: >+ (JSC::GetterSetterAccessCase::domAttribute): >+ (JSC::GetterSetterAccessCase::customAccessor): >+ (JSC::GetterSetterAccessCase::domJIT): Deleted. >+ * dfg/DFGAbstractInterpreterInlines.h: >+ (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): >+ * dfg/DFGByteCodeParser.cpp: >+ (JSC::DFG::blessCallDOMGetter): >+ (JSC::DFG::ByteCodeParser::handleDOMJITGetter): >+ (JSC::DFG::ByteCodeParser::handleGetById): >+ * dfg/DFGClobberize.h: >+ (JSC::DFG::clobberize): >+ * dfg/DFGDOMJITPatchpointParams.h: >+ (JSC::DFG::DOMJITPatchpointParams::DOMJITPatchpointParams): >+ * dfg/DFGFixupPhase.cpp: >+ (JSC::DFG::FixupPhase::fixupNode): >+ (JSC::DFG::FixupPhase::attemptToMakeCallDOM): >+ * dfg/DFGNode.h: >+ * dfg/DFGSpeculativeJIT.cpp: >+ (JSC::DFG::SpeculativeJIT::compileCallDOMGetter): >+ (JSC::DFG::SpeculativeJIT::compileCheckDOM): >+ * dfg/DFGSpeculativeJIT.h: >+ (JSC::DFG::SpeculativeJIT::vm): >+ (JSC::DFG::SpeculativeJIT::callOperation): >+ * domjit/DOMJITGetterSetter.h: >+ (JSC::DOMJIT::GetterSetter::GetterSetter): >+ (JSC::DOMJIT::GetterSetter::getter): >+ (JSC::DOMJIT::GetterSetter::resultType): >+ (JSC::DOMJIT::GetterSetter::callDOMGetter): >+ (JSC::DOMJIT::GetterSetter::checkDOM): >+ (JSC::DOMJIT::GetterSetter::~GetterSetter): Deleted. >+ (JSC::DOMJIT::GetterSetter::setter): Deleted. >+ (JSC::DOMJIT::GetterSetter::thisClassInfo): Deleted. >+ * domjit/DOMJITPatchpointParams.h: >+ (JSC::DOMJIT::PatchpointParams::PatchpointParams): >+ (JSC::DOMJIT::PatchpointParams::vm): >+ * ftl/FTLAbstractHeapRepository.h: >+ * ftl/FTLDOMJITPatchpointParams.h: >+ (JSC::FTL::DOMJITPatchpointParams::DOMJITPatchpointParams): >+ * ftl/FTLLowerDFGToB3.cpp: >+ (JSC::FTL::DFG::LowerDFGToB3::compileCheckDOM): >+ (JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter): >+ * jit/Repatch.cpp: >+ (JSC::tryCacheGetByID): >+ * jsc.cpp: >+ (WTF::DOMJITGetter::DOMJITAttribute::DOMJITAttribute): >+ (WTF::DOMJITGetter::customGetter): >+ (WTF::DOMJITGetter::finishCreation): >+ (WTF::DOMJITGetterComplex::DOMJITAttribute::DOMJITAttribute): >+ (WTF::DOMJITGetterComplex::customGetter): >+ (WTF::DOMJITGetterComplex::finishCreation): >+ (WTF::DOMJITGetter::DOMJITNodeDOMJIT::DOMJITNodeDOMJIT): Deleted. >+ (WTF::DOMJITGetter::DOMJITNodeDOMJIT::slowCall): Deleted. >+ (WTF::DOMJITGetter::domJITNodeGetterSetter): Deleted. >+ (WTF::DOMJITGetterComplex::DOMJITNodeDOMJIT::DOMJITNodeDOMJIT): Deleted. >+ (WTF::DOMJITGetterComplex::DOMJITNodeDOMJIT::slowCall): Deleted. >+ (WTF::DOMJITGetterComplex::domJITNodeGetterSetter): Deleted. >+ * runtime/ClassInfo.h: >+ (JSC::ClassInfo::offsetOfParentClass): >+ * runtime/CustomGetterSetter.h: >+ (JSC::CustomGetterSetter::create): >+ (JSC::CustomGetterSetter::setter): >+ (JSC::CustomGetterSetter::CustomGetterSetter): >+ (): Deleted. >+ * runtime/DOMAnnotation.h: Added. >+ (JSC::operator==): >+ (JSC::operator!=): >+ * runtime/DOMAttributeGetterSetter.cpp: Added. >+ * runtime/DOMAttributeGetterSetter.h: Copied from Source/JavaScriptCore/runtime/CustomGetterSetter.h. >+ (JSC::isDOMAttributeGetterSetter): >+ * runtime/Error.cpp: >+ (JSC::throwDOMAttributeGetterTypeError): >+ * runtime/Error.h: >+ (JSC::throwVMDOMAttributeGetterTypeError): >+ * runtime/JSCustomGetterSetterFunction.cpp: >+ (JSC::JSCustomGetterSetterFunction::customGetterSetterFunctionCall): >+ * runtime/JSObject.cpp: >+ (JSC::JSObject::getOwnStaticPropertySlot): >+ (JSC::JSObject::reifyAllStaticProperties): >+ (JSC::JSObject::fillGetterPropertySlot): >+ * runtime/JSObject.h: >+ (JSC::JSObject::getOwnNonIndexPropertySlot): >+ (JSC::JSObject::fillCustomGetterPropertySlot): >+ * runtime/Lookup.cpp: >+ (JSC::setUpStaticFunctionSlot): >+ * runtime/Lookup.h: >+ (JSC::HashTableValue::domJIT): >+ (JSC::getStaticPropertySlotFromTable): >+ (JSC::reifyStaticProperty): >+ (JSC::reifyStaticProperties): >+ * runtime/PropertyName.h: >+ * runtime/PropertySlot.cpp: >+ (JSC::PropertySlot::customGetter): >+ (JSC::PropertySlot::customAccessorGetter): >+ * runtime/PropertySlot.h: >+ (JSC::PropertySlot::domAttribute): >+ (JSC::PropertySlot::setCustom): >+ (JSC::PropertySlot::setCacheableCustom): >+ (JSC::PropertySlot::getValue): >+ (JSC::PropertySlot::domJIT): Deleted. >+ * runtime/VM.cpp: >+ (JSC::VM::VM): >+ * runtime/VM.h: >+ > 2017-05-11 Saam Barati <sbarati@apple.com> > > Computing optionalDefArgWidth in CheckSpecial should not consider Scratch roles >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 4f0ae0e288e58115528dc069d9ab8f1be0b39d68..04a5cbc0f766d9e46f6f1ae05b0d6931af1441e9 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,371 @@ >+2017-05-12 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ Hoist DOM binding attribute getter/setter prologue into JavaScriptCore taking advantage of DOMJIT / CheckDOM >+ https://bugs.webkit.org/show_bug.cgi?id=171637 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ No new tests (OOPS!). >+ >+ * CMakeLists.txt: >+ * bindings/js/JSDOMBindingCaller.h: >+ (WebCore::BindingCaller::attribute): >+ * bindings/scripts/CodeGeneratorJS.pm: >+ (IsAcceleratedDOMAttribute): >+ (GetJSCAttributesForAttribute): >+ (GenerateHeader): >+ (GeneratePropertiesHashTable): >+ (GenerateImplementation): >+ (GenerateHashTableValueArray): >+ (GenerateConstructorHelperMethods): >+ * bindings/scripts/IDLAttributes.json: >+ * bindings/scripts/test/JS/JSInterfaceName.cpp: >+ (WebCore::JSInterfaceNamePrototype::finishCreation): >+ * bindings/scripts/test/JS/JSMapLike.cpp: >+ (WebCore::JSMapLikePrototype::finishCreation): >+ * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: >+ (WebCore::JSReadOnlyMapLikePrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: >+ (WebCore::JSTestActiveDOMObjectPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestCEReactions.cpp: >+ (WebCore::JSTestCEReactionsPrototype::finishCreation): >+ (WebCore::jsTestCEReactionsAttributeWithCEReactions): >+ (WebCore::jsTestCEReactionsReflectAttributeWithCEReactions): >+ (WebCore::jsTestCEReactionsStringifierAttribute): >+ * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: >+ (WebCore::JSTestCEReactionsStringifierPrototype::finishCreation): >+ (WebCore::jsTestCEReactionsStringifierValue): >+ * bindings/scripts/test/JS/JSTestCallbackInterface.cpp: >+ (WebCore::JSTestCallbackInterfaceConstructor::initializeProperties): >+ * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: >+ (WebCore::JSTestClassWithJSBuiltinConstructorPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: >+ (WebCore::JSTestCustomConstructorWithNoInterfaceObjectPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: >+ (WebCore::JSTestCustomNamedGetterPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestDOMJIT.cpp: >+ (WebCore::TestDOMJITAnyAttrAttributeDOMJIT::TestDOMJITAnyAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITBooleanAttrAttributeDOMJIT::TestDOMJITBooleanAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITByteAttrAttributeDOMJIT::TestDOMJITByteAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITOctetAttrAttributeDOMJIT::TestDOMJITOctetAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITShortAttrAttributeDOMJIT::TestDOMJITShortAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnsignedShortAttrAttributeDOMJIT::TestDOMJITUnsignedShortAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITLongAttrAttributeDOMJIT::TestDOMJITLongAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnsignedLongAttrAttributeDOMJIT::TestDOMJITUnsignedLongAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITLongLongAttrAttributeDOMJIT::TestDOMJITLongLongAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnsignedLongLongAttrAttributeDOMJIT::TestDOMJITUnsignedLongLongAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITFloatAttrAttributeDOMJIT::TestDOMJITFloatAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnrestrictedFloatAttrAttributeDOMJIT::TestDOMJITUnrestrictedFloatAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITDoubleAttrAttributeDOMJIT::TestDOMJITDoubleAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnrestrictedDoubleAttrAttributeDOMJIT::TestDOMJITUnrestrictedDoubleAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITDomStringAttrAttributeDOMJIT::TestDOMJITDomStringAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITByteStringAttrAttributeDOMJIT::TestDOMJITByteStringAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUsvStringAttrAttributeDOMJIT::TestDOMJITUsvStringAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITNodeAttrAttributeDOMJIT::TestDOMJITNodeAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITBooleanNullableAttrAttributeDOMJIT::TestDOMJITBooleanNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITByteNullableAttrAttributeDOMJIT::TestDOMJITByteNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITOctetNullableAttrAttributeDOMJIT::TestDOMJITOctetNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITShortNullableAttrAttributeDOMJIT::TestDOMJITShortNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnsignedShortNullableAttrAttributeDOMJIT::TestDOMJITUnsignedShortNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITLongNullableAttrAttributeDOMJIT::TestDOMJITLongNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnsignedLongNullableAttrAttributeDOMJIT::TestDOMJITUnsignedLongNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITLongLongNullableAttrAttributeDOMJIT::TestDOMJITLongLongNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnsignedLongLongNullableAttrAttributeDOMJIT::TestDOMJITUnsignedLongLongNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITFloatNullableAttrAttributeDOMJIT::TestDOMJITFloatNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnrestrictedFloatNullableAttrAttributeDOMJIT::TestDOMJITUnrestrictedFloatNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITDoubleNullableAttrAttributeDOMJIT::TestDOMJITDoubleNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUnrestrictedDoubleNullableAttrAttributeDOMJIT::TestDOMJITUnrestrictedDoubleNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITDomStringNullableAttrAttributeDOMJIT::TestDOMJITDomStringNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITByteStringNullableAttrAttributeDOMJIT::TestDOMJITByteStringNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITUsvStringNullableAttrAttributeDOMJIT::TestDOMJITUsvStringNullableAttrAttributeDOMJIT): >+ (WebCore::TestDOMJITNodeNullableAttrAttributeDOMJIT::TestDOMJITNodeNullableAttrAttributeDOMJIT): >+ (WebCore::JSTestDOMJITPrototype::finishCreation): >+ (WebCore::TestDOMJITAnyAttrDOMJIT::TestDOMJITAnyAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITAnyAttr): Deleted. >+ (WebCore::TestDOMJITBooleanAttrDOMJIT::TestDOMJITBooleanAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITBooleanAttr): Deleted. >+ (WebCore::TestDOMJITByteAttrDOMJIT::TestDOMJITByteAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITByteAttr): Deleted. >+ (WebCore::TestDOMJITOctetAttrDOMJIT::TestDOMJITOctetAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITOctetAttr): Deleted. >+ (WebCore::TestDOMJITShortAttrDOMJIT::TestDOMJITShortAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITShortAttr): Deleted. >+ (WebCore::TestDOMJITUnsignedShortAttrDOMJIT::TestDOMJITUnsignedShortAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnsignedShortAttr): Deleted. >+ (WebCore::TestDOMJITLongAttrDOMJIT::TestDOMJITLongAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITLongAttr): Deleted. >+ (WebCore::TestDOMJITUnsignedLongAttrDOMJIT::TestDOMJITUnsignedLongAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnsignedLongAttr): Deleted. >+ (WebCore::TestDOMJITLongLongAttrDOMJIT::TestDOMJITLongLongAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITLongLongAttr): Deleted. >+ (WebCore::TestDOMJITUnsignedLongLongAttrDOMJIT::TestDOMJITUnsignedLongLongAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnsignedLongLongAttr): Deleted. >+ (WebCore::TestDOMJITFloatAttrDOMJIT::TestDOMJITFloatAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITFloatAttr): Deleted. >+ (WebCore::TestDOMJITUnrestrictedFloatAttrDOMJIT::TestDOMJITUnrestrictedFloatAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnrestrictedFloatAttr): Deleted. >+ (WebCore::TestDOMJITDoubleAttrDOMJIT::TestDOMJITDoubleAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITDoubleAttr): Deleted. >+ (WebCore::TestDOMJITUnrestrictedDoubleAttrDOMJIT::TestDOMJITUnrestrictedDoubleAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnrestrictedDoubleAttr): Deleted. >+ (WebCore::TestDOMJITDomStringAttrDOMJIT::TestDOMJITDomStringAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITDomStringAttr): Deleted. >+ (WebCore::TestDOMJITByteStringAttrDOMJIT::TestDOMJITByteStringAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITByteStringAttr): Deleted. >+ (WebCore::TestDOMJITUsvStringAttrDOMJIT::TestDOMJITUsvStringAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUsvStringAttr): Deleted. >+ (WebCore::TestDOMJITNodeAttrDOMJIT::TestDOMJITNodeAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITNodeAttr): Deleted. >+ (WebCore::TestDOMJITBooleanNullableAttrDOMJIT::TestDOMJITBooleanNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITBooleanNullableAttr): Deleted. >+ (WebCore::TestDOMJITByteNullableAttrDOMJIT::TestDOMJITByteNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITByteNullableAttr): Deleted. >+ (WebCore::TestDOMJITOctetNullableAttrDOMJIT::TestDOMJITOctetNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITOctetNullableAttr): Deleted. >+ (WebCore::TestDOMJITShortNullableAttrDOMJIT::TestDOMJITShortNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITShortNullableAttr): Deleted. >+ (WebCore::TestDOMJITUnsignedShortNullableAttrDOMJIT::TestDOMJITUnsignedShortNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnsignedShortNullableAttr): Deleted. >+ (WebCore::TestDOMJITLongNullableAttrDOMJIT::TestDOMJITLongNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITLongNullableAttr): Deleted. >+ (WebCore::TestDOMJITUnsignedLongNullableAttrDOMJIT::TestDOMJITUnsignedLongNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnsignedLongNullableAttr): Deleted. >+ (WebCore::TestDOMJITLongLongNullableAttrDOMJIT::TestDOMJITLongLongNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITLongLongNullableAttr): Deleted. >+ (WebCore::TestDOMJITUnsignedLongLongNullableAttrDOMJIT::TestDOMJITUnsignedLongLongNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnsignedLongLongNullableAttr): Deleted. >+ (WebCore::TestDOMJITFloatNullableAttrDOMJIT::TestDOMJITFloatNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITFloatNullableAttr): Deleted. >+ (WebCore::TestDOMJITUnrestrictedFloatNullableAttrDOMJIT::TestDOMJITUnrestrictedFloatNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnrestrictedFloatNullableAttr): Deleted. >+ (WebCore::TestDOMJITDoubleNullableAttrDOMJIT::TestDOMJITDoubleNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITDoubleNullableAttr): Deleted. >+ (WebCore::TestDOMJITUnrestrictedDoubleNullableAttrDOMJIT::TestDOMJITUnrestrictedDoubleNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUnrestrictedDoubleNullableAttr): Deleted. >+ (WebCore::TestDOMJITDomStringNullableAttrDOMJIT::TestDOMJITDomStringNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITDomStringNullableAttr): Deleted. >+ (WebCore::TestDOMJITByteStringNullableAttrDOMJIT::TestDOMJITByteStringNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITByteStringNullableAttr): Deleted. >+ (WebCore::TestDOMJITUsvStringNullableAttrDOMJIT::TestDOMJITUsvStringNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITUsvStringNullableAttr): Deleted. >+ (WebCore::TestDOMJITNodeNullableAttrDOMJIT::TestDOMJITNodeNullableAttrDOMJIT): Deleted. >+ (WebCore::domJITGetterSetterForTestDOMJITNodeNullableAttr): Deleted. >+ * bindings/scripts/test/JS/JSTestDOMJIT.h: >+ (WebCore::TestDOMJITInterfaceDOMJIT::TestDOMJITInterfaceDOMJIT): >+ * bindings/scripts/test/JS/JSTestEventConstructor.cpp: >+ (WebCore::JSTestEventConstructorPrototype::finishCreation): >+ (WebCore::jsTestEventConstructorAttr1): >+ (WebCore::jsTestEventConstructorAttr2): >+ (WebCore::jsTestEventConstructorAttr3): >+ * bindings/scripts/test/JS/JSTestEventTarget.cpp: >+ (WebCore::JSTestEventTargetPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestException.cpp: >+ (WebCore::JSTestExceptionPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: >+ (WebCore::JSTestGenerateIsReachablePrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestInterface.cpp: >+ (WebCore::JSTestInterfaceConstructor::initializeProperties): >+ (WebCore::JSTestInterfacePrototype::finishCreation): >+ (WebCore::jsTestInterfaceImplementsStr1): >+ (WebCore::jsTestInterfaceImplementsStr2): >+ (WebCore::jsTestInterfaceImplementsStr3): >+ (WebCore::jsTestInterfaceImplementsNode): >+ (WebCore::jsTestInterfaceSupplementalStr1): >+ (WebCore::jsTestInterfaceSupplementalStr2): >+ (WebCore::jsTestInterfaceSupplementalStr3): >+ (WebCore::jsTestInterfaceSupplementalNode): >+ * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp: >+ (WebCore::JSTestInterfaceLeadingUnderscorePrototype::finishCreation): >+ (WebCore::jsTestInterfaceLeadingUnderscoreReadonly): >+ * bindings/scripts/test/JS/JSTestIterable.cpp: >+ (WebCore::JSTestIterablePrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: >+ (WebCore::JSTestJSBuiltinConstructorPrototype::finishCreation): >+ (WebCore::jsTestJSBuiltinConstructorTestAttributeCustom): >+ (WebCore::jsTestJSBuiltinConstructorTestAttributeRWCustom): >+ * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: >+ (WebCore::JSTestMediaQueryListListenerPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: >+ (WebCore::JSTestNamedConstructorPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestNode.cpp: >+ (WebCore::JSTestNodePrototype::finishCreation): >+ (WebCore::jsTestNodeName): >+ * bindings/scripts/test/JS/JSTestObj.cpp: >+ (WebCore::JSTestObjConstructor::initializeProperties): >+ (WebCore::JSTestObjPrototype::finishCreation): >+ (WebCore::jsTestObjReadOnlyLongAttr): >+ (WebCore::jsTestObjReadOnlyStringAttr): >+ (WebCore::jsTestObjReadOnlyTestObjAttr): >+ (WebCore::jsTestObjEnumAttr): >+ (WebCore::jsTestObjByteAttr): >+ (WebCore::jsTestObjOctetAttr): >+ (WebCore::jsTestObjShortAttr): >+ (WebCore::jsTestObjClampedShortAttr): >+ (WebCore::jsTestObjEnforceRangeShortAttr): >+ (WebCore::jsTestObjUnsignedShortAttr): >+ (WebCore::jsTestObjLongAttr): >+ (WebCore::jsTestObjLongLongAttr): >+ (WebCore::jsTestObjUnsignedLongLongAttr): >+ (WebCore::jsTestObjStringAttr): >+ (WebCore::jsTestObjUsvstringAttr): >+ (WebCore::jsTestObjTestObjAttr): >+ (WebCore::jsTestObjTestNullableObjAttr): >+ (WebCore::jsTestObjStringAttrTreatingNullAsEmptyString): >+ (WebCore::jsTestObjUsvstringAttrTreatingNullAsEmptyString): >+ (WebCore::jsTestObjByteStringAttrTreatingNullAsEmptyString): >+ (WebCore::jsTestObjStringLongRecordAttr): >+ (WebCore::jsTestObjUsvstringLongRecordAttr): >+ (WebCore::jsTestObjStringObjRecordAttr): >+ (WebCore::jsTestObjStringNullableObjRecordAttr): >+ (WebCore::jsTestObjDictionaryAttr): >+ (WebCore::jsTestObjNullableDictionaryAttr): >+ (WebCore::jsTestObjAnnotatedTypeInUnionAttr): >+ (WebCore::jsTestObjAnnotatedTypeInSequenceAttr): >+ (WebCore::jsTestObjImplementationEnumAttr): >+ (WebCore::jsTestObjXMLObjAttr): >+ (WebCore::jsTestObjCreate): >+ (WebCore::jsTestObjReflectedStringAttr): >+ (WebCore::jsTestObjReflectedUSVStringAttr): >+ (WebCore::jsTestObjReflectedIntegralAttr): >+ (WebCore::jsTestObjReflectedUnsignedIntegralAttr): >+ (WebCore::jsTestObjReflectedBooleanAttr): >+ (WebCore::jsTestObjReflectedURLAttr): >+ (WebCore::jsTestObjReflectedUSVURLAttr): >+ (WebCore::jsTestObjReflectedCustomIntegralAttr): >+ (WebCore::jsTestObjReflectedCustomBooleanAttr): >+ (WebCore::jsTestObjReflectedCustomURLAttr): >+ (WebCore::jsTestObjEnabledBySettingAttribute): >+ (WebCore::jsTestObjTypedArrayAttr): >+ (WebCore::jsTestObjAttributeWithGetterException): >+ (WebCore::jsTestObjAttributeWithSetterException): >+ (WebCore::jsTestObjStringAttrWithGetterException): >+ (WebCore::jsTestObjStringAttrWithSetterException): >+ (WebCore::jsTestObjCustomAttr): >+ (WebCore::jsTestObjOnfoo): >+ (WebCore::jsTestObjOnwebkitfoo): >+ (WebCore::jsTestObjWithScriptStateAttribute): >+ (WebCore::jsTestObjWithCallWithAndSetterCallWithAttribute): >+ (WebCore::jsTestObjWithScriptExecutionContextAttribute): >+ (WebCore::jsTestObjWithScriptStateAttributeRaises): >+ (WebCore::jsTestObjWithScriptExecutionContextAttributeRaises): >+ (WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttribute): >+ (WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises): >+ (WebCore::jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute): >+ (WebCore::jsTestObjWithScriptArgumentsAndCallStackAttribute): >+ (WebCore::jsTestObjConditionalAttr1): >+ (WebCore::jsTestObjConditionalAttr2): >+ (WebCore::jsTestObjConditionalAttr3): >+ (WebCore::jsTestObjCachedAttribute1): >+ (WebCore::jsTestObjCachedAttribute2): >+ (WebCore::jsTestObjAnyAttribute): >+ (WebCore::jsTestObjObjectAttribute): >+ (WebCore::jsTestObjContentDocument): >+ (WebCore::jsTestObjMutablePoint): >+ (WebCore::jsTestObjStrawberry): >+ (WebCore::jsTestObjDescription): >+ (WebCore::jsTestObjId): >+ (WebCore::jsTestObjHash): >+ (WebCore::jsTestObjReplaceableAttribute): >+ (WebCore::jsTestObjNullableDoubleAttribute): >+ (WebCore::jsTestObjNullableLongAttribute): >+ (WebCore::jsTestObjNullableBooleanAttribute): >+ (WebCore::jsTestObjNullableStringAttribute): >+ (WebCore::jsTestObjNullableLongSettableAttribute): >+ (WebCore::jsTestObjNullableStringSettableAttribute): >+ (WebCore::jsTestObjNullableUSVStringSettableAttribute): >+ (WebCore::jsTestObjNullableByteStringSettableAttribute): >+ (WebCore::jsTestObjNullableStringValue): >+ (WebCore::jsTestObjAttribute): >+ (WebCore::jsTestObjAttributeWithReservedEnumType): >+ (WebCore::jsTestObjPutForwardsAttribute): >+ (WebCore::jsTestObjPutForwardsNullableAttribute): >+ (WebCore::jsTestObjStringifierAttribute): >+ * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: >+ (WebCore::JSTestOverloadedConstructorsPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: >+ (WebCore::JSTestOverloadedConstructorsWithSequencePrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: >+ (WebCore::JSTestOverrideBuiltinsPrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: >+ (WebCore::JSTestPromiseRejectionEventPrototype::finishCreation): >+ (WebCore::jsTestPromiseRejectionEventReason): >+ * bindings/scripts/test/JS/JSTestSerialization.cpp: >+ (WebCore::JSTestSerializationPrototype::finishCreation): >+ (WebCore::jsTestSerializationFirstStringAttribute): >+ (WebCore::jsTestSerializationSecondLongAttribute): >+ (WebCore::jsTestSerializationThirdUnserializableAttribute): >+ (WebCore::jsTestSerializationFourthUnrestrictedDoubleAttribute): >+ (WebCore::jsTestSerializationFifthLongAttribute): >+ (WebCore::jsTestSerializationSixthTypedefAttribute): >+ * bindings/scripts/test/JS/JSTestSerializationInherit.cpp: >+ (WebCore::JSTestSerializationInheritPrototype::finishCreation): >+ (WebCore::jsTestSerializationInheritInheritLongAttribute): >+ * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp: >+ (WebCore::JSTestSerializationInheritFinalPrototype::finishCreation): >+ (WebCore::jsTestSerializationInheritFinalFinalLongAttributeFoo): >+ (WebCore::jsTestSerializationInheritFinalFinalLongAttributeBar): >+ * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: >+ (WebCore::JSTestSerializedScriptValueInterfacePrototype::finishCreation): >+ (WebCore::jsTestSerializedScriptValueInterfaceValue): >+ (WebCore::jsTestSerializedScriptValueInterfaceReadonlyValue): >+ (WebCore::jsTestSerializedScriptValueInterfaceCachedValue): >+ (WebCore::jsTestSerializedScriptValueInterfacePorts): >+ (WebCore::jsTestSerializedScriptValueInterfaceCachedReadonlyValue): >+ * bindings/scripts/test/JS/JSTestTypedefs.cpp: >+ (WebCore::JSTestTypedefsConstructor::initializeProperties): >+ (WebCore::JSTestTypedefsPrototype::finishCreation): >+ (WebCore::jsTestTypedefsUnsignedLongLongAttr): >+ (WebCore::jsTestTypedefsSerializedScriptValue): >+ (WebCore::jsTestTypedefsAttributeWithClamp): >+ (WebCore::jsTestTypedefsAttributeWithClampInTypedef): >+ (WebCore::jsTestTypedefsAttrWithGetterException): >+ (WebCore::jsTestTypedefsAttrWithSetterException): >+ (WebCore::jsTestTypedefsStringAttrWithGetterException): >+ (WebCore::jsTestTypedefsStringAttrWithSetterException): >+ * dom/Document.idl: >+ * dom/DocumentFragment.idl: >+ * dom/Element.idl: >+ * dom/Event.idl: >+ * dom/Node.idl: >+ * domjit/DOMJITIDLTypeFilter.h: >+ * domjit/JSDocumentDOMJIT.cpp: >+ (WebCore::DocumentInterfaceDOMJIT::checkDOM): >+ (WebCore::DocumentDocumentElementAttributeDOMJIT::callDOMGetter): >+ (WebCore::DocumentBodyAttributeDOMJIT::callDOMGetter): >+ (WebCore::DocumentDocumentElementDOMJIT::checkDOM): Deleted. >+ (WebCore::DocumentDocumentElementDOMJIT::callDOMGetter): Deleted. >+ (WebCore::DocumentBodyDOMJIT::checkDOM): Deleted. >+ (WebCore::DocumentBodyDOMJIT::callDOMGetter): Deleted. >+ * domjit/JSDocumentFragmentDOMJIT.cpp: Copied from Source/JavaScriptCore/dfg/DFGDOMJITPatchpointParams.h. >+ (WebCore::DocumentFragmentInterfaceDOMJIT::checkDOM): >+ * domjit/JSElementDOMJIT.cpp: Copied from Source/JavaScriptCore/dfg/DFGDOMJITPatchpointParams.h. >+ (WebCore::ElementInterfaceDOMJIT::checkDOM): >+ * domjit/JSEventDOMJIT.cpp: Copied from Source/JavaScriptCore/dfg/DFGDOMJITPatchpointParams.h. >+ (WebCore::EventInterfaceDOMJIT::checkDOM): >+ * domjit/JSNodeDOMJIT.cpp: >+ (WebCore::NodeInterfaceDOMJIT::checkDOM): >+ (WebCore::NodeFirstChildAttributeDOMJIT::callDOMGetter): >+ (WebCore::NodeLastChildAttributeDOMJIT::callDOMGetter): >+ (WebCore::NodeNextSiblingAttributeDOMJIT::callDOMGetter): >+ (WebCore::NodePreviousSiblingAttributeDOMJIT::callDOMGetter): >+ (WebCore::NodeParentNodeAttributeDOMJIT::callDOMGetter): >+ (WebCore::NodeNodeTypeAttributeDOMJIT::callDOMGetter): >+ (WebCore::NodeOwnerDocumentAttributeDOMJIT::callDOMGetter): >+ (WebCore::NodeFirstChildDOMJIT::checkDOM): Deleted. >+ (WebCore::NodeFirstChildDOMJIT::callDOMGetter): Deleted. >+ (WebCore::NodeLastChildDOMJIT::checkDOM): Deleted. >+ (WebCore::NodeLastChildDOMJIT::callDOMGetter): Deleted. >+ (WebCore::NodeNextSiblingDOMJIT::checkDOM): Deleted. >+ (WebCore::NodeNextSiblingDOMJIT::callDOMGetter): Deleted. >+ (WebCore::NodePreviousSiblingDOMJIT::checkDOM): Deleted. >+ (WebCore::NodePreviousSiblingDOMJIT::callDOMGetter): Deleted. >+ (WebCore::NodeParentNodeDOMJIT::checkDOM): Deleted. >+ (WebCore::NodeParentNodeDOMJIT::callDOMGetter): Deleted. >+ (WebCore::NodeNodeTypeDOMJIT::checkDOM): Deleted. >+ (WebCore::NodeNodeTypeDOMJIT::callDOMGetter): Deleted. >+ (WebCore::NodeOwnerDocumentDOMJIT::checkDOM): Deleted. >+ (WebCore::NodeOwnerDocumentDOMJIT::callDOMGetter): Deleted. >+ > 2017-05-11 Chris Dumez <cdumez@apple.com> > > Drop remaining uses of PassRefPtr in WebCore >diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt >index 4343fc2d82059e2b054c7f01f8172b23b20c8f56..c8ca81cc74bd913a9d40965f65a0c57be69249a7 100644 >--- a/Source/JavaScriptCore/CMakeLists.txt >+++ b/Source/JavaScriptCore/CMakeLists.txt >@@ -711,6 +711,7 @@ set(JavaScriptCore_SOURCES > runtime/ConstructData.cpp > runtime/ControlFlowProfiler.cpp > runtime/CustomGetterSetter.cpp >+ runtime/DOMAttributeGetterSetter.cpp > runtime/DataView.cpp > runtime/DateConstructor.cpp > runtime/DateConversion.cpp >diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >index f51cf72629d95bd7b57fa87e915b5d772a5b32a5..3e0fdb51a091b1be8447bdb65562d603ea36e001 100644 >--- a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >+++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >@@ -2354,6 +2354,9 @@ > E124A8F70E555775003091F1 /* OpaqueJSString.h in Headers */ = {isa = PBXBuildFile; fileRef = E124A8F50E555775003091F1 /* OpaqueJSString.h */; settings = {ATTRIBUTES = (Private, ); }; }; > E124A8F80E555775003091F1 /* OpaqueJSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E124A8F60E555775003091F1 /* OpaqueJSString.cpp */; }; > E18E3A590DF9278C00D90B34 /* VM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E3A570DF9278C00D90B34 /* VM.cpp */; }; >+ E31618131EC5FE170006A218 /* DOMAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = E31618101EC5FE080006A218 /* DOMAnnotation.h */; settings = {ATTRIBUTES = (Private, ); }; }; >+ E31618141EC5FE220006A218 /* DOMAttributeGetterSetter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E31618111EC5FE080006A218 /* DOMAttributeGetterSetter.cpp */; }; >+ E31618151EC5FE270006A218 /* DOMAttributeGetterSetter.h in Headers */ = {isa = PBXBuildFile; fileRef = E31618121EC5FE080006A218 /* DOMAttributeGetterSetter.h */; settings = {ATTRIBUTES = (Private, ); }; }; > E318CBC01B8AEF5100A2929D /* JSModuleNamespaceObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E318CBBE1B8AEF5100A2929D /* JSModuleNamespaceObject.cpp */; }; > E318CBC11B8AEF5100A2929D /* JSModuleNamespaceObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E318CBBF1B8AEF5100A2929D /* JSModuleNamespaceObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; > E322E5A21DA64439006E7709 /* DFGDOMJITPatchpointParams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E322E5A01DA64435006E7709 /* DFGDOMJITPatchpointParams.cpp */; }; >@@ -4984,6 +4987,9 @@ > E18E3A560DF9278C00D90B34 /* VM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = VM.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; > E18E3A570DF9278C00D90B34 /* VM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = VM.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; > E30677971B8BC6F5003F87F0 /* ModuleLoaderPrototype.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ModuleLoaderPrototype.js; sourceTree = "<group>"; }; >+ E31618101EC5FE080006A218 /* DOMAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMAnnotation.h; sourceTree = "<group>"; }; >+ E31618111EC5FE080006A218 /* DOMAttributeGetterSetter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMAttributeGetterSetter.cpp; sourceTree = "<group>"; }; >+ E31618121EC5FE080006A218 /* DOMAttributeGetterSetter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMAttributeGetterSetter.h; sourceTree = "<group>"; }; > E318CBBE1B8AEF5100A2929D /* JSModuleNamespaceObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSModuleNamespaceObject.cpp; sourceTree = "<group>"; }; > E318CBBF1B8AEF5100A2929D /* JSModuleNamespaceObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSModuleNamespaceObject.h; sourceTree = "<group>"; }; > E322E5A01DA64435006E7709 /* DFGDOMJITPatchpointParams.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDOMJITPatchpointParams.cpp; path = dfg/DFGDOMJITPatchpointParams.cpp; sourceTree = "<group>"; }; >@@ -6617,6 +6623,9 @@ > 52678F901A04177C006A306D /* ControlFlowProfiler.h */, > 2A111243192FCE79005EE18D /* CustomGetterSetter.cpp */, > 2A111244192FCE79005EE18D /* CustomGetterSetter.h */, >+ E31618101EC5FE080006A218 /* DOMAnnotation.h */, >+ E31618111EC5FE080006A218 /* DOMAttributeGetterSetter.cpp */, >+ E31618121EC5FE080006A218 /* DOMAttributeGetterSetter.h */, > 0F2B66B017B6B5AB00A7AE3F /* DataView.cpp */, > 0F2B66B117B6B5AB00A7AE3F /* DataView.h */, > BCD203450E17135E002C7E82 /* DateConstructor.cpp */, >@@ -8871,6 +8880,7 @@ > A5EA710319F6DE6F0098F5EC /* generate_objc_backend_dispatcher_header.py in Headers */, > A5EA710419F6DE720098F5EC /* generate_objc_backend_dispatcher_implementation.py in Headers */, > A5EA710519F6DE740098F5EC /* generate_objc_configuration_header.py in Headers */, >+ E31618151EC5FE270006A218 /* DOMAttributeGetterSetter.h in Headers */, > A5EA710619F6DE760098F5EC /* generate_objc_configuration_implementation.py in Headers */, > A5EA710819F6DE7A0098F5EC /* generate_objc_frontend_dispatcher_implementation.py in Headers */, > A5EA710919F6DE7C0098F5EC /* generate_objc_header.py in Headers */, >@@ -8958,6 +8968,7 @@ > 99F1A7011B98FBEC00463B26 /* InspectorFrontendRouter.h in Headers */, > A5339EC61BB399A60054F005 /* InspectorHeapAgent.h in Headers */, > E35E03601B7AB43E0073AD2A /* InspectorInstrumentationObject.h in Headers */, >+ E31618131EC5FE170006A218 /* DOMAnnotation.h in Headers */, > E33B3E261B7ABD750048DB2E /* InspectorInstrumentationObject.lut.h in Headers */, > A532438C18568335002ED692 /* InspectorProtocolObjects.h in Headers */, > A55D93AC18514F7900400DED /* InspectorProtocolTypes.h in Headers */, >@@ -10360,6 +10371,7 @@ > 0FF0F19D16B72A08005DF95B /* DFGCommon.cpp in Sources */, > 0FEA0A31170D40BF00BB722C /* DFGCommonData.cpp in Sources */, > 0F38B01717CFE75500B144D3 /* DFGCompilationKey.cpp in Sources */, >+ E31618141EC5FE220006A218 /* DOMAttributeGetterSetter.cpp in Sources */, > 0F38B01917CFE75500B144D3 /* DFGCompilationMode.cpp in Sources */, > 0F3B3A1A153E68F2003ED0FF /* DFGConstantFoldingPhase.cpp in Sources */, > 0FED67B91B26256D0066CE15 /* DFGConstantHoistingPhase.cpp in Sources */, >diff --git a/Source/JavaScriptCore/bytecode/AccessCase.cpp b/Source/JavaScriptCore/bytecode/AccessCase.cpp >index 30aedc3412cdd22294dac59b58cdfa953eb8e853..99cfe7c39465a2c21ac8cef779f4482fdcd2093c 100644 >--- a/Source/JavaScriptCore/bytecode/AccessCase.cpp >+++ b/Source/JavaScriptCore/bytecode/AccessCase.cpp >@@ -548,13 +548,18 @@ void AccessCase::generateImpl(AccessGenerationState& state) > return; > } > >- if (Options::useDOMJIT() && m_type == CustomAccessorGetter && this->as<GetterSetterAccessCase>().domJIT()) { >+ if (Options::useDOMJIT() && m_type == CustomAccessorGetter && this->as<GetterSetterAccessCase>().domAttribute()) { > auto& access = this->as<GetterSetterAccessCase>(); > // We do not need to emit CheckDOM operation since structure check ensures > // that the structure of the given base value is structure()! So all we should > // do is performing the CheckDOM thingy in IC compiling time here. >- if (structure()->classInfo()->isSubClassOf(access.domJIT()->thisClassInfo())) { >- access.emitDOMJITGetter(state, baseForGetGPR); >+ if (!structure()->classInfo()->isSubClassOf(access.domAttribute()->classInfo)) { >+ state.failAndIgnore.append(jit.jump()); >+ return; >+ } >+ >+ if (access.domAttribute()->domJIT) { >+ access.emitDOMJITGetter(state, access.domAttribute()->domJIT, baseForGetGPR); > return; > } > } >diff --git a/Source/JavaScriptCore/bytecode/DOMJITAccessCasePatchpointParams.h b/Source/JavaScriptCore/bytecode/DOMJITAccessCasePatchpointParams.h >index 8cf9751974fc40205e9714210f61a097a6918bd8..067ff05b54fcf1c7a9305c8ea5592e267d80aeb2 100644 >--- a/Source/JavaScriptCore/bytecode/DOMJITAccessCasePatchpointParams.h >+++ b/Source/JavaScriptCore/bytecode/DOMJITAccessCasePatchpointParams.h >@@ -35,8 +35,8 @@ struct AccessGenerationState; > > class DOMJITAccessCasePatchpointParams : public DOMJIT::PatchpointParams { > public: >- DOMJITAccessCasePatchpointParams(Vector<DOMJIT::Value>&& regs, Vector<GPRReg>&& gpScratch, Vector<FPRReg>&& fpScratch) >- : DOMJIT::PatchpointParams(WTFMove(regs), WTFMove(gpScratch), WTFMove(fpScratch)) >+ DOMJITAccessCasePatchpointParams(VM& vm, Vector<DOMJIT::Value>&& regs, Vector<GPRReg>&& gpScratch, Vector<FPRReg>&& fpScratch) >+ : DOMJIT::PatchpointParams(vm, WTFMove(regs), WTFMove(gpScratch), WTFMove(fpScratch)) > { > } > >diff --git a/Source/JavaScriptCore/bytecode/GetByIdStatus.cpp b/Source/JavaScriptCore/bytecode/GetByIdStatus.cpp >index 1537cd9b1b0d53a61b97544ddcc9ff7d88f6488d..624b232a6238f0e539840c572c930903ac9866ce 100644 >--- a/Source/JavaScriptCore/bytecode/GetByIdStatus.cpp >+++ b/Source/JavaScriptCore/bytecode/GetByIdStatus.cpp >@@ -244,7 +244,8 @@ GetByIdStatus GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback( > case ComplexGetStatus::Inlineable: { > std::unique_ptr<CallLinkStatus> callLinkStatus; > JSFunction* intrinsicFunction = nullptr; >- DOMJIT::GetterSetter* domJIT = nullptr; >+ PropertySlot::GetValueFunc customAccessorGetter = nullptr; >+ std::optional<DOMAttributeAnnotation> domAttribute; > > switch (access.type()) { > case AccessCase::Load: >@@ -265,8 +266,9 @@ GetByIdStatus GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback( > break; > } > case AccessCase::CustomAccessorGetter: { >- domJIT = access.as<GetterSetterAccessCase>().domJIT(); >- if (!domJIT) >+ customAccessorGetter = bitwise_cast<PropertySlot::GetValueFunc>(access.as<GetterSetterAccessCase>().customAccessor()); >+ domAttribute = access.as<GetterSetterAccessCase>().domAttribute(); >+ if (!domAttribute) > return GetByIdStatus(slowPathState, true); > result.m_state = Custom; > break; >@@ -282,12 +284,13 @@ GetByIdStatus GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback( > StructureSet(structure), complexGetStatus.offset(), > complexGetStatus.conditionSet(), WTFMove(callLinkStatus), > intrinsicFunction, >- domJIT); >+ customAccessorGetter, >+ domAttribute); > > if (!result.appendVariant(variant)) > return GetByIdStatus(slowPathState, true); > >- if (domJIT) { >+ if (domAttribute) { > // Give up when cutom accesses are not merged into one. > if (result.numVariants() != 1) > return GetByIdStatus(slowPathState, true); >diff --git a/Source/JavaScriptCore/bytecode/GetByIdVariant.cpp b/Source/JavaScriptCore/bytecode/GetByIdVariant.cpp >index d940b62cae8c3643397e972e133d474f7b3cb64a..937074d8554c5ca1cf7c5561f5d7cae1a9542cf7 100644 >--- a/Source/JavaScriptCore/bytecode/GetByIdVariant.cpp >+++ b/Source/JavaScriptCore/bytecode/GetByIdVariant.cpp >@@ -37,13 +37,15 @@ GetByIdVariant::GetByIdVariant( > const ObjectPropertyConditionSet& conditionSet, > std::unique_ptr<CallLinkStatus> callLinkStatus, > JSFunction* intrinsicFunction, >- DOMJIT::GetterSetter* domJIT) >+ PropertySlot::GetValueFunc customAccessorGetter, >+ std::optional<DOMAttributeAnnotation> domAttribute) > : m_structureSet(structureSet) > , m_conditionSet(conditionSet) > , m_offset(offset) > , m_callLinkStatus(WTFMove(callLinkStatus)) > , m_intrinsicFunction(intrinsicFunction) >- , m_domJIT(domJIT) >+ , m_customAccessorGetter(customAccessorGetter) >+ , m_domAttribute(domAttribute) > { > if (!structureSet.size()) { > ASSERT(offset == invalidOffset); >@@ -67,7 +69,8 @@ GetByIdVariant& GetByIdVariant::operator=(const GetByIdVariant& other) > m_conditionSet = other.m_conditionSet; > m_offset = other.m_offset; > m_intrinsicFunction = other.m_intrinsicFunction; >- m_domJIT = other.m_domJIT; >+ m_customAccessorGetter = other.m_customAccessorGetter; >+ m_domAttribute = other.m_domAttribute; > if (other.m_callLinkStatus) > m_callLinkStatus = std::make_unique<CallLinkStatus>(*other.m_callLinkStatus); > else >@@ -106,9 +109,16 @@ bool GetByIdVariant::attemptToMerge(const GetByIdVariant& other) > if (!canMergeIntrinsicStructures(other)) > return false; > >- if (m_domJIT != other.m_domJIT) >+ if (m_customAccessorGetter != other.m_customAccessorGetter) > return false; > >+ if (m_domAttribute || other.m_domAttribute) { >+ if (!(m_domAttribute && other.m_domAttribute)) >+ return false; >+ if (*m_domAttribute != *other.m_domAttribute) >+ return false; >+ } >+ > if (m_conditionSet.isEmpty() != other.m_conditionSet.isEmpty()) > return false; > >@@ -144,8 +154,13 @@ void GetByIdVariant::dumpInContext(PrintStream& out, DumpContext* context) const > out.print(", call = ", *m_callLinkStatus); > if (m_intrinsicFunction) > out.print(", intrinsic = ", *m_intrinsicFunction); >- if (m_domJIT) >- out.print(", domjit = ", RawPointer(m_domJIT)); >+ if (m_customAccessorGetter) >+ out.print(", customaccessorgetter = ", RawPointer(bitwise_cast<const void*>(m_customAccessorGetter))); >+ if (m_domAttribute) { >+ out.print(", domclass = ", RawPointer(m_domAttribute->classInfo)); >+ if (m_domAttribute->domJIT) >+ out.print(", domjit = ", RawPointer(m_domAttribute->domJIT)); >+ } > out.print(">"); > } > >diff --git a/Source/JavaScriptCore/bytecode/GetByIdVariant.h b/Source/JavaScriptCore/bytecode/GetByIdVariant.h >index 8ded248675f871d7908f22a5694372978b8953a5..0de56d949974e334a339d2a216a21d63d0d760b0 100644 >--- a/Source/JavaScriptCore/bytecode/GetByIdVariant.h >+++ b/Source/JavaScriptCore/bytecode/GetByIdVariant.h >@@ -47,7 +47,8 @@ class GetByIdVariant { > const ObjectPropertyConditionSet& = ObjectPropertyConditionSet(), > std::unique_ptr<CallLinkStatus> = nullptr, > JSFunction* = nullptr, >- DOMJIT::GetterSetter* = nullptr); >+ PropertySlot::GetValueFunc = nullptr, >+ std::optional<DOMAttributeAnnotation> = std::nullopt); > > ~GetByIdVariant(); > >@@ -66,7 +67,8 @@ class GetByIdVariant { > CallLinkStatus* callLinkStatus() const { return m_callLinkStatus.get(); } > JSFunction* intrinsicFunction() const { return m_intrinsicFunction; } > Intrinsic intrinsic() const { return m_intrinsicFunction ? m_intrinsicFunction->intrinsic() : NoIntrinsic; } >- DOMJIT::GetterSetter* domJIT() const { return m_domJIT; } >+ PropertySlot::GetValueFunc customAccessorGetter() const { return m_customAccessorGetter; } >+ std::optional<DOMAttributeAnnotation> domAttribute() const { return m_domAttribute; } > > bool isPropertyUnset() const { return offset() == invalidOffset; } > >@@ -85,7 +87,8 @@ class GetByIdVariant { > PropertyOffset m_offset; > std::unique_ptr<CallLinkStatus> m_callLinkStatus; > JSFunction* m_intrinsicFunction; >- DOMJIT::GetterSetter* m_domJIT; >+ PropertySlot::GetValueFunc m_customAccessorGetter; >+ std::optional<DOMAttributeAnnotation> m_domAttribute; > }; > > } // namespace JSC >diff --git a/Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp b/Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp >index 9b6bccc29745e613a1507173ff0319213b3770fe..9bc9b16b4ac58612e5ff725fc505a004850dd6d5 100644 >--- a/Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp >+++ b/Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp >@@ -50,7 +50,7 @@ GetterSetterAccessCase::GetterSetterAccessCase(VM& vm, JSCell* owner, AccessType > std::unique_ptr<AccessCase> GetterSetterAccessCase::create( > VM& vm, JSCell* owner, AccessType type, PropertyOffset offset, Structure* structure, > const ObjectPropertyConditionSet& conditionSet, bool viaProxy, WatchpointSet* additionalSet, >- PropertySlot::GetValueFunc customGetter, JSObject* customSlotBase, DOMJIT::GetterSetter* domJIT) >+ PropertySlot::GetValueFunc customGetter, JSObject* customSlotBase, std::optional<DOMAttributeAnnotation> domAttribute) > { > switch (type) { > case Getter: >@@ -62,7 +62,7 @@ std::unique_ptr<AccessCase> GetterSetterAccessCase::create( > }; > > std::unique_ptr<GetterSetterAccessCase> result(new GetterSetterAccessCase(vm, owner, type, offset, structure, conditionSet, viaProxy, additionalSet, customSlotBase)); >- result->m_domJIT = domJIT; >+ result->m_domAttribute = domAttribute; > result->m_customAccessor.getter = customGetter; > return WTFMove(result); > } >@@ -88,7 +88,7 @@ GetterSetterAccessCase::GetterSetterAccessCase(const GetterSetterAccessCase& oth > , m_customSlotBase(other.m_customSlotBase) > { > m_customAccessor.opaque = other.m_customAccessor.opaque; >- m_domJIT = other.m_domJIT; >+ m_domAttribute = other.m_domAttribute; > } > > std::unique_ptr<AccessCase> GetterSetterAccessCase::clone() const >@@ -114,7 +114,7 @@ void GetterSetterAccessCase::dumpImpl(PrintStream& out, CommaPrinter& comma) con > out.print(comma, "customAccessor = ", RawPointer(m_customAccessor.opaque)); > } > >-void GetterSetterAccessCase::emitDOMJITGetter(AccessGenerationState& state, GPRReg baseForGetGPR) >+void GetterSetterAccessCase::emitDOMJITGetter(AccessGenerationState& state, const DOMJIT::GetterSetter* domJIT, GPRReg baseForGetGPR) > { > CCallHelpers& jit = *state.jit; > StructureStubInfo& stubInfo = *state.stubInfo; >@@ -123,7 +123,7 @@ void GetterSetterAccessCase::emitDOMJITGetter(AccessGenerationState& state, GPRR > GPRReg scratchGPR = state.scratchGPR; > > // We construct the environment that can execute the DOMJIT::Patchpoint here. >- Ref<DOMJIT::CallDOMGetterPatchpoint> patchpoint = domJIT()->callDOMGetter(); >+ RefPtr<DOMJIT::CallDOMGetterPatchpoint> patchpoint = domJIT->callDOMGetter(); > > Vector<GPRReg> gpScratch; > Vector<FPRReg> fpScratch; >@@ -220,7 +220,7 @@ void GetterSetterAccessCase::emitDOMJITGetter(AccessGenerationState& state, GPRR > registersToSpillForCCall.set(reg); > registersToSpillForCCall.exclude(RegisterSet::registersToNotSaveForCCall()); > >- DOMJITAccessCasePatchpointParams params(WTFMove(regs), WTFMove(gpScratch), WTFMove(fpScratch)); >+ DOMJITAccessCasePatchpointParams params(state.m_vm, WTFMove(regs), WTFMove(gpScratch), WTFMove(fpScratch)); > patchpoint->generator()->run(jit, params); > allocator.restoreReusedRegistersByPopping(jit, preservedState); > state.succeed(); >diff --git a/Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h b/Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h >index 06192dac242aff5230ce3f6b55341d233d4f7e8c..762625584ded1eed68a5c98ae1d713ee742a6c54 100644 >--- a/Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h >+++ b/Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h >@@ -40,11 +40,11 @@ class GetterSetterAccessCase : public ProxyableAccessCase { > // actually somewhat likely because of how we do buffering of new cases. > CallLinkInfo* callLinkInfo() const { return m_callLinkInfo.get(); } > JSObject* customSlotBase() const { return m_customSlotBase.get(); } >- DOMJIT::GetterSetter* domJIT() const { return m_domJIT; } >+ std::optional<DOMAttributeAnnotation> domAttribute() const { return m_domAttribute; } > > JSObject* alternateBase() const override; > >- void emitDOMJITGetter(AccessGenerationState&, GPRReg baseForGetGPR); >+ void emitDOMJITGetter(AccessGenerationState&, const DOMJIT::GetterSetter*, GPRReg baseForGetGPR); > > static std::unique_ptr<AccessCase> create( > VM&, JSCell* owner, AccessType, PropertyOffset, Structure*, >@@ -53,7 +53,7 @@ class GetterSetterAccessCase : public ProxyableAccessCase { > WatchpointSet* additionalSet = nullptr, > PropertySlot::GetValueFunc = nullptr, > JSObject* customSlotBase = nullptr, >- DOMJIT::GetterSetter* = nullptr); >+ std::optional<DOMAttributeAnnotation> = std::nullopt); > > static std::unique_ptr<AccessCase> create(VM&, JSCell* owner, AccessType, Structure*, PropertyOffset, > const ObjectPropertyConditionSet&, PutPropertySlot::PutValueFunc = nullptr, >@@ -64,6 +64,8 @@ class GetterSetterAccessCase : public ProxyableAccessCase { > > ~GetterSetterAccessCase(); > >+ void* customAccessor() const { return m_customAccessor.opaque; } >+ > private: > GetterSetterAccessCase(VM&, JSCell*, AccessType, PropertyOffset, Structure*, const ObjectPropertyConditionSet&, bool viaProxy, WatchpointSet* additionalSet, JSObject* customSlotBase); > >@@ -76,7 +78,7 @@ class GetterSetterAccessCase : public ProxyableAccessCase { > PropertySlot::GetValueFunc getter; > void* opaque; > } m_customAccessor; >- DOMJIT::GetterSetter* m_domJIT; >+ std::optional<DOMAttributeAnnotation> m_domAttribute; > }; > > } // namespace JSC >diff --git a/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h b/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h >index 35d44b47ac8a0a3181f74fa86a6ab584800a519a..c8128c61cca599521ac1105dafbfeb3f243400af 100644 >--- a/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h >+++ b/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h >@@ -2363,9 +2363,12 @@ bool AbstractInterpreter<AbstractStateType>::executeEffects(unsigned clobberLimi > case CallDOMGetter: { > CallDOMGetterData* callDOMGetterData = node->callDOMGetterData(); > DOMJIT::CallDOMGetterPatchpoint* patchpoint = callDOMGetterData->patchpoint; >- if (patchpoint->effect.writes) >+ if (!patchpoint || patchpoint->effect.writes) > clobberWorld(node->origin.semantic, clobberLimit); >- forNode(node).setType(m_graph, callDOMGetterData->domJIT->resultType()); >+ if (callDOMGetterData->domJIT) >+ forNode(node).setType(m_graph, callDOMGetterData->domJIT->resultType()); >+ else >+ forNode(node).makeBytecodeTop(); > break; > } > case CallDOM: { >diff --git a/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp b/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp >index 78a5fb7f6a4c78b56d65939b257a041c4b8f498d..d38c17e475b58047797a66310e0a9a29aae02663 100644 >--- a/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp >+++ b/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp >@@ -2946,16 +2946,16 @@ bool ByteCodeParser::handleIntrinsicGetter(int resultOperand, const GetByIdVaria > static void blessCallDOMGetter(Node* node) > { > DOMJIT::CallDOMGetterPatchpoint* patchpoint = node->callDOMGetterData()->patchpoint; >- if (!patchpoint->effect.mustGenerate()) >+ if (patchpoint && !patchpoint->effect.mustGenerate()) > node->clearFlags(NodeMustGenerate); > } > > bool ByteCodeParser::handleDOMJITGetter(int resultOperand, const GetByIdVariant& variant, Node* thisNode, unsigned identifierNumber, SpeculatedType prediction) > { >- if (!variant.domJIT()) >+ if (!variant.domAttribute()) > return false; > >- DOMJIT::GetterSetter* domJIT = variant.domJIT(); >+ auto domAttribute = variant.domAttribute().value(); > > // We do not need to actually look up CustomGetterSetter here. Checking Structures or registering watchpoints are enough, > // since replacement of CustomGetterSetter always incurs Structure transition. >@@ -2963,22 +2963,30 @@ bool ByteCodeParser::handleDOMJITGetter(int resultOperand, const GetByIdVariant& > return false; > addToGraph(CheckStructure, OpInfo(m_graph.addStructureSet(variant.structureSet())), thisNode); > >- Ref<DOMJIT::Patchpoint> checkDOMPatchpoint = domJIT->checkDOM(); >- m_graph.m_domJITPatchpoints.append(checkDOMPatchpoint.ptr()); >+ RefPtr<DOMJIT::Patchpoint> checkDOMPatchpoint = nullptr; >+ if (const auto* domJIT = domAttribute.domJIT) { >+ checkDOMPatchpoint = domJIT->checkDOM(); >+ m_graph.m_domJITPatchpoints.append(checkDOMPatchpoint.get()); >+ } > // We do not need to emit CheckCell thingy here. When the custom accessor is replaced to different one, Structure transition occurs. >- addToGraph(CheckDOM, OpInfo(checkDOMPatchpoint.ptr()), OpInfo(domJIT->thisClassInfo()), thisNode); >+ addToGraph(CheckDOM, OpInfo(checkDOMPatchpoint.get()), OpInfo(domAttribute.classInfo), thisNode); > > CallDOMGetterData* callDOMGetterData = m_graph.m_callDOMGetterData.add(); >- Ref<DOMJIT::CallDOMGetterPatchpoint> callDOMGetterPatchpoint = domJIT->callDOMGetter(); >- m_graph.m_domJITPatchpoints.append(callDOMGetterPatchpoint.ptr()); >+ callDOMGetterData->customAccessorGetter = variant.customAccessorGetter(); >+ ASSERT(callDOMGetterData->customAccessorGetter); > >- callDOMGetterData->domJIT = domJIT; >- callDOMGetterData->patchpoint = callDOMGetterPatchpoint.ptr(); >+ RefPtr<DOMJIT::CallDOMGetterPatchpoint> callDOMGetterPatchpoint; >+ if (const auto* domJIT = domAttribute.domJIT) { >+ callDOMGetterPatchpoint = domJIT->callDOMGetter(); >+ m_graph.m_domJITPatchpoints.append(callDOMGetterPatchpoint.get()); >+ callDOMGetterData->domJIT = domJIT; >+ callDOMGetterData->patchpoint = callDOMGetterPatchpoint.get(); >+ } > callDOMGetterData->identifierNumber = identifierNumber; > > Node* callDOMGetterNode = nullptr; > // GlobalObject of thisNode is always used to create a DOMWrapper. >- if (callDOMGetterPatchpoint->requireGlobalObject) { >+ if (callDOMGetterPatchpoint && callDOMGetterPatchpoint->requireGlobalObject) { > Node* globalObject = addToGraph(GetGlobalObject, thisNode); > callDOMGetterNode = addToGraph(CallDOMGetter, OpInfo(callDOMGetterData), OpInfo(prediction), thisNode, globalObject); > } else >@@ -3624,7 +3632,7 @@ void ByteCodeParser::handleGetById( > ASSERT(getByIdStatus.numVariants() == 1); > ASSERT(!getByIdStatus.makesCalls()); > GetByIdVariant variant = getByIdStatus[0]; >- ASSERT(variant.domJIT()); >+ ASSERT(variant.domAttribute()); > if (handleDOMJITGetter(destinationOperand, variant, base, identifierNumber, prediction)) { > if (m_graph.compilation()) > m_graph.compilation()->noticeInlinedGetById(); >diff --git a/Source/JavaScriptCore/dfg/DFGClobberize.h b/Source/JavaScriptCore/dfg/DFGClobberize.h >index d8ce907eb2433a30fc1f82c8d057099cfa512bf6..18252e541a06f7ff8659ce20906c518845f5939e 100644 >--- a/Source/JavaScriptCore/dfg/DFGClobberize.h >+++ b/Source/JavaScriptCore/dfg/DFGClobberize.h >@@ -993,6 +993,11 @@ void clobberize(Graph& graph, Node* node, const ReadFunctor& read, const WriteFu > > case CallDOMGetter: { > DOMJIT::CallDOMGetterPatchpoint* patchpoint = node->callDOMGetterData()->patchpoint; >+ if (!patchpoint) { >+ read(World); >+ write(Heap); >+ return; >+ } > DOMJIT::Effect effect = patchpoint->effect; > if (effect.reads) { > if (effect.reads == DOMJIT::HeapRange::top()) >@@ -1009,7 +1014,7 @@ void clobberize(Graph& graph, Node* node, const ReadFunctor& read, const WriteFu > if (effect.def != DOMJIT::HeapRange::top()) { > DOMJIT::HeapRange range = effect.def; > if (range == DOMJIT::HeapRange::none()) >- def(PureValue(node, node->callDOMGetterData()->domJIT)); >+ def(PureValue(node, bitwise_cast<uintptr_t>(node->callDOMGetterData()->customAccessorGetter))); > else { > // Def with heap location. We do not include "GlobalObject" for that since this information is included in the base node. > // We only see the DOMJIT getter here. So just including "base" is ok. >diff --git a/Source/JavaScriptCore/dfg/DFGDOMJITPatchpointParams.h b/Source/JavaScriptCore/dfg/DFGDOMJITPatchpointParams.h >index fb6ab0b2c6837192a28b7e651574c0555e155eb4..48f29f6468ab304bdebade23a18850bc21fd9ea3 100644 >--- a/Source/JavaScriptCore/dfg/DFGDOMJITPatchpointParams.h >+++ b/Source/JavaScriptCore/dfg/DFGDOMJITPatchpointParams.h >@@ -27,6 +27,7 @@ > > #if ENABLE(DFG_JIT) > >+#include "DFGSpeculativeJIT.h" > #include "DOMJITPatchpointParams.h" > > namespace JSC { namespace DFG { >@@ -36,7 +37,7 @@ class SpeculativeJIT; > class DOMJITPatchpointParams : public DOMJIT::PatchpointParams { > public: > DOMJITPatchpointParams(SpeculativeJIT* jit, Vector<DOMJIT::Value>&& regs, Vector<GPRReg>&& gpScratch, Vector<FPRReg>&& fpScratch) >- : DOMJIT::PatchpointParams(WTFMove(regs), WTFMove(gpScratch), WTFMove(fpScratch)) >+ : DOMJIT::PatchpointParams(jit->vm(), WTFMove(regs), WTFMove(gpScratch), WTFMove(fpScratch)) > , m_jit(jit) > { > } >diff --git a/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp b/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp >index 60789d53690cc95e8a02d31d7d3fce577aadddb4..4939a65023f98f172fce3ec7fde998619e28875d 100644 >--- a/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp >+++ b/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp >@@ -1884,7 +1884,7 @@ class FixupPhase : public Phase { > case CallDOMGetter: { > DOMJIT::CallDOMGetterPatchpoint* patchpoint = node->callDOMGetterData()->patchpoint; > fixEdge<CellUse>(node->child1()); // DOM. >- if (patchpoint->requireGlobalObject) >+ if (patchpoint && patchpoint->requireGlobalObject) > fixEdge<KnownCellUse>(node->child2()); // GlobalObject. > break; > } >@@ -2973,9 +2973,9 @@ class FixupPhase : public Phase { > } > > Node* thisNode = m_graph.varArgChild(node, 1).node(); >- Ref<DOMJIT::Patchpoint> checkDOMPatchpoint = signature->checkDOM(); >- m_graph.m_domJITPatchpoints.append(checkDOMPatchpoint.ptr()); >- Node* checkDOM = m_insertionSet.insertNode(m_indexInBlock, SpecNone, CheckDOM, node->origin, OpInfo(checkDOMPatchpoint.ptr()), OpInfo(signature->classInfo), Edge(thisNode)); >+ RefPtr<DOMJIT::Patchpoint> checkDOMPatchpoint = signature->checkDOM(); >+ m_graph.m_domJITPatchpoints.append(checkDOMPatchpoint.get()); >+ Node* checkDOM = m_insertionSet.insertNode(m_indexInBlock, SpecNone, CheckDOM, node->origin, OpInfo(checkDOMPatchpoint.get()), OpInfo(signature->classInfo), Edge(thisNode)); > node->convertToCallDOM(m_graph); > fixupCheckDOM(checkDOM); > fixupCallDOM(node); >diff --git a/Source/JavaScriptCore/dfg/DFGNode.h b/Source/JavaScriptCore/dfg/DFGNode.h >index 194d7d5c3946cbed9ee30331bce7cdde4a36e062..01bfb5ea370447d10d1694147ee6661ce44c366b 100644 >--- a/Source/JavaScriptCore/dfg/DFGNode.h >+++ b/Source/JavaScriptCore/dfg/DFGNode.h >@@ -237,7 +237,8 @@ struct StackAccessData { > }; > > struct CallDOMGetterData { >- DOMJIT::GetterSetter* domJIT { nullptr }; >+ PropertySlot::GetValueFunc customAccessorGetter { nullptr }; >+ const DOMJIT::GetterSetter* domJIT { nullptr }; > DOMJIT::CallDOMGetterPatchpoint* patchpoint { nullptr }; > unsigned identifierNumber { 0 }; > }; >diff --git a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp >index dc9a0f6ea4420df005c0ed5a2561f31cdbf69175..a108b48076f8f55a271fe69511b0f7eef31276b8 100644 >--- a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp >+++ b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp >@@ -7875,6 +7875,31 @@ void SpeculativeJIT::compileCallDOM(Node* node) > void SpeculativeJIT::compileCallDOMGetter(Node* node) > { > DOMJIT::CallDOMGetterPatchpoint* patchpoint = node->callDOMGetterData()->patchpoint; >+ if (!patchpoint) { >+ auto* getter = node->callDOMGetterData()->customAccessorGetter; >+ SpeculateCellOperand base(this, node->child1()); >+ JSValueRegsTemporary result(this); >+ >+ JSValueRegs resultRegs = result.regs(); >+ GPRReg baseGPR = base.gpr(); >+ >+#if USE(JSVALUE64) >+ flushRegisters(); >+ callOperation(bitwise_cast<J_JITOperation_EJI>(getter), resultRegs, baseGPR, identifierUID(node->callDOMGetterData()->identifierNumber)); >+ m_jit.exceptionCheck(); >+ jsValueResult(resultRegs, node); >+#else >+ GPRTemporary cellTag(this); >+ GPRReg cellTagGPR = cellTarg.gpr(); >+ m_jit.move(CCallHelpers::TrustedImm32(JSValue::CellTag), cellTagGPR); >+ >+ flushRegisters(); >+ callOperation(bitwise_cast<J_JITOperation_EJI>(getter), resultRegs, JSValueRegs(cellTagGPR, baseGPR), identifierUID(node->callDOMGetterData()->identifierNumber)); >+ m_jit.exceptionCheck(); >+ jsValueResult(resultRegs, node); >+#endif >+ return; >+ } > > Vector<GPRReg> gpScratch; > Vector<FPRReg> fpScratch; >@@ -7904,8 +7929,29 @@ void SpeculativeJIT::compileCallDOMGetter(Node* node) > > void SpeculativeJIT::compileCheckDOM(Node* node) > { >- // FIXME: We can add the fallback implementation that inlines jsDynamicCast things here. > DOMJIT::Patchpoint* patchpoint = node->checkDOMPatchpoint(); >+ if (!patchpoint) { >+ SpeculateCellOperand base(this, node->child1()); >+ GPRTemporary other(this); >+ GPRTemporary specified(this); >+ >+ GPRReg baseGPR = base.gpr(); >+ GPRReg otherGPR = other.gpr(); >+ GPRReg specifiedGPR = specified.gpr(); >+ >+ m_jit.emitLoadStructure(*m_jit.vm(), baseGPR, otherGPR, specifiedGPR); >+ m_jit.loadPtr(CCallHelpers::Address(otherGPR, Structure::classInfoOffset()), otherGPR); >+ m_jit.move(CCallHelpers::TrustedImmPtr(node->classInfo()), specifiedGPR); >+ >+ CCallHelpers::Label loop = m_jit.label(); >+ auto done = m_jit.branchPtr(CCallHelpers::Equal, otherGPR, specifiedGPR); >+ m_jit.loadPtr(CCallHelpers::Address(specifiedGPR, ClassInfo::offsetOfParentClass()), specifiedGPR); >+ m_jit.branchTestPtr(CCallHelpers::NonZero, specifiedGPR).linkTo(loop, &m_jit); >+ speculationCheck(BadType, JSValueSource::unboxedCell(baseGPR), node->child1(), m_jit.jump()); >+ done.link(&m_jit); >+ noResult(node); >+ return; >+ } > > Vector<GPRReg> gpScratch; > Vector<FPRReg> fpScratch; >diff --git a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h >index e9d97322e98f37944034d62c9ac1b9d4bc46f508..0440eececfcdc23015f5037141baaad642284141 100644 >--- a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h >+++ b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h >@@ -111,6 +111,11 @@ class SpeculativeJIT { > SpeculativeJIT(JITCompiler&); > ~SpeculativeJIT(); > >+ VM& vm() >+ { >+ return *m_jit.vm(); >+ } >+ > struct TrustedImmPtr { > template <typename T> > explicit TrustedImmPtr(T* value) >@@ -1432,6 +1437,11 @@ class SpeculativeJIT { > m_jit.setupArgumentsWithExecState(arg1.gpr(), arg2.gpr(), mathIC); > return appendCallSetResult(operation, result.gpr()); > } >+ JITCompiler::Call callOperation(J_JITOperation_EJI operation, JSValueRegs result, GPRReg arg1, UniquedStringImpl* uid) >+ { >+ m_jit.setupArgumentsWithExecState(arg1, TrustedImmPtr(uid)); >+ return appendCallSetResult(operation, result.gpr()); >+ } > JITCompiler::Call callOperation(J_JITOperation_EJJI operation, GPRReg result, GPRReg arg1, GPRReg arg2, UniquedStringImpl* uid) > { > m_jit.setupArgumentsWithExecState(arg1, arg2, TrustedImmPtr(uid)); >@@ -1970,7 +1980,11 @@ class SpeculativeJIT { > m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), mathIC); > return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR()); > } >- >+ JITCompiler::Call callOperation(J_JITOperation_EJI operation, JSValueRegs result, JSValueRegs arg1, UniquedStringImpl* uid) >+ { >+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), TrustedImmPtr(uid)); >+ return appendCallSetResult(operation, result.payloadGPR(), result.tagGPR()); >+ } > JITCompiler::Call callOperation(J_JITOperation_EJJI operation, JSValueRegs result, JSValueRegs arg1, JSValueRegs arg2, UniquedStringImpl* uid) > { > m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1.payloadGPR(), arg1.tagGPR(), arg2.payloadGPR(), arg2.tagGPR(), TrustedImmPtr(uid)); >diff --git a/Source/JavaScriptCore/domjit/DOMJITGetterSetter.h b/Source/JavaScriptCore/domjit/DOMJITGetterSetter.h >index b94f87aec1145dd8b90ad3b7139787ecc40bc559..14bc62c86c2843adfd6ae18b0b1006b4289e2667 100644 >--- a/Source/JavaScriptCore/domjit/DOMJITGetterSetter.h >+++ b/Source/JavaScriptCore/domjit/DOMJITGetterSetter.h >@@ -32,36 +32,42 @@ > > namespace JSC { namespace DOMJIT { > >+// We do not define non virtual destructor for DOMJIT::GetterSetter to allow compilers >+// to define it as static const variable without invoking a global constructor. It requires >+// that the constructor is constexpr, which requires the class does not have non trivial >+// destructor. Not defining non virtual destructor is OK because this class should be defined >+// as static const variable and do not call destructors. >+#if COMPILER(CLANG) >+#pragma clang diagnostic push >+#pragma clang diagnostic ignored "-Wnon-virtual-dtor" >+#endif >+ > class GetterSetter { > public: > typedef PropertySlot::GetValueFunc CustomGetter; > typedef PutPropertySlot::PutValueFunc CustomSetter; > >- GetterSetter(CustomGetter getter, CustomSetter setter, const ClassInfo* classInfo, SpeculatedType resultType) >+ constexpr GetterSetter(CustomGetter getter, SpeculatedType resultType) > : m_getter(getter) >- , m_setter(setter) >- , m_thisClassInfo(classInfo) > , m_resultType(resultType) > { > } > >- virtual ~GetterSetter() { } >- >- CustomGetter getter() const { return m_getter; } >- CustomSetter setter() const { return m_setter; } >- const ClassInfo* thisClassInfo() const { return m_thisClassInfo; } >- SpeculatedType resultType() const { return m_resultType; } >+ constexpr CustomGetter getter() const { return m_getter; } >+ constexpr SpeculatedType resultType() const { return m_resultType; } > > #if ENABLE(JIT) >- virtual Ref<DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() = 0; >- virtual Ref<DOMJIT::Patchpoint> checkDOM() = 0; >+ virtual RefPtr<DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const { return nullptr; } >+ virtual RefPtr<DOMJIT::Patchpoint> checkDOM() const { return nullptr; } > #endif > > private: > CustomGetter m_getter; >- CustomSetter m_setter; >- const ClassInfo* m_thisClassInfo; > SpeculatedType m_resultType; > }; > >+#if COMPILER(CLANG) >+#pragma clang diagnostic pop >+#endif >+ > } } >diff --git a/Source/JavaScriptCore/domjit/DOMJITPatchpointParams.h b/Source/JavaScriptCore/domjit/DOMJITPatchpointParams.h >index d83b6b0bf166405bfc4dc8e3154d109dea28f108..0b712acd8aae89c1d4136bbf1ee0312c54e229e3 100644 >--- a/Source/JavaScriptCore/domjit/DOMJITPatchpointParams.h >+++ b/Source/JavaScriptCore/domjit/DOMJITPatchpointParams.h >@@ -47,13 +47,16 @@ WTF_MAKE_NONCOPYABLE(PatchpointParams); > GPRReg gpScratch(unsigned index) const { return m_gpScratch[index]; } > FPRReg fpScratch(unsigned index) const { return m_fpScratch[index]; } > >- PatchpointParams(Vector<Value>&& regs, Vector<GPRReg>&& gpScratch, Vector<FPRReg>&& fpScratch) >- : m_regs(WTFMove(regs)) >+ PatchpointParams(VM& vm, Vector<Value>&& regs, Vector<GPRReg>&& gpScratch, Vector<FPRReg>&& fpScratch) >+ : m_vm(vm) >+ , m_regs(WTFMove(regs)) > , m_gpScratch(WTFMove(gpScratch)) > , m_fpScratch(WTFMove(fpScratch)) > { > } > >+ VM& vm() { return m_vm; } >+ > template<typename FunctionType, typename ResultType, typename... Arguments> > void addSlowPathCall(CCallHelpers::JumpList from, CCallHelpers& jit, FunctionType function, ResultType result, Arguments... arguments) > { >@@ -65,6 +68,7 @@ WTF_MAKE_NONCOPYABLE(PatchpointParams); > DOMJIT_SLOW_PATH_CALLS(JSC_DEFINE_CALL_OPERATIONS) > #undef JSC_DEFINE_CALL_OPERATIONS > >+ VM& m_vm; > Vector<Value> m_regs; > Vector<GPRReg> m_gpScratch; > Vector<FPRReg> m_fpScratch; >diff --git a/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h b/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h >index 2011af8d818103fdd4d890de80ae5da939d4188c..05c4d07c012449a1a9c09c6d0a3162fb1e2dfca0 100644 >--- a/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h >+++ b/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h >@@ -48,6 +48,7 @@ namespace JSC { namespace FTL { > macro(Butterfly_publicLength, Butterfly::offsetOfPublicLength()) \ > macro(Butterfly_vectorLength, Butterfly::offsetOfVectorLength()) \ > macro(CallFrame_callerFrame, CallFrame::callerFrameOffset()) \ >+ macro(ClassInfo_parentClass, ClassInfo::offsetOfParentClass()) \ > macro(DirectArguments_callee, DirectArguments::offsetOfCallee()) \ > macro(DirectArguments_length, DirectArguments::offsetOfLength()) \ > macro(DirectArguments_minCapacity, DirectArguments::offsetOfMinCapacity()) \ >diff --git a/Source/JavaScriptCore/ftl/FTLDOMJITPatchpointParams.h b/Source/JavaScriptCore/ftl/FTLDOMJITPatchpointParams.h >index 3387c9086e13661284f578c6ca4442e274c0cfdc..708cbdac1397c872b161dda1650036fae0ea10c5 100644 >--- a/Source/JavaScriptCore/ftl/FTLDOMJITPatchpointParams.h >+++ b/Source/JavaScriptCore/ftl/FTLDOMJITPatchpointParams.h >@@ -29,6 +29,7 @@ > > #include "B3StackmapGenerationParams.h" > #include "DOMJITPatchpointParams.h" >+#include "FTLState.h" > > namespace JSC { namespace FTL { > >@@ -37,7 +38,7 @@ class State; > class DOMJITPatchpointParams : public DOMJIT::PatchpointParams { > public: > DOMJITPatchpointParams(State& state, const B3::StackmapGenerationParams& params, DFG::Node* node, Box<CCallHelpers::JumpList> exceptions, Vector<DOMJIT::Value>&& regs, Vector<GPRReg>&& gpScratch, Vector<FPRReg>&& fpScratch) >- : DOMJIT::PatchpointParams(WTFMove(regs), WTFMove(gpScratch), WTFMove(fpScratch)) >+ : DOMJIT::PatchpointParams(state.vm(), WTFMove(regs), WTFMove(gpScratch), WTFMove(fpScratch)) > , m_state(state) > , m_params(params) > , m_node(node) >diff --git a/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp b/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp >index b00879a17215205be724874f71dc600b2bb45c7a..8e8ab905ef62dd8222c3dcf26a01fcc3e2cb6da2 100644 >--- a/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp >+++ b/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp >@@ -10145,6 +10145,29 @@ class LowerDFGToB3 { > LValue cell = lowCell(m_node->child1()); > > DOMJIT::Patchpoint* domJIT = m_node->checkDOMPatchpoint(); >+ if (!domJIT) { >+ LBasicBlock loop = m_out.newBlock(); >+ LBasicBlock parentClass = m_out.newBlock(); >+ LBasicBlock continuation = m_out.newBlock(); >+ >+ LValue structure = loadStructure(cell); >+ LValue other = m_out.loadPtr(structure, m_heaps.Structure_classInfo); >+ ValueFromBlock specifiedAtStart = m_out.anchor(m_out.constIntPtr(m_node->classInfo())); >+ m_out.jump(loop); >+ >+ LBasicBlock lastNext = m_out.appendTo(loop, parentClass); >+ LValue specified = m_out.phi(pointerType(), specifiedAtStart); >+ m_out.branch(m_out.equal(other, specified), unsure(continuation), unsure(parentClass)); >+ >+ m_out.appendTo(parentClass, continuation); >+ LValue parent = m_out.loadPtr(specified, m_heaps.ClassInfo_parentClass); >+ speculate(BadCell, jsValueValue(cell), m_node->child1().node(), m_out.isNull(parent)); >+ m_out.addIncomingToPhi(specified, m_out.anchor(parent)); >+ m_out.jump(loop); >+ >+ m_out.appendTo(continuation, lastNext); >+ return; >+ } > > PatchpointValue* patchpoint = m_out.patchpoint(Void); > patchpoint->appendSomeRegister(cell); >@@ -10246,6 +10269,12 @@ class LowerDFGToB3 { > void compileCallDOMGetter() > { > DOMJIT::CallDOMGetterPatchpoint* domJIT = m_node->callDOMGetterData()->patchpoint; >+ if (!domJIT) { >+ setJSValue( >+ vmCall(Int64, m_out.operation(m_node->callDOMGetterData()->customAccessorGetter), >+ m_callFrame, lowCell(m_node->child1()), m_out.constIntPtr(m_graph.identifiers()[m_node->callDOMGetterData()->identifierNumber]))); >+ return; >+ } > > Edge& baseEdge = m_node->child1(); > LValue base = lowCell(baseEdge); >diff --git a/Source/JavaScriptCore/jit/Repatch.cpp b/Source/JavaScriptCore/jit/Repatch.cpp >index 7a5aa78512f497f97652b71a318bfa234c009d95..c6b8b1b27b57bf6e1204481ea56ac1b4034a0adf 100644 >--- a/Source/JavaScriptCore/jit/Repatch.cpp >+++ b/Source/JavaScriptCore/jit/Repatch.cpp >@@ -277,9 +277,9 @@ static InlineCacheAction tryCacheGetByID(ExecState* exec, JSValue baseValue, con > if (slot.isCacheableGetter()) > getter = jsDynamicCast<JSFunction*>(vm, slot.getterSetter()->getter()); > >- DOMJIT::GetterSetter* domJIT = nullptr; >- if (slot.isCacheableCustom() && slot.domJIT()) >- domJIT = slot.domJIT(); >+ std::optional<DOMAttributeAnnotation> domAttribute; >+ if (slot.isCacheableCustom() && slot.domAttribute()) >+ domAttribute = slot.domAttribute(); > > if (kind == GetByIDKind::Try) { > AccessCase::AccessType type; >@@ -309,14 +309,14 @@ static InlineCacheAction tryCacheGetByID(ExecState* exec, JSValue baseValue, con > type = AccessCase::CustomValueGetter; > > // we don't emit IC for DOMJIT when op is get_by_id_with_this >- if (Options::useDOMJIT() && kind == GetByIDKind::WithThis && type == AccessCase::CustomAccessorGetter && domJIT) >+ if (Options::useDOMJIT() && kind == GetByIDKind::WithThis && type == AccessCase::CustomAccessorGetter && domAttribute) > return GiveUpOnCache; > > newCase = GetterSetterAccessCase::create( > vm, codeBlock, type, offset, structure, conditionSet, loadTargetFromProxy, > slot.watchpointSet(), slot.isCacheableCustom() ? slot.customGetter() : nullptr, > slot.isCacheableCustom() ? slot.slotBase() : nullptr, >- domJIT); >+ domAttribute); > } > } > } >diff --git a/Source/JavaScriptCore/jsc.cpp b/Source/JavaScriptCore/jsc.cpp >index 58c29608b39da4b98a32e1e15410ffba6dd24539..0b0e4adef3faa315b5c9e61350cdfaa3eb352495 100644 >--- a/Source/JavaScriptCore/jsc.cpp >+++ b/Source/JavaScriptCore/jsc.cpp >@@ -30,6 +30,7 @@ > #include "CodeBlock.h" > #include "Completion.h" > #include "ConfigFile.h" >+#include "DOMAttributeGetterSetter.h" > #include "DOMJITGetterSetter.h" > #include "DOMJITPatchpoint.h" > #include "DOMJITPatchpointParams.h" >@@ -645,15 +646,15 @@ class DOMJITGetter : public DOMJITNode { > return getter; > } > >- class DOMJITNodeDOMJIT : public DOMJIT::GetterSetter { >+ class DOMJITAttribute : public DOMJIT::GetterSetter { > public: >- DOMJITNodeDOMJIT() >- : DOMJIT::GetterSetter(DOMJITGetter::customGetter, nullptr, DOMJITNode::info(), SpecInt32Only) >+ constexpr DOMJITAttribute() >+ : DOMJIT::GetterSetter(DOMJITGetter::customGetter, SpecInt32Only) > { > } > > #if ENABLE(JIT) >- Ref<DOMJIT::Patchpoint> checkDOM() override >+ RefPtr<DOMJIT::Patchpoint> checkDOM() const override > { > return DOMJITNode::checkDOMJITNode(); > } >@@ -664,7 +665,7 @@ class DOMJITGetter : public DOMJITNode { > return JSValue::encode(jsNumber(static_cast<DOMJITGetter*>(pointer)->value())); > } > >- Ref<DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override >+ RefPtr<DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const override > { > Ref<DOMJIT::CallDOMGetterPatchpoint> patchpoint = DOMJIT::CallDOMGetterPatchpoint::create(); > patchpoint->requireGlobalObject = false; >@@ -680,33 +681,28 @@ class DOMJITGetter : public DOMJITNode { > #endif > }; > >- static DOMJIT::GetterSetter* domJITNodeGetterSetter() >- { >- static NeverDestroyed<DOMJITNodeDOMJIT> graph; >- return &graph.get(); >- } >- > private: >- void finishCreation(VM& vm) >- { >- Base::finishCreation(vm); >- DOMJIT::GetterSetter* domJIT = domJITNodeGetterSetter(); >- CustomGetterSetter* customGetterSetter = CustomGetterSetter::create(vm, domJIT->getter(), domJIT->setter(), domJIT); >- putDirectCustomAccessor(vm, Identifier::fromString(&vm, "customGetter"), customGetterSetter, ReadOnly | CustomAccessor); >- } >+ void finishCreation(VM&); > > static EncodedJSValue customGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName) > { > VM& vm = exec->vm(); >- auto scope = DECLARE_THROW_SCOPE(vm); >- > DOMJITNode* thisObject = jsDynamicCast<DOMJITNode*>(vm, JSValue::decode(thisValue)); >- if (!thisObject) >- return throwVMTypeError(exec, scope); >+ ASSERT(thisObject); > return JSValue::encode(jsNumber(thisObject->value())); > } > }; > >+static const DOMJITGetter::DOMJITAttribute DOMJITGetterDOMJIT; >+ >+void DOMJITGetter::finishCreation(VM& vm) >+{ >+ Base::finishCreation(vm); >+ const DOMJIT::GetterSetter* domJIT = &DOMJITGetterDOMJIT; >+ auto* customGetterSetter = DOMAttributeGetterSetter::create(vm, domJIT->getter(), nullptr, DOMAttributeAnnotation { DOMJITGetter::info(), domJIT }); >+ putDirectCustomAccessor(vm, Identifier::fromString(&vm, "customGetter"), customGetterSetter, ReadOnly | CustomAccessor); >+} >+ > class DOMJITGetterComplex : public DOMJITNode { > public: > DOMJITGetterComplex(VM& vm, Structure* structure) >@@ -730,15 +726,15 @@ class DOMJITGetterComplex : public DOMJITNode { > return getter; > } > >- class DOMJITNodeDOMJIT : public DOMJIT::GetterSetter { >+ class DOMJITAttribute : public DOMJIT::GetterSetter { > public: >- DOMJITNodeDOMJIT() >- : DOMJIT::GetterSetter(DOMJITGetterComplex::customGetter, nullptr, DOMJITNode::info(), SpecInt32Only) >+ constexpr DOMJITAttribute() >+ : DOMJIT::GetterSetter(DOMJITGetterComplex::customGetter, SpecInt32Only) > { > } > > #if ENABLE(JIT) >- Ref<DOMJIT::Patchpoint> checkDOM() override >+ RefPtr<DOMJIT::Patchpoint> checkDOM() const override > { > return DOMJITNode::checkDOMJITNode(); > } >@@ -757,7 +753,7 @@ class DOMJITGetterComplex : public DOMJITNode { > return JSValue::encode(jsNumber(object->value())); > } > >- Ref<DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override >+ RefPtr<DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const override > { > RefPtr<DOMJIT::CallDOMGetterPatchpoint> patchpoint = DOMJIT::CallDOMGetterPatchpoint::create(); > static_assert(GPRInfo::numberOfRegisters >= 4, "Number of registers should be larger or equal to 4."); >@@ -773,26 +769,13 @@ class DOMJITGetterComplex : public DOMJITNode { > return CCallHelpers::JumpList(); > > }); >- return *patchpoint.get(); >+ return patchpoint; > } > #endif > }; > >- static DOMJIT::GetterSetter* domJITNodeGetterSetter() >- { >- static NeverDestroyed<DOMJITNodeDOMJIT> graph; >- return &graph.get(); >- } >- > private: >- void finishCreation(VM& vm, JSGlobalObject* globalObject) >- { >- Base::finishCreation(vm); >- DOMJIT::GetterSetter* domJIT = domJITNodeGetterSetter(); >- CustomGetterSetter* customGetterSetter = CustomGetterSetter::create(vm, domJIT->getter(), domJIT->setter(), domJIT); >- putDirectCustomAccessor(vm, Identifier::fromString(&vm, "customGetter"), customGetterSetter, ReadOnly | CustomAccessor); >- putDirectNativeFunction(vm, globalObject, Identifier::fromString(&vm, "enableException"), 0, functionEnableException, NoIntrinsic, 0); >- } >+ void finishCreation(VM&, JSGlobalObject*); > > static EncodedJSValue JSC_HOST_CALL functionEnableException(ExecState* exec) > { >@@ -808,19 +791,27 @@ class DOMJITGetterComplex : public DOMJITNode { > VM& vm = exec->vm(); > auto scope = DECLARE_THROW_SCOPE(vm); > >- auto* thisObject = jsDynamicCast<DOMJITNode*>(vm, JSValue::decode(thisValue)); >- if (!thisObject) >- return throwVMTypeError(exec, scope); >- if (auto* domjitGetterComplex = jsDynamicCast<DOMJITGetterComplex*>(vm, JSValue::decode(thisValue))) { >- if (domjitGetterComplex->m_enableException) >- return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral("DOMJITGetterComplex slow call exception")))); >- } >+ auto* thisObject = jsDynamicCast<DOMJITGetterComplex*>(vm, JSValue::decode(thisValue)); >+ ASSERT(thisObject); >+ if (thisObject->m_enableException) >+ return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral("DOMJITGetterComplex slow call exception")))); > return JSValue::encode(jsNumber(thisObject->value())); > } > > bool m_enableException { false }; > }; > >+static const DOMJITGetterComplex::DOMJITAttribute DOMJITGetterComplexDOMJIT; >+ >+void DOMJITGetterComplex::finishCreation(VM& vm, JSGlobalObject* globalObject) >+{ >+ Base::finishCreation(vm); >+ const DOMJIT::GetterSetter* domJIT = &DOMJITGetterComplexDOMJIT; >+ auto* customGetterSetter = DOMAttributeGetterSetter::create(vm, domJIT->getter(), nullptr, DOMAttributeAnnotation { DOMJITGetterComplex::info(), domJIT }); >+ putDirectCustomAccessor(vm, Identifier::fromString(&vm, "customGetter"), customGetterSetter, ReadOnly | CustomAccessor); >+ putDirectNativeFunction(vm, globalObject, Identifier::fromString(&vm, "enableException"), 0, functionEnableException, NoIntrinsic, 0); >+} >+ > class DOMJITFunctionObject : public DOMJITNode { > public: > DOMJITFunctionObject(VM& vm, Structure* structure) >diff --git a/Source/JavaScriptCore/runtime/ClassInfo.h b/Source/JavaScriptCore/runtime/ClassInfo.h >index 480aea220f47e8f259ced915952d7eb8856a5128..da20b7fab4322a77e27e9df1253f917a451acb6b 100644 >--- a/Source/JavaScriptCore/runtime/ClassInfo.h >+++ b/Source/JavaScriptCore/runtime/ClassInfo.h >@@ -190,6 +190,11 @@ struct ClassInfo { > // nullptrif there is none. > const ClassInfo* parentClass; > >+ static ptrdiff_t offsetOfParentClass() >+ { >+ return OBJECT_OFFSETOF(ClassInfo, parentClass); >+ } >+ > bool isSubClassOf(const ClassInfo* other) const > { > for (const ClassInfo* ci = this; ci; ci = ci->parentClass) { >diff --git a/Source/JavaScriptCore/runtime/CustomGetterSetter.h b/Source/JavaScriptCore/runtime/CustomGetterSetter.h >index 44b7306a589959af2fbe36d15100664d4a068d23..7a105673c9513738ab68a8839e40a543a5016ee9 100644 >--- a/Source/JavaScriptCore/runtime/CustomGetterSetter.h >+++ b/Source/JavaScriptCore/runtime/CustomGetterSetter.h >@@ -31,11 +31,8 @@ > #include "Structure.h" > > namespace JSC { >-namespace DOMJIT { >-class GetterSetter; >-} > >-class CustomGetterSetter final : public JSCell { >+class CustomGetterSetter : public JSCell { > public: > typedef JSCell Base; > static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal; >@@ -43,16 +40,15 @@ class CustomGetterSetter final : public JSCell { > typedef PropertySlot::GetValueFunc CustomGetter; > typedef PutPropertySlot::PutValueFunc CustomSetter; > >- static CustomGetterSetter* create(VM& vm, CustomGetter customGetter, CustomSetter customSetter, DOMJIT::GetterSetter* domJIT = nullptr) >+ static CustomGetterSetter* create(VM& vm, CustomGetter customGetter, CustomSetter customSetter) > { >- CustomGetterSetter* customGetterSetter = new (NotNull, allocateCell<CustomGetterSetter>(vm.heap)) CustomGetterSetter(vm, customGetter, customSetter, domJIT); >+ CustomGetterSetter* customGetterSetter = new (NotNull, allocateCell<CustomGetterSetter>(vm.heap)) CustomGetterSetter(vm, vm.customGetterSetterStructure.get(), customGetter, customSetter); > customGetterSetter->finishCreation(vm); > return customGetterSetter; > } > > CustomGetterSetter::CustomGetter getter() const { return m_getter; } > CustomGetterSetter::CustomSetter setter() const { return m_setter; } >- DOMJIT::GetterSetter* domJIT() const { return m_domJIT; } > > static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) > { >@@ -61,18 +57,17 @@ class CustomGetterSetter final : public JSCell { > > DECLARE_EXPORT_INFO; > >-private: >- CustomGetterSetter(VM& vm, CustomGetter getter, CustomSetter setter, DOMJIT::GetterSetter* domJIT) >- : JSCell(vm, vm.customGetterSetterStructure.get()) >+protected: >+ CustomGetterSetter(VM& vm, Structure* structure, CustomGetter getter, CustomSetter setter) >+ : JSCell(vm, structure) > , m_getter(getter) > , m_setter(setter) >- , m_domJIT(domJIT) > { > } > >+private: > CustomGetter m_getter; > CustomSetter m_setter; >- DOMJIT::GetterSetter* m_domJIT; > }; > > JS_EXPORT_PRIVATE bool callCustomSetter(ExecState*, CustomGetterSetter::CustomSetter, bool isAccessor, JSValue thisValue, JSValue); >diff --git a/Source/JavaScriptCore/runtime/DOMAnnotation.h b/Source/JavaScriptCore/runtime/DOMAnnotation.h >new file mode 100644 >index 0000000000000000000000000000000000000000..3b3733ad11af8489428b8a71c84ac46ae12b3a2e >--- /dev/null >+++ b/Source/JavaScriptCore/runtime/DOMAnnotation.h >@@ -0,0 +1,51 @@ >+/* >+ * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+namespace JSC { >+ >+struct ClassInfo; >+ >+namespace DOMJIT { >+class GetterSetter; >+} >+ >+struct DOMAttributeAnnotation { >+ const ClassInfo* classInfo; >+ const DOMJIT::GetterSetter* domJIT; >+}; >+ >+inline bool operator==(const DOMAttributeAnnotation& left, const DOMAttributeAnnotation& right) >+{ >+ return left.classInfo == right.classInfo && left.domJIT == right.domJIT; >+} >+ >+inline bool operator!=(const DOMAttributeAnnotation& left, const DOMAttributeAnnotation& right) >+{ >+ return !(left == right); >+} >+ >+} // namespace JSC >diff --git a/Source/JavaScriptCore/runtime/DOMAttributeGetterSetter.cpp b/Source/JavaScriptCore/runtime/DOMAttributeGetterSetter.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..1a2c9531950463d81bdcca5dbd247880c31f0218 >--- /dev/null >+++ b/Source/JavaScriptCore/runtime/DOMAttributeGetterSetter.cpp >@@ -0,0 +1,35 @@ >+/* >+ * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "DOMAttributeGetterSetter.h" >+ >+namespace JSC { >+ >+STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(DOMAttributeGetterSetter); >+ >+const ClassInfo DOMAttributeGetterSetter::s_info = { "DOMAttributeGetterSetter", &Base::s_info, 0, CREATE_METHOD_TABLE(DOMAttributeGetterSetter) }; >+ >+} // namespace JSC >diff --git a/Source/JavaScriptCore/runtime/DOMAttributeGetterSetter.h b/Source/JavaScriptCore/runtime/DOMAttributeGetterSetter.h >new file mode 100644 >index 0000000000000000000000000000000000000000..8b6697abb07669e245dd267929686828ad62bfd4 >--- /dev/null >+++ b/Source/JavaScriptCore/runtime/DOMAttributeGetterSetter.h >@@ -0,0 +1,71 @@ >+/* >+ * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#include "CustomGetterSetter.h" >+#include "DOMAnnotation.h" >+ >+namespace JSC { >+namespace DOMJIT { >+class GetterSetter; >+} >+ >+class DOMAttributeGetterSetter final : public CustomGetterSetter { >+public: >+ using Base = CustomGetterSetter; >+ >+ static DOMAttributeGetterSetter* create(VM& vm, CustomGetter customGetter, CustomSetter customSetter, DOMAttributeAnnotation domAttribute) >+ { >+ DOMAttributeGetterSetter* customGetterSetter = new (NotNull, allocateCell<DOMAttributeGetterSetter>(vm.heap)) DOMAttributeGetterSetter(vm, customGetter, customSetter, domAttribute); >+ customGetterSetter->finishCreation(vm); >+ return customGetterSetter; >+ } >+ >+ DOMAttributeAnnotation domAttribute() const { return m_domAttribute; } >+ >+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) >+ { >+ return Structure::create(vm, globalObject, prototype, TypeInfo(CustomGetterSetterType, StructureFlags), info()); >+ } >+ >+ DECLARE_EXPORT_INFO; >+ >+private: >+ DOMAttributeGetterSetter(VM& vm, CustomGetter getter, CustomSetter setter, DOMAttributeAnnotation domAttribute) >+ : Base(vm, vm.domAttributeGetterSetterStructure.get(), getter, setter) >+ , m_domAttribute(domAttribute) >+ { >+ } >+ >+ DOMAttributeAnnotation m_domAttribute; >+}; >+ >+inline bool isDOMAttributeGetterSetter(VM& vm, JSCell* cell) >+{ >+ return cell->classInfo(vm) == DOMAttributeGetterSetter::info(); >+} >+ >+} // namespace JSC >diff --git a/Source/JavaScriptCore/runtime/Error.cpp b/Source/JavaScriptCore/runtime/Error.cpp >index 33388c84ea5cd7b3a175867c0d35654d9889155d..faa112973da68eda61df9627117554a90c75fa2c 100644 >--- a/Source/JavaScriptCore/runtime/Error.cpp >+++ b/Source/JavaScriptCore/runtime/Error.cpp >@@ -253,6 +253,11 @@ JSObject* throwSyntaxError(ExecState* exec, ThrowScope& scope, const String& mes > return throwException(exec, scope, createSyntaxError(exec, message)); > } > >+JSValue throwDOMAttributeGetterTypeError(ExecState* exec, ThrowScope& scope, const ClassInfo* classInfo, PropertyName propertyName) >+{ >+ return throwTypeError(exec, scope, makeString("The ", classInfo->className, '.', String(propertyName.uid()), " getter can only be used on instances of ", classInfo->className)); >+} >+ > JSObject* createError(ExecState* exec, const String& message) > { > return createError(exec, message, nullptr); >diff --git a/Source/JavaScriptCore/runtime/Error.h b/Source/JavaScriptCore/runtime/Error.h >index aae660ce106674658f5a614e38f2a5b73af01748..4c53e57a6a1fbf0b5fa9313693e08ef7b447e755 100644 >--- a/Source/JavaScriptCore/runtime/Error.h >+++ b/Source/JavaScriptCore/runtime/Error.h >@@ -88,6 +88,7 @@ JS_EXPORT_PRIVATE JSObject* throwTypeError(ExecState*, ThrowScope&, const String > JS_EXPORT_PRIVATE JSObject* throwSyntaxError(ExecState*, ThrowScope&); > JS_EXPORT_PRIVATE JSObject* throwSyntaxError(ExecState*, ThrowScope&, const String& errorMessage); > inline JSObject* throwRangeError(ExecState* state, ThrowScope& scope, const String& errorMessage) { return throwException(state, scope, createRangeError(state, errorMessage)); } >+JSValue throwDOMAttributeGetterTypeError(ExecState*, ThrowScope&, const ClassInfo*, PropertyName); > > // Convenience wrappers, wrap result as an EncodedJSValue. > inline void throwVMError(ExecState* exec, ThrowScope& scope, Exception* exception) { throwException(exec, scope, exception); } >@@ -97,6 +98,7 @@ inline EncodedJSValue throwVMTypeError(ExecState* exec, ThrowScope& scope) { ret > inline EncodedJSValue throwVMTypeError(ExecState* exec, ThrowScope& scope, ASCIILiteral errorMessage) { return JSValue::encode(throwTypeError(exec, scope, errorMessage)); } > inline EncodedJSValue throwVMTypeError(ExecState* exec, ThrowScope& scope, const String& errorMessage) { return JSValue::encode(throwTypeError(exec, scope, errorMessage)); } > inline EncodedJSValue throwVMRangeError(ExecState* state, ThrowScope& scope, const String& errorMessage) { return JSValue::encode(throwRangeError(state, scope, errorMessage)); } >+inline EncodedJSValue throwVMDOMAttributeGetterTypeError(ExecState* state, ThrowScope& scope, const ClassInfo* classInfo, PropertyName propertyName) { return JSValue::encode(throwDOMAttributeGetterTypeError(state, scope, classInfo, propertyName)); } > > class StrictModeTypeErrorFunction : public InternalFunction { > private: >diff --git a/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp b/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp >index ce29a3988cd7823be411a096313a89654e2ce410..075e482abae40033b9538ac50ec4144eb4ac3ad2 100644 >--- a/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp >+++ b/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp >@@ -37,19 +37,29 @@ const ClassInfo JSCustomGetterSetterFunction::s_info = { "Function", &Base::s_in > > EncodedJSValue JSC_HOST_CALL JSCustomGetterSetterFunction::customGetterSetterFunctionCall(ExecState* exec) > { >+ VM& vm = exec->vm(); >+ auto scope = DECLARE_THROW_SCOPE(vm); >+ > JSCustomGetterSetterFunction* customGetterSetterFunction = jsCast<JSCustomGetterSetterFunction*>(exec->jsCallee()); > CustomGetterSetter* customGetterSetter = customGetterSetterFunction->customGetterSetter(); >+ JSValue thisValue = exec->thisValue(); > > if (customGetterSetterFunction->isSetter()) { > CustomGetterSetter::CustomSetter setter = customGetterSetter->setter(); > ASSERT(setter); >- callCustomSetter(exec, setter, true, exec->thisValue(), exec->argument(0)); >+ callCustomSetter(exec, setter, true, thisValue, exec->argument(0)); > return JSValue::encode(jsUndefined()); > } > > CustomGetterSetter::CustomGetter getter = customGetterSetter->getter(); >- ASSERT(getter); >- return getter(exec, JSValue::encode(exec->thisValue()), customGetterSetterFunction->propertyName()); >+ if (isDOMAttributeGetterSetter(vm, customGetterSetter)) { >+ auto domAttribute = jsCast<DOMAttributeGetterSetter*>(customGetterSetter)->domAttribute(); >+ // DOMJIT type checking here. >+ // FIXME: Node, Element etc. have more efficient way to perform type check. >+ if (!thisValue.inherits(vm, domAttribute.classInfo)) >+ return throwVMDOMAttributeGetterTypeError(exec, scope, domAttribute.classInfo, customGetterSetterFunction->propertyName()); >+ } >+ return getter(exec, JSValue::encode(thisValue), customGetterSetterFunction->propertyName()); > } > > JSCustomGetterSetterFunction::JSCustomGetterSetterFunction(VM& vm, JSGlobalObject* globalObject, Structure* structure, const Type type, const PropertyName& propertyName) >diff --git a/Source/JavaScriptCore/runtime/JSObject.cpp b/Source/JavaScriptCore/runtime/JSObject.cpp >index cf14237ae96451c6aeab331e744b49c4643fb6d6..3804c7a6e071e3905e9356042e2d260c57affddd 100644 >--- a/Source/JavaScriptCore/runtime/JSObject.cpp >+++ b/Source/JavaScriptCore/runtime/JSObject.cpp >@@ -2002,7 +2002,7 @@ bool JSObject::getOwnStaticPropertySlot(VM& vm, PropertyName propertyName, Prope > { > for (auto* info = classInfo(vm); info; info = info->parentClass) { > if (auto* table = info->staticPropHashTable) { >- if (getStaticPropertySlotFromTable(vm, *table, this, propertyName, slot)) >+ if (getStaticPropertySlotFromTable(vm, info, *table, this, propertyName, slot)) > return true; > } > } >@@ -2295,14 +2295,14 @@ void JSObject::reifyAllStaticProperties(ExecState* exec) > auto key = Identifier::fromString(&vm, value.m_key); > PropertyOffset offset = getDirectOffset(vm, key, attributes); > if (!isValidOffset(offset)) >- reifyStaticProperty(vm, key, value, *this); >+ reifyStaticProperty(vm, info, key, value, *this); > } > } > > structure(vm)->setStaticPropertiesReified(true); > } > >-NEVER_INLINE void JSObject::fillGetterPropertySlot(PropertySlot& slot, JSValue getterSetter, unsigned attributes, PropertyOffset offset) >+NEVER_INLINE void JSObject::fillGetterPropertySlot(PropertySlot& slot, JSCell* getterSetter, unsigned attributes, PropertyOffset offset) > { > if (structure()->isUncacheableDictionary()) { > slot.setGetterSlot(this, attributes, jsCast<GetterSetter*>(getterSetter)); >diff --git a/Source/JavaScriptCore/runtime/JSObject.h b/Source/JavaScriptCore/runtime/JSObject.h >index d35419a86fed23d7a9d357ba3d97d5022dc4330e..2c388ccbcc1562f641cff9362ef74cfbf5614543 100644 >--- a/Source/JavaScriptCore/runtime/JSObject.h >+++ b/Source/JavaScriptCore/runtime/JSObject.h >@@ -32,6 +32,7 @@ > #include "ClassInfo.h" > #include "CommonIdentifiers.h" > #include "CustomGetterSetter.h" >+#include "DOMAttributeGetterSetter.h" > #include "DeferGC.h" > #include "Heap.h" > #include "IndexingHeaderInlines.h" >@@ -1013,8 +1014,8 @@ class JSObject : public JSCell { > > bool getNonIndexPropertySlot(ExecState*, PropertyName, PropertySlot&); > bool getOwnNonIndexPropertySlot(VM&, Structure*, PropertyName, PropertySlot&); >- JS_EXPORT_PRIVATE void fillGetterPropertySlot(PropertySlot&, JSValue, unsigned, PropertyOffset); >- void fillCustomGetterPropertySlot(PropertySlot&, JSValue, unsigned, Structure*); >+ void fillGetterPropertySlot(PropertySlot&, JSCell*, unsigned, PropertyOffset); >+ void fillCustomGetterPropertySlot(VM&, PropertySlot&, JSCell*, unsigned, Structure*); > > JS_EXPORT_PRIVATE bool getOwnStaticPropertySlot(VM&, PropertyName, PropertySlot&); > JS_EXPORT_PRIVATE const HashTableValue* findPropertyHashEntry(VM&, PropertyName) const; >@@ -1329,10 +1330,10 @@ ALWAYS_INLINE bool JSObject::getOwnNonIndexPropertySlot(VM& vm, Structure* struc > JSType type = cell->type(); > switch (type) { > case GetterSetterType: >- fillGetterPropertySlot(slot, value, attributes, offset); >+ fillGetterPropertySlot(slot, cell, attributes, offset); > return true; > case CustomGetterSetterType: >- fillCustomGetterPropertySlot(slot, value, attributes, structure); >+ fillCustomGetterPropertySlot(vm, slot, cell, attributes, structure); > return true; > default: > break; >@@ -1343,16 +1344,27 @@ ALWAYS_INLINE bool JSObject::getOwnNonIndexPropertySlot(VM& vm, Structure* struc > return true; > } > >-ALWAYS_INLINE void JSObject::fillCustomGetterPropertySlot(PropertySlot& slot, JSValue customGetterSetter, unsigned attributes, Structure* structure) >+ALWAYS_INLINE void JSObject::fillCustomGetterPropertySlot(VM& vm, PropertySlot& slot, JSCell* customGetterSetter, unsigned attributes, Structure* structure) > { > if (structure->isUncacheableDictionary()) { >+ if (isDOMAttributeGetterSetter(vm, customGetterSetter)) { >+ auto* domAttribute = jsCast<DOMAttributeGetterSetter*>(customGetterSetter); >+ slot.setCustom(this, attributes, domAttribute->getter(), domAttribute->domAttribute()); >+ return; >+ } > slot.setCustom(this, attributes, jsCast<CustomGetterSetter*>(customGetterSetter)->getter()); > return; > } > > // This access is cacheable because Structure requires an attributeChangedTransition > // if this property stops being an accessor. >- slot.setCacheableCustom(this, attributes, jsCast<CustomGetterSetter*>(customGetterSetter)->getter(), jsCast<CustomGetterSetter*>(customGetterSetter)->domJIT()); >+ >+ if (isDOMAttributeGetterSetter(vm, customGetterSetter)) { >+ auto* domAttribute = jsCast<DOMAttributeGetterSetter*>(customGetterSetter); >+ slot.setCacheableCustom(this, attributes, domAttribute->getter(), domAttribute->domAttribute()); >+ return; >+ } >+ slot.setCacheableCustom(this, attributes, jsCast<CustomGetterSetter*>(customGetterSetter)->getter()); > } > > // It may seem crazy to inline a function this large, especially a virtual function, >diff --git a/Source/JavaScriptCore/runtime/Lookup.cpp b/Source/JavaScriptCore/runtime/Lookup.cpp >index f40740e359d78bd128f4e6a41b8c61a47b90f46a..3005abbb44d7b01566f4782df36a86f552705517 100644 >--- a/Source/JavaScriptCore/runtime/Lookup.cpp >+++ b/Source/JavaScriptCore/runtime/Lookup.cpp >@@ -41,7 +41,7 @@ void reifyStaticAccessor(VM& vm, const HashTableValue& value, JSObject& thisObje > thisObject.putDirectNonIndexAccessor(vm, propertyName, accessor, attributesForStructure(value.attributes())); > } > >-bool setUpStaticFunctionSlot(VM& vm, const HashTableValue* entry, JSObject* thisObject, PropertyName propertyName, PropertySlot& slot) >+bool setUpStaticFunctionSlot(VM& vm, const ClassInfo* classInfo, const HashTableValue* entry, JSObject* thisObject, PropertyName propertyName, PropertySlot& slot) > { > ASSERT(thisObject->globalObject()); > ASSERT(entry->attributes() & BuiltinOrFunctionOrAccessorOrLazyProperty); >@@ -55,7 +55,7 @@ bool setUpStaticFunctionSlot(VM& vm, const HashTableValue* entry, JSObject* this > if (thisObject->staticPropertiesReified()) > return false; > >- reifyStaticProperty(vm, propertyName, *entry, *thisObject); >+ reifyStaticProperty(vm, classInfo, propertyName, *entry, *thisObject); > > offset = thisObject->getDirectOffset(vm, propertyName, attributes); > if (!isValidOffset(offset)) { >diff --git a/Source/JavaScriptCore/runtime/Lookup.h b/Source/JavaScriptCore/runtime/Lookup.h >index b627f7947246efeaf0a55c9ba07949801e11db14..7e76406970a2b5a53c7cad24170504d88ccb05e4 100644 >--- a/Source/JavaScriptCore/runtime/Lookup.h >+++ b/Source/JavaScriptCore/runtime/Lookup.h >@@ -49,7 +49,6 @@ typedef PropertySlot::GetValueFunc GetFunction; > typedef PutPropertySlot::PutValueFunc PutFunction; > typedef FunctionExecutable* (*BuiltinGenerator)(VM&); > typedef JSValue (*LazyPropertyCallback)(VM&, JSObject*); >-typedef DOMJIT::GetterSetter* (*DOMJITGetterSetterGenerator)(void); > > // Hash table generated by the create_hash_table script. > struct HashTableValue { >@@ -88,7 +87,7 @@ struct HashTableValue { > GetFunction propertyGetter() const { ASSERT(!(m_attributes & BuiltinOrFunctionOrAccessorOrLazyPropertyOrConstant)); return reinterpret_cast<GetFunction>(m_values.value1); } > PutFunction propertyPutter() const { ASSERT(!(m_attributes & BuiltinOrFunctionOrAccessorOrLazyPropertyOrConstant)); return reinterpret_cast<PutFunction>(m_values.value2); } > >- DOMJIT::GetterSetter* domJIT() const { ASSERT(m_attributes & DOMJITAttribute); return reinterpret_cast<DOMJITGetterSetterGenerator>(m_values.value1)(); } >+ const DOMJIT::GetterSetter* domJIT() const { ASSERT(m_attributes & DOMJITAttribute); return reinterpret_cast<const DOMJIT::GetterSetter*>(m_values.value1); } > const DOMJIT::Signature* signature() const { ASSERT(m_attributes & DOMJITFunction); return reinterpret_cast<const DOMJIT::Signature*>(m_values.value2); } > > NativeFunction accessorGetter() const { ASSERT(m_attributes & Accessor); return reinterpret_cast<NativeFunction>(m_values.value1); } >@@ -203,7 +202,7 @@ struct HashTable { > } > }; > >-JS_EXPORT_PRIVATE bool setUpStaticFunctionSlot(VM&, const HashTableValue*, JSObject* thisObject, PropertyName, PropertySlot&); >+JS_EXPORT_PRIVATE bool setUpStaticFunctionSlot(VM&, const ClassInfo*, const HashTableValue*, JSObject* thisObject, PropertyName, PropertySlot&); > JS_EXPORT_PRIVATE void reifyStaticAccessor(VM&, const HashTableValue&, JSObject& thisObject, PropertyName); > > inline BuiltinGenerator HashTableValue::builtinAccessorGetterGenerator() const >@@ -220,7 +219,7 @@ inline BuiltinGenerator HashTableValue::builtinAccessorSetterGenerator() const > return reinterpret_cast<BuiltinGenerator>(m_values.value2); > } > >-inline bool getStaticPropertySlotFromTable(VM& vm, const HashTable& table, JSObject* thisObject, PropertyName propertyName, PropertySlot& slot) >+inline bool getStaticPropertySlotFromTable(VM& vm, const ClassInfo* classInfo, const HashTable& table, JSObject* thisObject, PropertyName propertyName, PropertySlot& slot) > { > if (thisObject->staticPropertiesReified()) > return false; >@@ -230,7 +229,7 @@ inline bool getStaticPropertySlotFromTable(VM& vm, const HashTable& table, JSObj > return false; > > if (entry->attributes() & BuiltinOrFunctionOrAccessorOrLazyProperty) >- return setUpStaticFunctionSlot(vm, entry, thisObject, propertyName, slot); >+ return setUpStaticFunctionSlot(vm, classInfo, entry, thisObject, propertyName, slot); > > if (entry->attributes() & ConstantInteger) { > slot.setValue(thisObject, attributesForStructure(entry->attributes()), jsNumber(entry->constantInteger())); >@@ -238,8 +237,13 @@ inline bool getStaticPropertySlotFromTable(VM& vm, const HashTable& table, JSObj > } > > if (entry->attributes() & DOMJITAttribute) { >- DOMJIT::GetterSetter* domJIT = entry->domJIT(); >- slot.setCacheableCustom(thisObject, attributesForStructure(entry->attributes()), domJIT->getter(), domJIT); >+ const DOMJIT::GetterSetter* domJIT = entry->domJIT(); >+ slot.setCacheableCustom(thisObject, attributesForStructure(entry->attributes()), domJIT->getter(), DOMAttributeAnnotation { classInfo, domJIT }); >+ return true; >+ } >+ >+ if (entry->attributes() & DOMAttribute) { >+ slot.setCacheableCustom(thisObject, attributesForStructure(entry->attributes()), entry->propertyGetter(), DOMAttributeAnnotation { classInfo, nullptr }); > return true; > } > >@@ -311,7 +315,7 @@ inline bool lookupPut(ExecState* exec, PropertyName propertyName, JSObject* base > return true; > } > >-inline void reifyStaticProperty(VM& vm, const PropertyName& propertyName, const HashTableValue& value, JSObject& thisObj) >+inline void reifyStaticProperty(VM& vm, const ClassInfo* classInfo, const PropertyName& propertyName, const HashTableValue& value, JSObject& thisObj) > { > if (value.attributes() & Builtin) { > if (value.attributes() & Accessor) >@@ -366,8 +370,14 @@ inline void reifyStaticProperty(VM& vm, const PropertyName& propertyName, const > } > > if (value.attributes() & DOMJITAttribute) { >- DOMJIT::GetterSetter* domJIT = value.domJIT(); >- CustomGetterSetter* customGetterSetter = CustomGetterSetter::create(vm, domJIT->getter(), domJIT->setter(), domJIT); >+ const DOMJIT::GetterSetter* domJIT = value.domJIT(); >+ auto* customGetterSetter = DOMAttributeGetterSetter::create(vm, domJIT->getter(), value.propertyPutter(), DOMAttributeAnnotation { classInfo, domJIT }); >+ thisObj.putDirectCustomAccessor(vm, propertyName, customGetterSetter, attributesForStructure(value.attributes())); >+ return; >+ } >+ >+ if (value.attributes() & DOMAttribute) { >+ auto* customGetterSetter = DOMAttributeGetterSetter::create(vm, value.propertyGetter(), value.propertyPutter(), DOMAttributeAnnotation { classInfo, nullptr }); > thisObj.putDirectCustomAccessor(vm, propertyName, customGetterSetter, attributesForStructure(value.attributes())); > return; > } >@@ -377,14 +387,14 @@ inline void reifyStaticProperty(VM& vm, const PropertyName& propertyName, const > } > > template<unsigned numberOfValues> >-inline void reifyStaticProperties(VM& vm, const HashTableValue (&values)[numberOfValues], JSObject& thisObj) >+inline void reifyStaticProperties(VM& vm, const ClassInfo* classInfo, const HashTableValue (&values)[numberOfValues], JSObject& thisObj) > { > BatchedTransitionOptimizer transitionOptimizer(vm, &thisObj); > for (auto& value : values) { > if (!value.m_key) > continue; > auto key = Identifier::fromString(&vm, reinterpret_cast<const LChar*>(value.m_key), strlen(value.m_key)); >- reifyStaticProperty(vm, key, value, thisObj); >+ reifyStaticProperty(vm, classInfo, key, value, thisObj); > } > } > >diff --git a/Source/JavaScriptCore/runtime/PropertyName.h b/Source/JavaScriptCore/runtime/PropertyName.h >index e44048880f1868ddf0ed72005bc9bff71babe2f2..432edfe8375d6987242e6518dd2fa975e95c1c23 100644 >--- a/Source/JavaScriptCore/runtime/PropertyName.h >+++ b/Source/JavaScriptCore/runtime/PropertyName.h >@@ -78,6 +78,7 @@ class PropertyName { > private: > UniquedStringImpl* m_impl; > }; >+static_assert(sizeof(PropertyName) == sizeof(UniquedStringImpl*), "UniquedStringImpl* and PropertyName should be compatible to invoke easily from JIT code."); > > inline bool operator==(PropertyName a, const Identifier& b) > { >diff --git a/Source/JavaScriptCore/runtime/PropertySlot.cpp b/Source/JavaScriptCore/runtime/PropertySlot.cpp >index e900a68bd97c84a6f63eedf48198301b9c33b8b7..bb22644defd78f113c270845ff562662afc89184 100644 >--- a/Source/JavaScriptCore/runtime/PropertySlot.cpp >+++ b/Source/JavaScriptCore/runtime/PropertySlot.cpp >@@ -21,7 +21,9 @@ > #include "config.h" > #include "PropertySlot.h" > >+#include "DOMJITGetterSetter.h" > #include "GetterSetter.h" >+#include "HeapCellInlines.h" > #include "JSCJSValueInlines.h" > #include "JSObject.h" > >@@ -38,6 +40,14 @@ JSValue PropertySlot::customGetter(ExecState* exec, PropertyName propertyName) c > // FIXME: Remove this differences in custom values and custom accessors. > // https://bugs.webkit.org/show_bug.cgi?id=158014 > JSValue thisValue = m_attributes & CustomAccessor ? m_thisValue : JSValue(slotBase()); >+ if (auto domAttribute = this->domAttribute()) { >+ VM& vm = exec->vm(); >+ auto scope = DECLARE_THROW_SCOPE(vm); >+ // DOMJIT type checking here. >+ // FIXME: Node, Element etc. have more efficient way to perform type check. >+ if (!thisValue.inherits(vm, domAttribute->classInfo)) >+ return throwDOMAttributeGetterTypeError(exec, scope, domAttribute->classInfo, propertyName); >+ } > return JSValue::decode(m_data.custom.getValue(exec, JSValue::encode(thisValue), propertyName)); > } > >@@ -45,6 +55,15 @@ JSValue PropertySlot::customAccessorGetter(ExecState* exec, PropertyName propert > { > if (!m_data.customAccessor.getterSetter->getter()) > return jsUndefined(); >+ >+ if (auto domAttribute = this->domAttribute()) { >+ VM& vm = exec->vm(); >+ auto scope = DECLARE_THROW_SCOPE(vm); >+ // DOMJIT type checking here. >+ // FIXME: Node, Element etc. have more efficient way to perform type check. >+ if (!m_thisValue.inherits(vm, domAttribute->classInfo)) >+ return throwDOMAttributeGetterTypeError(exec, scope, domAttribute->classInfo, propertyName); >+ } > return JSValue::decode(m_data.customAccessor.getterSetter->getter()(exec, JSValue::encode(m_thisValue), propertyName)); > } > >diff --git a/Source/JavaScriptCore/runtime/PropertySlot.h b/Source/JavaScriptCore/runtime/PropertySlot.h >index a7f0a6084d9364bab5df92f454cb301cc2e21e2e..42b67aaed1bb35d18912902c303d27a5879a1504 100644 >--- a/Source/JavaScriptCore/runtime/PropertySlot.h >+++ b/Source/JavaScriptCore/runtime/PropertySlot.h >@@ -20,6 +20,7 @@ > > #pragma once > >+#include "DOMAnnotation.h" > #include "JSCJSValue.h" > #include "PropertyName.h" > #include "PropertyOffset.h" >@@ -27,9 +28,6 @@ > #include <wtf/Assertions.h> > > namespace JSC { >-namespace DOMJIT { >-class GetterSetter; >-} > class ExecState; > class GetterSetter; > class JSObject; >@@ -37,7 +35,7 @@ class JSModuleEnvironment; > > // ECMA 262-3 8.6.1 > // Property attributes >-enum Attribute { >+enum Attribute : unsigned { > None = 0, > ReadOnly = 1 << 1, // property can be only read, not written > DontEnum = 1 << 2, // property doesn't appear in (for .. in ..) >@@ -52,12 +50,13 @@ enum Attribute { > CellProperty = 1 << 11, // property is a lazy property - only used by static hashtables > ClassStructure = 1 << 12, // property is a lazy class structure - only used by static hashtables > PropertyCallback = 1 << 13, // property that is a lazy property callback - only used by static hashtables >- DOMJITAttribute = 1 << 14, // property is a DOM JIT attribute - only used by static hashtables >- DOMJITFunction = 1 << 15, // property is a DOM JIT function - only used by static hashtables >+ DOMAttribute = 1 << 14, // property is a simple DOM attribute - only used by static hashtables >+ DOMJITAttribute = 1 << 15, // property is a DOM JIT attribute - only used by static hashtables >+ DOMJITFunction = 1 << 16, // property is a DOM JIT function - only used by static hashtables > BuiltinOrFunction = Builtin | Function, // helper only used by static hashtables > BuiltinOrFunctionOrLazyProperty = Builtin | Function | CellProperty | ClassStructure | PropertyCallback, // helper only used by static hashtables > BuiltinOrFunctionOrAccessorOrLazyProperty = Builtin | Function | Accessor | CellProperty | ClassStructure | PropertyCallback, // helper only used by static hashtables >- BuiltinOrFunctionOrAccessorOrLazyPropertyOrConstant = Builtin | Function | Accessor | CellProperty | ClassStructure | PropertyCallback | ConstantInteger // helper only used by static hashtables >+ BuiltinOrFunctionOrAccessorOrLazyPropertyOrConstant = DOMAttribute | Builtin | Function | Accessor | CellProperty | ClassStructure | PropertyCallback | ConstantInteger // helper only used by static hashtables > }; > > enum CacheabilityType : uint8_t { >@@ -90,7 +89,7 @@ class PropertySlot { > > enum class AdditionalDataType : uint8_t { > None, >- DOMJIT, // Annotated with DOMJIT information. >+ DOMAttribute, // Annotated with DOMAttribute information. > ModuleNamespace, // ModuleNamespaceObject's environment access. > }; > >@@ -170,11 +169,11 @@ class PropertySlot { > return m_watchpointSet; > } > >- DOMJIT::GetterSetter* domJIT() const >+ std::optional<DOMAttributeAnnotation> domAttribute() const > { >- if (m_additionalDataType == AdditionalDataType::DOMJIT) >- return m_additionalData.domJIT; >- return nullptr; >+ if (m_additionalDataType == AdditionalDataType::DOMAttribute) >+ return m_additionalData.domAttribute; >+ return std::nullopt; > } > > struct ModuleNamespaceSlot { >@@ -250,6 +249,13 @@ class PropertySlot { > m_propertyType = TypeCustom; > m_offset = invalidOffset; > } >+ >+ void setCustom(JSObject* slotBase, unsigned attributes, GetValueFunc getValue, DOMAttributeAnnotation domAttribute) >+ { >+ setCustom(slotBase, attributes, getValue); >+ m_additionalDataType = AdditionalDataType::DOMAttribute; >+ m_additionalData.domAttribute = domAttribute; >+ } > > void setCacheableCustom(JSObject* slotBase, unsigned attributes, GetValueFunc getValue) > { >@@ -265,13 +271,11 @@ class PropertySlot { > m_offset = !invalidOffset; > } > >- void setCacheableCustom(JSObject* slotBase, unsigned attributes, GetValueFunc getValue, DOMJIT::GetterSetter* domJIT) >+ void setCacheableCustom(JSObject* slotBase, unsigned attributes, GetValueFunc getValue, DOMAttributeAnnotation domAttribute) > { > setCacheableCustom(slotBase, attributes, getValue); >- if (domJIT) { >- m_additionalDataType = AdditionalDataType::DOMJIT; >- m_additionalData.domJIT = domJIT; >- } >+ m_additionalDataType = AdditionalDataType::DOMAttribute; >+ m_additionalData.domAttribute = domAttribute; > } > > void setCustomGetterSetter(JSObject* slotBase, unsigned attributes, CustomGetterSetter* getterSetter) >@@ -369,7 +373,7 @@ class PropertySlot { > InternalMethodType m_internalMethodType; > AdditionalDataType m_additionalDataType; > union { >- DOMJIT::GetterSetter* domJIT; >+ DOMAttributeAnnotation domAttribute; > ModuleNamespaceSlot moduleNamespaceSlot; > } m_additionalData; > bool m_isTaintedByOpaqueObject; >@@ -392,6 +396,8 @@ ALWAYS_INLINE JSValue PropertySlot::getValue(ExecState* exec, unsigned propertyN > return JSValue::decode(m_data.value); > if (m_propertyType == TypeGetter) > return functionGetter(exec); >+ if (m_propertyType == TypeCustomAccessor) >+ return customAccessorGetter(exec, Identifier::from(exec, propertyName)); > return customGetter(exec, Identifier::from(exec, propertyName)); > } > >diff --git a/Source/JavaScriptCore/runtime/VM.cpp b/Source/JavaScriptCore/runtime/VM.cpp >index c3fc541f70442c30f632f117188f37112dc3c8ee..290ac09fb2af9dc48bfedb740e9cfa7722e17e9a 100644 >--- a/Source/JavaScriptCore/runtime/VM.cpp >+++ b/Source/JavaScriptCore/runtime/VM.cpp >@@ -231,6 +231,7 @@ VM::VM(VMType vmType, HeapType heapType) > stringStructure.set(*this, JSString::createStructure(*this, 0, jsNull())); > propertyNameEnumeratorStructure.set(*this, JSPropertyNameEnumerator::createStructure(*this, 0, jsNull())); > customGetterSetterStructure.set(*this, CustomGetterSetter::createStructure(*this, 0, jsNull())); >+ domAttributeGetterSetterStructure.set(*this, DOMAttributeGetterSetter::createStructure(*this, 0, jsNull())); > scopedArgumentsTableStructure.set(*this, ScopedArgumentsTable::createStructure(*this, 0, jsNull())); > apiWrapperStructure.set(*this, JSAPIValueWrapper::createStructure(*this, 0, jsNull())); > JSScopeStructure.set(*this, JSScope::createStructure(*this, 0, jsNull())); >diff --git a/Source/JavaScriptCore/runtime/VM.h b/Source/JavaScriptCore/runtime/VM.h >index 178a3e2ba88faede959ca30e38be0792adad8928..774d898a53aa62e8b47442ca6d1ce2adc6209f72 100644 >--- a/Source/JavaScriptCore/runtime/VM.h >+++ b/Source/JavaScriptCore/runtime/VM.h >@@ -96,6 +96,7 @@ class CodeBlock; > class CodeCache; > class CommonIdentifiers; > class CustomGetterSetter; >+class DOMAttributeGetterSetter; > class ExecState; > class Exception; > class ExceptionScope; >@@ -321,6 +322,7 @@ class VM : public ThreadSafeRefCounted<VM>, public DoublyLinkedListNode<VM> { > Strong<Structure> propertyNameIteratorStructure; > Strong<Structure> propertyNameEnumeratorStructure; > Strong<Structure> customGetterSetterStructure; >+ Strong<Structure> domAttributeGetterSetterStructure; > Strong<Structure> scopedArgumentsTableStructure; > Strong<Structure> apiWrapperStructure; > Strong<Structure> JSScopeStructure; >diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt >index 37110c6d5589d254e8b4aa1a7786fcfd094011a5..0d69bc7c2423a64dfe008f0fd6252a0ff4fcf6f3 100644 >--- a/Source/WebCore/CMakeLists.txt >+++ b/Source/WebCore/CMakeLists.txt >@@ -1575,7 +1575,10 @@ set(WebCore_SOURCES > dom/default/PlatformMessagePortChannel.cpp > > domjit/DOMJITHelpers.cpp >+ domjit/JSElementDOMJIT.cpp >+ domjit/JSEventDOMJIT.cpp > domjit/JSDocumentDOMJIT.cpp >+ domjit/JSDocumentFragmentDOMJIT.cpp > domjit/JSNodeDOMJIT.cpp > > editing/AlternativeTextController.cpp >diff --git a/Source/WebCore/bindings/js/JSDOMBindingCaller.h b/Source/WebCore/bindings/js/JSDOMBindingCaller.h >index 715c6713d27fefc147b7ed495b43067c2d08338a..676703accfbdcf319997231c49f59de7134785e8 100644 >--- a/Source/WebCore/bindings/js/JSDOMBindingCaller.h >+++ b/Source/WebCore/bindings/js/JSDOMBindingCaller.h >@@ -87,6 +87,13 @@ struct BindingCaller { > { > ASSERT(state); > auto throwScope = DECLARE_THROW_SCOPE(state->vm()); >+ >+ if (shouldThrow == CastedThisErrorBehavior::Assert) { >+ ASSERT(castForAttribute(*state, thisValue)); >+ auto* thisObject = JSC::jsCast<JSClass*>(JSC::JSValue::decode(thisValue)); >+ return JSC::JSValue::encode(getter(*state, *thisObject, throwScope)); >+ } >+ > auto* thisObject = castForAttribute(*state, thisValue); > if (UNLIKELY(!thisObject)) { > if (shouldThrow == CastedThisErrorBehavior::Throw) >diff --git a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm >index 5358fa4c0ad98b63be68c3c7f4ff53e960a06f28..85fc7553138ac0a5b62744af8757226e8c7675b6 100644 >--- a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm >+++ b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm >@@ -1018,6 +1018,28 @@ sub OperationShouldBeOnInstance > return 0; > } > >+sub IsAcceleratedDOMAttribute >+{ >+ my ($interface, $attribute) = @_; >+ >+ # If we use CustomGetterSetter in IDL code generator, we cannot skip type check. >+ return 0 if NeedsRuntimeCheck($attribute); >+ return 0 if AttributeShouldBeOnInstance($interface, $attribute); >+ return 0 if $attribute->extendedAttributes->{PrivateIdentifier}; >+ >+ # If the interface has special logic of castForAttribute, we cannot hoist type check to JSC. >+ return 0 if $interface->extendedAttributes->{"ImplicitThis"}; >+ >+ return 0 if $attribute->isStatic; >+ return 0 if $attribute->isMapLike; >+ return 0 if $codeGenerator->IsConstructorType($attribute->type); >+ return 0 if IsJSBuiltin($interface, $attribute); >+ return 0 if $attribute->extendedAttributes->{LenientThis}; >+ return 0 if IsReturningPromise($attribute); >+ return 0 if $attribute->extendedAttributes->{"DOMJIT"}; >+ return 1; >+} >+ > sub GetJSCAttributesForAttribute > { > my $interface = shift; >@@ -1031,6 +1053,7 @@ sub GetJSCAttributesForAttribute > push(@specials, "DontEnum") if ($attribute->extendedAttributes->{NotEnumerable} || $isGlobalConstructor); > push(@specials, "ReadOnly") if IsReadonly($attribute); > push(@specials, "CustomAccessor") unless $isGlobalConstructor or IsJSBuiltin($interface, $attribute); >+ push(@specials, "DOMAttribute") if IsAcceleratedDOMAttribute($interface, $attribute); > push(@specials, "DOMJITAttribute") if $attribute->extendedAttributes->{"DOMJIT"}; > push(@specials, "Accessor | Builtin") if IsJSBuiltin($interface, $attribute); > return (@specials > 0) ? join(" | ", @specials) : "0"; >@@ -1971,7 +1994,7 @@ sub GenerateHeader > my $hasForwardDeclaringFunctions = 0; > my $hasForwardDeclaringAttributes = 0; > >- my $hasDOMJITAttributes = 0; >+ my $hasDOMAttributes = 0; > > # Attribute and function enums > if ($numAttributes > 0) { >@@ -1987,8 +2010,7 @@ sub GenerateHeader > $needsVisitChildren = 1; > push(@headerContent, "#endif\n") if $conditionalString; > } >- $hasDOMJITAttributes = 1 if $attribute->extendedAttributes->{"DOMJIT"}; >- >+ $hasDOMAttributes = 1 if $attribute->extendedAttributes->{"DOMJIT"}; > $hasForwardDeclaringAttributes = 1 if $attribute->extendedAttributes->{ForwardDeclareInHeader}; > } > } >@@ -2216,26 +2238,41 @@ sub GenerateHeader > } > } > >- if ($hasDOMJITAttributes) { >+ if ($hasDOMAttributes) { > $headerIncludes{"<domjit/DOMJITGetterSetter.h>"} = 1; >- push(@headerContent,"// DOMJIT emitters for attributes\n\n"); >+ push(@headerContent,"// Accelerated DOM Attributes\n\n"); >+ >+ my $interfaceName = $interface->type->name; >+ push(@headerContent, "class ${interfaceName}InterfaceDOMJIT : public JSC::DOMJIT::GetterSetter {\n"); >+ push(@headerContent, "public:\n"); >+ push(@headerContent, " template<typename... Args>\n"); >+ push(@headerContent, " inline constexpr ${interfaceName}InterfaceDOMJIT(Args&&... args)\n"); >+ push(@headerContent, " : JSC::DOMJIT::GetterSetter(args...)\n"); >+ push(@headerContent, " {\n"); >+ push(@headerContent, " }\n"); >+ if ($interface->extendedAttributes->{DOMJIT}) { >+ push(@headerContent, "#if ENABLE(JIT)\n"); >+ push(@headerContent, " RefPtr<JSC::DOMJIT::Patchpoint> checkDOM() const final;\n"); >+ push(@headerContent, "#endif\n"); >+ } >+ push(@headerContent, "};\n\n"); >+ > foreach my $attribute (@{$interface->attributes}) { > next unless $attribute->extendedAttributes->{"DOMJIT"}; >- assert("Only DOMJIT=Getter is supported for attributes") unless $codeGenerator->ExtendedAttributeContains($attribute->extendedAttributes->{DOMJIT}, "Getter"); >+ # assert("Only DOMJIT=Getter is supported for attributes") unless $codeGenerator->ExtendedAttributeContains($attribute->extendedAttributes->{DOMJIT}, "Getter"); > > my $interfaceName = $interface->type->name; > my $className = $interfaceName . $codeGenerator->WK_ucfirst($attribute->name); >- my $domJITClassName = $className . "DOMJIT"; >- >- push(@headerContent, "JSC::DOMJIT::GetterSetter* domJITGetterSetterFor$className(void);\n"); >+ my $domJITClassName = $className . "AttributeDOMJIT"; > >- push(@headerContent, "class ${domJITClassName} : public JSC::DOMJIT::GetterSetter {\n"); >+ push(@headerContent, "class ${domJITClassName} : public ${interfaceName}InterfaceDOMJIT {\n"); > push(@headerContent, "public:\n"); >- push(@headerContent, " ${domJITClassName}();\n"); >- push(@headerContent, "#if ENABLE(JIT)\n"); >- push(@headerContent, " Ref<JSC::DOMJIT::Patchpoint> checkDOM() override;\n"); >- push(@headerContent, " Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override;\n"); >- push(@headerContent, "#endif\n"); >+ push(@headerContent, " constexpr ${domJITClassName}();\n"); >+ if ($attribute->extendedAttributes->{DOMJIT}) { >+ push(@headerContent, "#if ENABLE(JIT)\n"); >+ push(@headerContent, " RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final;\n"); >+ push(@headerContent, "#endif\n"); >+ } > push(@headerContent, "};\n\n"); > } > } >@@ -2329,18 +2366,17 @@ sub GeneratePropertiesHashTable > push(@$hashSpecials, $special); > > if ($attribute->extendedAttributes->{"DOMJIT"}) { >- push(@$hashValue1, "domJITGetterSetterFor" . $interface->type->name . $codeGenerator->WK_ucfirst($attribute->name)); >- push(@$hashValue2, "0"); >+ push(@$hashValue1, "&DOMJITAttributeFor" . $interface->type->name . $codeGenerator->WK_ucfirst($attribute->name)); > } else { > my $getter = GetAttributeGetterName($interface, $className, $attribute); > push(@$hashValue1, $getter); >+ } > >- if (IsReadonly($attribute)) { >- push(@$hashValue2, "0"); >- } else { >- my $setter = GetAttributeSetterName($interface, $className, $attribute); >- push(@$hashValue2, $setter); >- } >+ if (IsReadonly($attribute)) { >+ push(@$hashValue2, "0"); >+ } else { >+ my $setter = GetAttributeSetterName($interface, $className, $attribute); >+ push(@$hashValue2, $setter); > } > > my $conditional = $attribute->extendedAttributes->{Conditional}; >@@ -3203,6 +3239,34 @@ sub GenerateImplementation > } > } > >+ if ($numAttributes > 0 || NeedsConstructorProperty($interface)) { >+ foreach my $attribute (@attributes) { >+ next unless $attribute->extendedAttributes->{"DOMJIT"}; >+ # assert("Only DOMJIT=Getter is supported for attributes") unless $codeGenerator->ExtendedAttributeContains($attribute->extendedAttributes->{DOMJIT}, "Getter"); >+ >+ my $conditionalString = $codeGenerator->GenerateConditionalString($attribute); >+ push(@implContent, "#if ${conditionalString}\n") if $conditionalString; >+ $implIncludes{"<wtf/NeverDestroyed.h>"} = 1; >+ $implIncludes{"DOMJITIDLTypeFilter.h"} = 1; >+ my $interfaceName = $interface->type->name; >+ my $generatorName = $interfaceName . $codeGenerator->WK_ucfirst($attribute->name); >+ my $domJITClassName = $generatorName . "AttributeDOMJIT"; >+ my $getter = GetAttributeGetterName($interface, $generatorName, $attribute); >+ # my $setter = IsReadonly($attribute) ? "nullptr" : GetAttributeSetterName($interface, $generatorName, $attribute); >+ my $resultType = "JSC::SpecBytecodeTop"; >+ if ($attribute->extendedAttributes->{DOMJIT}) { >+ $resultType = GetResultTypeFilter($interface, $attribute->type); >+ } >+ push(@implContent, "constexpr inline ${domJITClassName}::${domJITClassName}()\n"); >+ push(@implContent, " : ${interfaceName}InterfaceDOMJIT($getter, $resultType)\n"); >+ push(@implContent, "{\n"); >+ push(@implContent, "}\n"); >+ push(@implContent, "static const ${domJITClassName} DOMJITAttributeFor${generatorName};\n\n"); >+ push(@implContent, "#endif\n") if $conditionalString; >+ push(@implContent, "\n"); >+ } >+ } >+ > GeneratePrototypeDeclaration(\@implContent, $className, $interface) if !HeaderNeedsPrototypeDeclaration($interface); > > GenerateConstructorDeclaration(\@implContent, $className, $interface) if NeedsConstructorProperty($interface); >@@ -3268,23 +3332,23 @@ sub GenerateImplementation > my @specials = (); > push(@specials, "DontDelete") if IsUnforgeable($interface, $attribute); > push(@specials, "ReadOnly") if IsReadonly($attribute); >+ push(@specials, "DOMAttribute") if IsAcceleratedDOMAttribute($interface, $attribute); > push(@specials, "DOMJITAttribute") if $attribute->extendedAttributes->{"DOMJIT"}; > my $special = (@specials > 0) ? join(" | ", @specials) : "0"; > push(@hashSpecials, $special); > > if ($attribute->extendedAttributes->{"DOMJIT"}) { >- push(@hashValue1, "domJITGetterSetterFor" . $interface->type->name . $codeGenerator->WK_ucfirst($attribute->name)); >- push(@hashValue2, "0"); >+ push(@hashValue1, "&DOMJITAttributeFor" . $interface->type->name . $codeGenerator->WK_ucfirst($attribute->name)); > } else { > my $getter = GetAttributeGetterName($interface, $className, $attribute); > push(@hashValue1, $getter); >+ } > >- if (IsReadonly($attribute)) { >- push(@hashValue2, "0"); >- } else { >- my $setter = GetAttributeSetterName($interface, $className, $attribute); >- push(@hashValue2, $setter); >- } >+ if (IsReadonly($attribute)) { >+ push(@hashValue2, "0"); >+ } else { >+ my $setter = GetAttributeSetterName($interface, $className, $attribute); >+ push(@hashValue2, $setter); > } > > my $conditional = $attribute->extendedAttributes->{Conditional}; >@@ -3392,7 +3456,7 @@ sub GenerateImplementation > } > push(@implContent, "{\n"); > push(@implContent, " Base::finishCreation(vm);\n"); >- push(@implContent, " reifyStaticProperties(vm, ${className}PrototypeTableValues, *this);\n"); >+ push(@implContent, " reifyStaticProperties(vm, ${className}::info(), ${className}PrototypeTableValues, *this);\n"); > > my @runtimeEnabledProperties = @runtimeEnabledFunctions; > push(@runtimeEnabledProperties, @runtimeEnabledAttributes); >@@ -3695,6 +3759,8 @@ sub GenerateImplementation > $templateParameters .= ", CastedThisErrorBehavior::ReturnEarly"; > } elsif (IsReturningPromise($attribute)) { > $templateParameters .= ", CastedThisErrorBehavior::RejectPromise"; >+ } elsif (IsAcceleratedDOMAttribute($interface, $attribute)) { >+ $templateParameters .= ", CastedThisErrorBehavior::Assert"; > } > > push(@implContent, "static inline JSValue ${getFunctionName}Getter(ExecState&, ${className}&, ThrowScope& throwScope);\n\n"); >@@ -3806,29 +3872,6 @@ sub GenerateImplementation > } > > push(@implContent, "}\n\n"); >- >- if ($attribute->extendedAttributes->{"DOMJIT"}) { >- assert("Only DOMJIT=Getter is supported for attributes") unless $codeGenerator->ExtendedAttributeContains($attribute->extendedAttributes->{DOMJIT}, "Getter"); >- >- $implIncludes{"<wtf/NeverDestroyed.h>"} = 1; >- $implIncludes{"DOMJITIDLTypeFilter.h"} = 1; >- my $generatorName = $interface->type->name . $codeGenerator->WK_ucfirst($attribute->name); >- my $domJITClassName = $generatorName . "DOMJIT"; >- my $getter = GetAttributeGetterName($interface, $generatorName, $attribute); >- my $setter = IsReadonly($attribute) ? "nullptr" : GetAttributeSetterName($interface, $generatorName, $attribute); >- my $resultType = GetResultTypeFilter($interface, $attribute->type); >- push(@implContent, "${domJITClassName}::${domJITClassName}()\n"); >- push(@implContent, " : JSC::DOMJIT::GetterSetter($getter, $setter, ${className}::info(), $resultType)\n"); >- push(@implContent, "{\n"); >- push(@implContent, "}\n\n"); >- >- push(@implContent, "JSC::DOMJIT::GetterSetter* domJITGetterSetterFor" . $generatorName . "()\n"); >- push(@implContent, "{\n"); >- push(@implContent, " static NeverDestroyed<${domJITClassName}> compiler;\n"); >- push(@implContent, " return &compiler.get();\n"); >- push(@implContent, "}\n\n"); >- } >- > push(@implContent, "#endif\n\n") if $attributeConditionalString; > } > >@@ -5852,7 +5895,7 @@ sub GenerateHashTableValueArray > } elsif ("@$specials[$i]" =~ m/ConstantInteger/) { > $firstTargetType = ""; > } elsif ("@$specials[$i]" =~ m/DOMJITAttribute/) { >- $firstTargetType = "static_cast<DOMJITGetterSetterGenerator>"; >+ $firstTargetType = "static_cast<const JSC::DOMJIT::GetterSetter*>"; > } else { > $firstTargetType = "static_cast<PropertySlot::GetValueFunc>"; > $secondTargetType = "static_cast<PutPropertySlot::PutValueFunc>"; >@@ -6314,7 +6357,7 @@ sub GenerateConstructorHelperMethods > > push(@$outputArray, " putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String(ASCIILiteral(\"$visibleInterfaceName\"))), ReadOnly | DontEnum);\n"); > push(@$outputArray, " putDirect(vm, vm.propertyNames->length, jsNumber(${leastConstructorLength}), ReadOnly | DontEnum);\n") if defined $leastConstructorLength; >- push(@$outputArray, " reifyStaticProperties(vm, ${className}ConstructorTableValues, *this);\n") if ConstructorHasProperties($interface); >+ push(@$outputArray, " reifyStaticProperties(vm, ${className}Constructor::info(), ${className}ConstructorTableValues, *this);\n") if ConstructorHasProperties($interface); > > push(@$outputArray, "}\n\n"); > >diff --git a/Source/WebCore/bindings/scripts/IDLAttributes.json b/Source/WebCore/bindings/scripts/IDLAttributes.json >index 1f5e0fea622fefa8adcf9da51f03ac5c7a56bdc3..9b9f423cf0be45ff9fa31598d4919b4ea98a6563 100644 >--- a/Source/WebCore/bindings/scripts/IDLAttributes.json >+++ b/Source/WebCore/bindings/scripts/IDLAttributes.json >@@ -126,7 +126,7 @@ > "contextsAllowed": ["interface"] > }, > "DOMJIT": { >- "contextsAllowed": ["attribute", "operation"], >+ "contextsAllowed": ["attribute", "interface", "operation"], > "values": ["", "ReadDOM", "Getter"] > }, > "DoNotCheckConstants": { >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp b/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp >index 8fff900cccd1122b3b36eb781f258c804824729a..0e265d161600b8097fb659bbe74fc86641729b83 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp >@@ -92,7 +92,7 @@ const ClassInfo JSInterfaceNamePrototype::s_info = { "InterfaceNamePrototype", & > void JSInterfaceNamePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSInterfaceNamePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSInterfaceName::info(), JSInterfaceNamePrototypeTableValues, *this); > } > > const ClassInfo JSInterfaceName::s_info = { "InterfaceName", &Base::s_info, 0, CREATE_METHOD_TABLE(JSInterfaceName) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp b/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp >index 5e00b10858b1ed7bc944aba4ddd28878463dd50c..a251c14f29012c6f626fc664f2302d6f83a64db1 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp >@@ -118,7 +118,7 @@ const ClassInfo JSMapLikePrototype::s_info = { "MapLikePrototype", &Base::s_info > void JSMapLikePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSMapLikePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSMapLike::info(), JSMapLikePrototypeTableValues, *this); > putDirect(vm, vm.propertyNames->iteratorSymbol, getDirect(vm, vm.propertyNames->builtinNames().valuesPublicName()), DontEnum); > } > >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp b/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp >index 6e31c09769e0d0bb9ff67b55475436fef6ed78f0..8fbcff76169f174418d0727d48111517cc8f7554 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp >@@ -112,7 +112,7 @@ const ClassInfo JSReadOnlyMapLikePrototype::s_info = { "ReadOnlyMapLikePrototype > void JSReadOnlyMapLikePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSReadOnlyMapLikePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSReadOnlyMapLike::info(), JSReadOnlyMapLikePrototypeTableValues, *this); > putDirect(vm, vm.propertyNames->iteratorSymbol, getDirect(vm, vm.propertyNames->builtinNames().valuesPublicName()), DontEnum); > } > >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp >index 5f1654a5fe5d97cc1241503b83199faf44c5dd66..3d413e15beb779aa31e7ff48127139f5e3a4a4c0 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp >@@ -118,7 +118,7 @@ const ClassInfo JSTestActiveDOMObjectPrototype::s_info = { "TestActiveDOMObjectP > void JSTestActiveDOMObjectPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestActiveDOMObjectPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestActiveDOMObject::info(), JSTestActiveDOMObjectPrototypeTableValues, *this); > } > > const ClassInfo JSTestActiveDOMObject::s_info = { "TestActiveDOMObject", &Base::s_info, &JSTestActiveDOMObjectTable, CREATE_METHOD_TABLE(JSTestActiveDOMObject) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp >index e0329427a30857dd17d50addd692e91fc21698d6..e4c866f027750f9080a9066b6ea5424951f1c1ed 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp >@@ -100,9 +100,9 @@ template<> const ClassInfo JSTestCEReactionsConstructor::s_info = { "TestCEReact > static const HashTableValue JSTestCEReactionsPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsConstructor) } }, >- { "attributeWithCEReactions", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsAttributeWithCEReactions), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsAttributeWithCEReactions) } }, >- { "reflectAttributeWithCEReactions", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsReflectAttributeWithCEReactions), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsReflectAttributeWithCEReactions) } }, >- { "stringifierAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsStringifierAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsStringifierAttribute) } }, >+ { "attributeWithCEReactions", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsAttributeWithCEReactions), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsAttributeWithCEReactions) } }, >+ { "reflectAttributeWithCEReactions", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsReflectAttributeWithCEReactions), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsReflectAttributeWithCEReactions) } }, >+ { "stringifierAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsStringifierAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsStringifierAttribute) } }, > { "methodWithCEReactions", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestCEReactionsPrototypeFunctionMethodWithCEReactions), (intptr_t) (0) } }, > }; > >@@ -111,7 +111,7 @@ const ClassInfo JSTestCEReactionsPrototype::s_info = { "TestCEReactionsPrototype > void JSTestCEReactionsPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestCEReactionsPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestCEReactions::info(), JSTestCEReactionsPrototypeTableValues, *this); > } > > const ClassInfo JSTestCEReactions::s_info = { "TestCEReactions", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestCEReactions) }; >@@ -158,7 +158,7 @@ static inline JSValue jsTestCEReactionsAttributeWithCEReactionsGetter(ExecState& > > EncodedJSValue jsTestCEReactionsAttributeWithCEReactions(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestCEReactions>::attribute<jsTestCEReactionsAttributeWithCEReactionsGetter>(state, thisValue, "attributeWithCEReactions"); >+ return BindingCaller<JSTestCEReactions>::attribute<jsTestCEReactionsAttributeWithCEReactionsGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attributeWithCEReactions"); > } > > static inline JSValue jsTestCEReactionsAttributeWithCEReactionsGetter(ExecState& state, JSTestCEReactions& thisObject, ThrowScope& throwScope) >@@ -174,7 +174,7 @@ static inline JSValue jsTestCEReactionsReflectAttributeWithCEReactionsGetter(Exe > > EncodedJSValue jsTestCEReactionsReflectAttributeWithCEReactions(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestCEReactions>::attribute<jsTestCEReactionsReflectAttributeWithCEReactionsGetter>(state, thisValue, "reflectAttributeWithCEReactions"); >+ return BindingCaller<JSTestCEReactions>::attribute<jsTestCEReactionsReflectAttributeWithCEReactionsGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectAttributeWithCEReactions"); > } > > static inline JSValue jsTestCEReactionsReflectAttributeWithCEReactionsGetter(ExecState& state, JSTestCEReactions& thisObject, ThrowScope& throwScope) >@@ -190,7 +190,7 @@ static inline JSValue jsTestCEReactionsStringifierAttributeGetter(ExecState&, JS > > EncodedJSValue jsTestCEReactionsStringifierAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestCEReactions>::attribute<jsTestCEReactionsStringifierAttributeGetter>(state, thisValue, "stringifierAttribute"); >+ return BindingCaller<JSTestCEReactions>::attribute<jsTestCEReactionsStringifierAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringifierAttribute"); > } > > static inline JSValue jsTestCEReactionsStringifierAttributeGetter(ExecState& state, JSTestCEReactions& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp >index 03b5bc0cb67ea37389ee69c070cc9ab3bec8ce5c..7877d137f7024af5a97e1be78dd25e70b40bbf2b 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp >@@ -94,7 +94,7 @@ template<> const ClassInfo JSTestCEReactionsStringifierConstructor::s_info = { " > static const HashTableValue JSTestCEReactionsStringifierPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsStringifierConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsStringifierConstructor) } }, >- { "value", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsStringifierValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsStringifierValue) } }, >+ { "value", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCEReactionsStringifierValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestCEReactionsStringifierValue) } }, > { "toString", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestCEReactionsStringifierPrototypeFunctionToString), (intptr_t) (0) } }, > }; > >@@ -103,7 +103,7 @@ const ClassInfo JSTestCEReactionsStringifierPrototype::s_info = { "TestCEReactio > void JSTestCEReactionsStringifierPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestCEReactionsStringifierPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestCEReactionsStringifier::info(), JSTestCEReactionsStringifierPrototypeTableValues, *this); > } > > const ClassInfo JSTestCEReactionsStringifier::s_info = { "TestCEReactionsStringifier", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestCEReactionsStringifier) }; >@@ -150,7 +150,7 @@ static inline JSValue jsTestCEReactionsStringifierValueGetter(ExecState&, JSTest > > EncodedJSValue jsTestCEReactionsStringifierValue(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestCEReactionsStringifier>::attribute<jsTestCEReactionsStringifierValueGetter>(state, thisValue, "value"); >+ return BindingCaller<JSTestCEReactionsStringifier>::attribute<jsTestCEReactionsStringifierValueGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "value"); > } > > static inline JSValue jsTestCEReactionsStringifierValueGetter(ExecState& state, JSTestCEReactionsStringifier& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp >index b74d4afd7b20923de79d36085373be18740db310..6ebaae7be4f39b25160d9de63b132dd186e4c068 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCallbackInterface.cpp >@@ -83,7 +83,7 @@ template<> void JSTestCallbackInterfaceConstructor::initializeProperties(VM& vm, > UNUSED_PARAM(globalObject); > putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String(ASCIILiteral("TestCallbackInterface"))), ReadOnly | DontEnum); > putDirect(vm, vm.propertyNames->length, jsNumber(0), ReadOnly | DontEnum); >- reifyStaticProperties(vm, JSTestCallbackInterfaceConstructorTableValues, *this); >+ reifyStaticProperties(vm, JSTestCallbackInterfaceConstructor::info(), JSTestCallbackInterfaceConstructorTableValues, *this); > } > > template<> const ClassInfo JSTestCallbackInterfaceConstructor::s_info = { "TestCallbackInterface", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestCallbackInterfaceConstructor) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp >index 91c111f1b1149562199a03ea5ec80c7ff2fbb035..bbbfd2fa9c037220a71e63c5d35d316ff6ad25b4 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp >@@ -98,7 +98,7 @@ const ClassInfo JSTestClassWithJSBuiltinConstructorPrototype::s_info = { "TestCl > void JSTestClassWithJSBuiltinConstructorPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestClassWithJSBuiltinConstructorPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestClassWithJSBuiltinConstructor::info(), JSTestClassWithJSBuiltinConstructorPrototypeTableValues, *this); > } > > const ClassInfo JSTestClassWithJSBuiltinConstructor::s_info = { "TestClassWithJSBuiltinConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestClassWithJSBuiltinConstructor) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp >index 32a5336a81933bb6561cbc31e47eea408b85f3b5..f8b3242b7b44be50b4ed97984aa5c61440baa9ae 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp >@@ -98,7 +98,7 @@ const ClassInfo JSTestCustomConstructorWithNoInterfaceObjectPrototype::s_info = > void JSTestCustomConstructorWithNoInterfaceObjectPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestCustomConstructorWithNoInterfaceObjectPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestCustomConstructorWithNoInterfaceObject::info(), JSTestCustomConstructorWithNoInterfaceObjectPrototypeTableValues, *this); > } > > const ClassInfo JSTestCustomConstructorWithNoInterfaceObject::s_info = { "TestCustomConstructorWithNoInterfaceObject", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestCustomConstructorWithNoInterfaceObject) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp >index ab80d8237b3fbc62d46dc36fe4b478de5b2ad6e6..6836595a0480d7110fa017a6cb14886b5b8e9645 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp >@@ -99,7 +99,7 @@ const ClassInfo JSTestCustomNamedGetterPrototype::s_info = { "TestCustomNamedGet > void JSTestCustomNamedGetterPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestCustomNamedGetterPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestCustomNamedGetter::info(), JSTestCustomNamedGetterPrototypeTableValues, *this); > } > > const ClassInfo JSTestCustomNamedGetter::s_info = { "TestCustomNamedGetter", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestCustomNamedGetter) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp >index 6d7d32c7126225b5082c7682e9a2bcfbefbf5f86..e0e7f1b589e735797891814c5b93a900929ff669 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp >@@ -126,6 +126,251 @@ static const JSC::DOMJIT::Signature DOMJITSignatureForTestDOMJITGetElementsByNam > static const JSC::DOMJIT::Signature DOMJITSignatureForTestDOMJITGetElementsByName((uintptr_t)unsafeJsTestDOMJITPrototypeFunctionGetElementsByName, nullptr, JSTestDOMJIT::info(), JSC::DOMJIT::Effect::forRead(DOMJIT::AbstractHeapRepository::DOM), DOMJIT::IDLResultTypeFilter<IDLInterface<NodeList>>::value, DOMJIT::IDLArgumentTypeFilter<IDLAtomicStringAdaptor<IDLDOMString>>::value); > #endif > >+constexpr inline TestDOMJITAnyAttrAttributeDOMJIT::TestDOMJITAnyAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITAnyAttr, DOMJIT::IDLResultTypeFilter<IDLAny>::value) >+{ >+} >+static const TestDOMJITAnyAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITAnyAttr; >+ >+ >+constexpr inline TestDOMJITBooleanAttrAttributeDOMJIT::TestDOMJITBooleanAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITBooleanAttr, DOMJIT::IDLResultTypeFilter<IDLBoolean>::value) >+{ >+} >+static const TestDOMJITBooleanAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITBooleanAttr; >+ >+ >+constexpr inline TestDOMJITByteAttrAttributeDOMJIT::TestDOMJITByteAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITByteAttr, DOMJIT::IDLResultTypeFilter<IDLByte>::value) >+{ >+} >+static const TestDOMJITByteAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITByteAttr; >+ >+ >+constexpr inline TestDOMJITOctetAttrAttributeDOMJIT::TestDOMJITOctetAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITOctetAttr, DOMJIT::IDLResultTypeFilter<IDLOctet>::value) >+{ >+} >+static const TestDOMJITOctetAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITOctetAttr; >+ >+ >+constexpr inline TestDOMJITShortAttrAttributeDOMJIT::TestDOMJITShortAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITShortAttr, DOMJIT::IDLResultTypeFilter<IDLShort>::value) >+{ >+} >+static const TestDOMJITShortAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITShortAttr; >+ >+ >+constexpr inline TestDOMJITUnsignedShortAttrAttributeDOMJIT::TestDOMJITUnsignedShortAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnsignedShortAttr, DOMJIT::IDLResultTypeFilter<IDLUnsignedShort>::value) >+{ >+} >+static const TestDOMJITUnsignedShortAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnsignedShortAttr; >+ >+ >+constexpr inline TestDOMJITLongAttrAttributeDOMJIT::TestDOMJITLongAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITLongAttr, DOMJIT::IDLResultTypeFilter<IDLLong>::value) >+{ >+} >+static const TestDOMJITLongAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITLongAttr; >+ >+ >+constexpr inline TestDOMJITUnsignedLongAttrAttributeDOMJIT::TestDOMJITUnsignedLongAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnsignedLongAttr, DOMJIT::IDLResultTypeFilter<IDLUnsignedLong>::value) >+{ >+} >+static const TestDOMJITUnsignedLongAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnsignedLongAttr; >+ >+ >+constexpr inline TestDOMJITLongLongAttrAttributeDOMJIT::TestDOMJITLongLongAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITLongLongAttr, DOMJIT::IDLResultTypeFilter<IDLLongLong>::value) >+{ >+} >+static const TestDOMJITLongLongAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITLongLongAttr; >+ >+ >+constexpr inline TestDOMJITUnsignedLongLongAttrAttributeDOMJIT::TestDOMJITUnsignedLongLongAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnsignedLongLongAttr, DOMJIT::IDLResultTypeFilter<IDLUnsignedLongLong>::value) >+{ >+} >+static const TestDOMJITUnsignedLongLongAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnsignedLongLongAttr; >+ >+ >+constexpr inline TestDOMJITFloatAttrAttributeDOMJIT::TestDOMJITFloatAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITFloatAttr, DOMJIT::IDLResultTypeFilter<IDLFloat>::value) >+{ >+} >+static const TestDOMJITFloatAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITFloatAttr; >+ >+ >+constexpr inline TestDOMJITUnrestrictedFloatAttrAttributeDOMJIT::TestDOMJITUnrestrictedFloatAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnrestrictedFloatAttr, DOMJIT::IDLResultTypeFilter<IDLUnrestrictedFloat>::value) >+{ >+} >+static const TestDOMJITUnrestrictedFloatAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnrestrictedFloatAttr; >+ >+ >+constexpr inline TestDOMJITDoubleAttrAttributeDOMJIT::TestDOMJITDoubleAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITDoubleAttr, DOMJIT::IDLResultTypeFilter<IDLDouble>::value) >+{ >+} >+static const TestDOMJITDoubleAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITDoubleAttr; >+ >+ >+constexpr inline TestDOMJITUnrestrictedDoubleAttrAttributeDOMJIT::TestDOMJITUnrestrictedDoubleAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnrestrictedDoubleAttr, DOMJIT::IDLResultTypeFilter<IDLUnrestrictedDouble>::value) >+{ >+} >+static const TestDOMJITUnrestrictedDoubleAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnrestrictedDoubleAttr; >+ >+ >+constexpr inline TestDOMJITDomStringAttrAttributeDOMJIT::TestDOMJITDomStringAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITDomStringAttr, DOMJIT::IDLResultTypeFilter<IDLDOMString>::value) >+{ >+} >+static const TestDOMJITDomStringAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITDomStringAttr; >+ >+ >+constexpr inline TestDOMJITByteStringAttrAttributeDOMJIT::TestDOMJITByteStringAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITByteStringAttr, DOMJIT::IDLResultTypeFilter<IDLByteString>::value) >+{ >+} >+static const TestDOMJITByteStringAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITByteStringAttr; >+ >+ >+constexpr inline TestDOMJITUsvStringAttrAttributeDOMJIT::TestDOMJITUsvStringAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUsvStringAttr, DOMJIT::IDLResultTypeFilter<IDLUSVString>::value) >+{ >+} >+static const TestDOMJITUsvStringAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUsvStringAttr; >+ >+ >+constexpr inline TestDOMJITNodeAttrAttributeDOMJIT::TestDOMJITNodeAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITNodeAttr, DOMJIT::IDLResultTypeFilter<IDLInterface<Node>>::value) >+{ >+} >+static const TestDOMJITNodeAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITNodeAttr; >+ >+ >+constexpr inline TestDOMJITBooleanNullableAttrAttributeDOMJIT::TestDOMJITBooleanNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITBooleanNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLBoolean>>::value) >+{ >+} >+static const TestDOMJITBooleanNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITBooleanNullableAttr; >+ >+ >+constexpr inline TestDOMJITByteNullableAttrAttributeDOMJIT::TestDOMJITByteNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITByteNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLByte>>::value) >+{ >+} >+static const TestDOMJITByteNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITByteNullableAttr; >+ >+ >+constexpr inline TestDOMJITOctetNullableAttrAttributeDOMJIT::TestDOMJITOctetNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITOctetNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLOctet>>::value) >+{ >+} >+static const TestDOMJITOctetNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITOctetNullableAttr; >+ >+ >+constexpr inline TestDOMJITShortNullableAttrAttributeDOMJIT::TestDOMJITShortNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITShortNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLShort>>::value) >+{ >+} >+static const TestDOMJITShortNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITShortNullableAttr; >+ >+ >+constexpr inline TestDOMJITUnsignedShortNullableAttrAttributeDOMJIT::TestDOMJITUnsignedShortNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnsignedShortNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedShort>>::value) >+{ >+} >+static const TestDOMJITUnsignedShortNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnsignedShortNullableAttr; >+ >+ >+constexpr inline TestDOMJITLongNullableAttrAttributeDOMJIT::TestDOMJITLongNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITLongNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLLong>>::value) >+{ >+} >+static const TestDOMJITLongNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITLongNullableAttr; >+ >+ >+constexpr inline TestDOMJITUnsignedLongNullableAttrAttributeDOMJIT::TestDOMJITUnsignedLongNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnsignedLongNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedLong>>::value) >+{ >+} >+static const TestDOMJITUnsignedLongNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnsignedLongNullableAttr; >+ >+ >+constexpr inline TestDOMJITLongLongNullableAttrAttributeDOMJIT::TestDOMJITLongLongNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITLongLongNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLLongLong>>::value) >+{ >+} >+static const TestDOMJITLongLongNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITLongLongNullableAttr; >+ >+ >+constexpr inline TestDOMJITUnsignedLongLongNullableAttrAttributeDOMJIT::TestDOMJITUnsignedLongLongNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnsignedLongLongNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedLongLong>>::value) >+{ >+} >+static const TestDOMJITUnsignedLongLongNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnsignedLongLongNullableAttr; >+ >+ >+constexpr inline TestDOMJITFloatNullableAttrAttributeDOMJIT::TestDOMJITFloatNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITFloatNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLFloat>>::value) >+{ >+} >+static const TestDOMJITFloatNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITFloatNullableAttr; >+ >+ >+constexpr inline TestDOMJITUnrestrictedFloatNullableAttrAttributeDOMJIT::TestDOMJITUnrestrictedFloatNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnrestrictedFloatNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnrestrictedFloat>>::value) >+{ >+} >+static const TestDOMJITUnrestrictedFloatNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnrestrictedFloatNullableAttr; >+ >+ >+constexpr inline TestDOMJITDoubleNullableAttrAttributeDOMJIT::TestDOMJITDoubleNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITDoubleNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLDouble>>::value) >+{ >+} >+static const TestDOMJITDoubleNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITDoubleNullableAttr; >+ >+ >+constexpr inline TestDOMJITUnrestrictedDoubleNullableAttrAttributeDOMJIT::TestDOMJITUnrestrictedDoubleNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUnrestrictedDoubleNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnrestrictedDouble>>::value) >+{ >+} >+static const TestDOMJITUnrestrictedDoubleNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUnrestrictedDoubleNullableAttr; >+ >+ >+constexpr inline TestDOMJITDomStringNullableAttrAttributeDOMJIT::TestDOMJITDomStringNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITDomStringNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLDOMString>>::value) >+{ >+} >+static const TestDOMJITDomStringNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITDomStringNullableAttr; >+ >+ >+constexpr inline TestDOMJITByteStringNullableAttrAttributeDOMJIT::TestDOMJITByteStringNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITByteStringNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLByteString>>::value) >+{ >+} >+static const TestDOMJITByteStringNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITByteStringNullableAttr; >+ >+ >+constexpr inline TestDOMJITUsvStringNullableAttrAttributeDOMJIT::TestDOMJITUsvStringNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITUsvStringNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUSVString>>::value) >+{ >+} >+static const TestDOMJITUsvStringNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITUsvStringNullableAttr; >+ >+ >+constexpr inline TestDOMJITNodeNullableAttrAttributeDOMJIT::TestDOMJITNodeNullableAttrAttributeDOMJIT() >+ : TestDOMJITInterfaceDOMJIT(jsTestDOMJITNodeNullableAttr, DOMJIT::IDLResultTypeFilter<IDLNullable<IDLInterface<Node>>>::value) >+{ >+} >+static const TestDOMJITNodeNullableAttrAttributeDOMJIT DOMJITAttributeForTestDOMJITNodeNullableAttr; >+ >+ > class JSTestDOMJITPrototype : public JSC::JSNonFinalObject { > public: > using Base = JSC::JSNonFinalObject; >@@ -172,41 +417,41 @@ template<> const ClassInfo JSTestDOMJITConstructor::s_info = { "TestDOMJIT", &Ba > static const HashTableValue JSTestDOMJITPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestDOMJITConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestDOMJITConstructor) } }, >- { "anyAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITAnyAttr), (intptr_t) (0) } }, >- { "booleanAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITBooleanAttr), (intptr_t) (0) } }, >- { "byteAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITByteAttr), (intptr_t) (0) } }, >- { "octetAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITOctetAttr), (intptr_t) (0) } }, >- { "shortAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITShortAttr), (intptr_t) (0) } }, >- { "unsignedShortAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnsignedShortAttr), (intptr_t) (0) } }, >- { "longAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITLongAttr), (intptr_t) (0) } }, >- { "unsignedLongAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnsignedLongAttr), (intptr_t) (0) } }, >- { "longLongAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITLongLongAttr), (intptr_t) (0) } }, >- { "unsignedLongLongAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnsignedLongLongAttr), (intptr_t) (0) } }, >- { "floatAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITFloatAttr), (intptr_t) (0) } }, >- { "unrestrictedFloatAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnrestrictedFloatAttr), (intptr_t) (0) } }, >- { "doubleAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITDoubleAttr), (intptr_t) (0) } }, >- { "unrestrictedDoubleAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnrestrictedDoubleAttr), (intptr_t) (0) } }, >- { "domStringAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITDomStringAttr), (intptr_t) (0) } }, >- { "byteStringAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITByteStringAttr), (intptr_t) (0) } }, >- { "usvStringAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUsvStringAttr), (intptr_t) (0) } }, >- { "nodeAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITNodeAttr), (intptr_t) (0) } }, >- { "booleanNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITBooleanNullableAttr), (intptr_t) (0) } }, >- { "byteNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITByteNullableAttr), (intptr_t) (0) } }, >- { "octetNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITOctetNullableAttr), (intptr_t) (0) } }, >- { "shortNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITShortNullableAttr), (intptr_t) (0) } }, >- { "unsignedShortNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnsignedShortNullableAttr), (intptr_t) (0) } }, >- { "longNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITLongNullableAttr), (intptr_t) (0) } }, >- { "unsignedLongNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnsignedLongNullableAttr), (intptr_t) (0) } }, >- { "longLongNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITLongLongNullableAttr), (intptr_t) (0) } }, >- { "unsignedLongLongNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnsignedLongLongNullableAttr), (intptr_t) (0) } }, >- { "floatNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITFloatNullableAttr), (intptr_t) (0) } }, >- { "unrestrictedFloatNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnrestrictedFloatNullableAttr), (intptr_t) (0) } }, >- { "doubleNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITDoubleNullableAttr), (intptr_t) (0) } }, >- { "unrestrictedDoubleNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUnrestrictedDoubleNullableAttr), (intptr_t) (0) } }, >- { "domStringNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITDomStringNullableAttr), (intptr_t) (0) } }, >- { "byteStringNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITByteStringNullableAttr), (intptr_t) (0) } }, >- { "usvStringNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITUsvStringNullableAttr), (intptr_t) (0) } }, >- { "nodeNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<DOMJITGetterSetterGenerator>(domJITGetterSetterForTestDOMJITNodeNullableAttr), (intptr_t) (0) } }, >+ { "anyAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITAnyAttr), (intptr_t) (0) } }, >+ { "booleanAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITBooleanAttr), (intptr_t) (0) } }, >+ { "byteAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITByteAttr), (intptr_t) (0) } }, >+ { "octetAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITOctetAttr), (intptr_t) (0) } }, >+ { "shortAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITShortAttr), (intptr_t) (0) } }, >+ { "unsignedShortAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedShortAttr), (intptr_t) (0) } }, >+ { "longAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITLongAttr), (intptr_t) (0) } }, >+ { "unsignedLongAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedLongAttr), (intptr_t) (0) } }, >+ { "longLongAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITLongLongAttr), (intptr_t) (0) } }, >+ { "unsignedLongLongAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedLongLongAttr), (intptr_t) (0) } }, >+ { "floatAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITFloatAttr), (intptr_t) (0) } }, >+ { "unrestrictedFloatAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnrestrictedFloatAttr), (intptr_t) (0) } }, >+ { "doubleAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITDoubleAttr), (intptr_t) (0) } }, >+ { "unrestrictedDoubleAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnrestrictedDoubleAttr), (intptr_t) (0) } }, >+ { "domStringAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITDomStringAttr), (intptr_t) (0) } }, >+ { "byteStringAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITByteStringAttr), (intptr_t) (0) } }, >+ { "usvStringAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUsvStringAttr), (intptr_t) (0) } }, >+ { "nodeAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITNodeAttr), (intptr_t) (0) } }, >+ { "booleanNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITBooleanNullableAttr), (intptr_t) (0) } }, >+ { "byteNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITByteNullableAttr), (intptr_t) (0) } }, >+ { "octetNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITOctetNullableAttr), (intptr_t) (0) } }, >+ { "shortNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITShortNullableAttr), (intptr_t) (0) } }, >+ { "unsignedShortNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedShortNullableAttr), (intptr_t) (0) } }, >+ { "longNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITLongNullableAttr), (intptr_t) (0) } }, >+ { "unsignedLongNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedLongNullableAttr), (intptr_t) (0) } }, >+ { "longLongNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITLongLongNullableAttr), (intptr_t) (0) } }, >+ { "unsignedLongLongNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnsignedLongLongNullableAttr), (intptr_t) (0) } }, >+ { "floatNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITFloatNullableAttr), (intptr_t) (0) } }, >+ { "unrestrictedFloatNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnrestrictedFloatNullableAttr), (intptr_t) (0) } }, >+ { "doubleNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITDoubleNullableAttr), (intptr_t) (0) } }, >+ { "unrestrictedDoubleNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUnrestrictedDoubleNullableAttr), (intptr_t) (0) } }, >+ { "domStringNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITDomStringNullableAttr), (intptr_t) (0) } }, >+ { "byteStringNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITByteStringNullableAttr), (intptr_t) (0) } }, >+ { "usvStringNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITUsvStringNullableAttr), (intptr_t) (0) } }, >+ { "nodeNullableAttr", ReadOnly | CustomAccessor | DOMJITAttribute, NoIntrinsic, { (intptr_t)static_cast<const JSC::DOMJIT::GetterSetter*>(&DOMJITAttributeForTestDOMJITNodeNullableAttr), (intptr_t) (0) } }, > { "getAttribute", JSC::Function | DOMJITFunction, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestDOMJITPrototypeFunctionGetAttribute), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITGetAttribute) } }, > { "item", JSC::Function | DOMJITFunction, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestDOMJITPrototypeFunctionItem), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITItem) } }, > { "hasAttribute", JSC::Function | DOMJITFunction, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestDOMJITPrototypeFunctionHasAttribute), (intptr_t) static_cast<const JSC::DOMJIT::Signature*>(&DOMJITSignatureForTestDOMJITHasAttribute) } }, >@@ -219,7 +464,7 @@ const ClassInfo JSTestDOMJITPrototype::s_info = { "TestDOMJITPrototype", &Base:: > void JSTestDOMJITPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestDOMJITPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestDOMJIT::info(), JSTestDOMJITPrototypeTableValues, *this); > } > > const ClassInfo JSTestDOMJIT::s_info = { "TestDOMJIT", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestDOMJIT) }; >@@ -272,17 +517,6 @@ static inline JSValue jsTestDOMJITAnyAttrGetter(ExecState& state, JSTestDOMJIT& > return result; > } > >-TestDOMJITAnyAttrDOMJIT::TestDOMJITAnyAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITAnyAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLAny>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITAnyAttr() >-{ >- static NeverDestroyed<TestDOMJITAnyAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITBooleanAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITBooleanAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -299,17 +533,6 @@ static inline JSValue jsTestDOMJITBooleanAttrGetter(ExecState& state, JSTestDOMJ > return result; > } > >-TestDOMJITBooleanAttrDOMJIT::TestDOMJITBooleanAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITBooleanAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLBoolean>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITBooleanAttr() >-{ >- static NeverDestroyed<TestDOMJITBooleanAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITByteAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITByteAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -326,17 +549,6 @@ static inline JSValue jsTestDOMJITByteAttrGetter(ExecState& state, JSTestDOMJIT& > return result; > } > >-TestDOMJITByteAttrDOMJIT::TestDOMJITByteAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITByteAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLByte>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITByteAttr() >-{ >- static NeverDestroyed<TestDOMJITByteAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITOctetAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITOctetAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -353,17 +565,6 @@ static inline JSValue jsTestDOMJITOctetAttrGetter(ExecState& state, JSTestDOMJIT > return result; > } > >-TestDOMJITOctetAttrDOMJIT::TestDOMJITOctetAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITOctetAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLOctet>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITOctetAttr() >-{ >- static NeverDestroyed<TestDOMJITOctetAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITShortAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -380,17 +581,6 @@ static inline JSValue jsTestDOMJITShortAttrGetter(ExecState& state, JSTestDOMJIT > return result; > } > >-TestDOMJITShortAttrDOMJIT::TestDOMJITShortAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITShortAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLShort>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITShortAttr() >-{ >- static NeverDestroyed<TestDOMJITShortAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnsignedShortAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnsignedShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -407,17 +597,6 @@ static inline JSValue jsTestDOMJITUnsignedShortAttrGetter(ExecState& state, JSTe > return result; > } > >-TestDOMJITUnsignedShortAttrDOMJIT::TestDOMJITUnsignedShortAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnsignedShortAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLUnsignedShort>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedShortAttr() >-{ >- static NeverDestroyed<TestDOMJITUnsignedShortAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITLongAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -434,17 +613,6 @@ static inline JSValue jsTestDOMJITLongAttrGetter(ExecState& state, JSTestDOMJIT& > return result; > } > >-TestDOMJITLongAttrDOMJIT::TestDOMJITLongAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITLongAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLLong>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITLongAttr() >-{ >- static NeverDestroyed<TestDOMJITLongAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnsignedLongAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnsignedLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -461,17 +629,6 @@ static inline JSValue jsTestDOMJITUnsignedLongAttrGetter(ExecState& state, JSTes > return result; > } > >-TestDOMJITUnsignedLongAttrDOMJIT::TestDOMJITUnsignedLongAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnsignedLongAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLUnsignedLong>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedLongAttr() >-{ >- static NeverDestroyed<TestDOMJITUnsignedLongAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITLongLongAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -488,17 +645,6 @@ static inline JSValue jsTestDOMJITLongLongAttrGetter(ExecState& state, JSTestDOM > return result; > } > >-TestDOMJITLongLongAttrDOMJIT::TestDOMJITLongLongAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITLongLongAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLLongLong>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITLongLongAttr() >-{ >- static NeverDestroyed<TestDOMJITLongLongAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnsignedLongLongAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -515,17 +661,6 @@ static inline JSValue jsTestDOMJITUnsignedLongLongAttrGetter(ExecState& state, J > return result; > } > >-TestDOMJITUnsignedLongLongAttrDOMJIT::TestDOMJITUnsignedLongLongAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnsignedLongLongAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLUnsignedLongLong>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedLongLongAttr() >-{ >- static NeverDestroyed<TestDOMJITUnsignedLongLongAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITFloatAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITFloatAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -542,17 +677,6 @@ static inline JSValue jsTestDOMJITFloatAttrGetter(ExecState& state, JSTestDOMJIT > return result; > } > >-TestDOMJITFloatAttrDOMJIT::TestDOMJITFloatAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITFloatAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLFloat>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITFloatAttr() >-{ >- static NeverDestroyed<TestDOMJITFloatAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnrestrictedFloatAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnrestrictedFloatAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -569,17 +693,6 @@ static inline JSValue jsTestDOMJITUnrestrictedFloatAttrGetter(ExecState& state, > return result; > } > >-TestDOMJITUnrestrictedFloatAttrDOMJIT::TestDOMJITUnrestrictedFloatAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnrestrictedFloatAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLUnrestrictedFloat>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnrestrictedFloatAttr() >-{ >- static NeverDestroyed<TestDOMJITUnrestrictedFloatAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITDoubleAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITDoubleAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -596,17 +709,6 @@ static inline JSValue jsTestDOMJITDoubleAttrGetter(ExecState& state, JSTestDOMJI > return result; > } > >-TestDOMJITDoubleAttrDOMJIT::TestDOMJITDoubleAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITDoubleAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLDouble>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITDoubleAttr() >-{ >- static NeverDestroyed<TestDOMJITDoubleAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnrestrictedDoubleAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnrestrictedDoubleAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -623,17 +725,6 @@ static inline JSValue jsTestDOMJITUnrestrictedDoubleAttrGetter(ExecState& state, > return result; > } > >-TestDOMJITUnrestrictedDoubleAttrDOMJIT::TestDOMJITUnrestrictedDoubleAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnrestrictedDoubleAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLUnrestrictedDouble>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnrestrictedDoubleAttr() >-{ >- static NeverDestroyed<TestDOMJITUnrestrictedDoubleAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITDomStringAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITDomStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -650,17 +741,6 @@ static inline JSValue jsTestDOMJITDomStringAttrGetter(ExecState& state, JSTestDO > return result; > } > >-TestDOMJITDomStringAttrDOMJIT::TestDOMJITDomStringAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITDomStringAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLDOMString>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITDomStringAttr() >-{ >- static NeverDestroyed<TestDOMJITDomStringAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITByteStringAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITByteStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -677,17 +757,6 @@ static inline JSValue jsTestDOMJITByteStringAttrGetter(ExecState& state, JSTestD > return result; > } > >-TestDOMJITByteStringAttrDOMJIT::TestDOMJITByteStringAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITByteStringAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLByteString>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITByteStringAttr() >-{ >- static NeverDestroyed<TestDOMJITByteStringAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUsvStringAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUsvStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -704,17 +773,6 @@ static inline JSValue jsTestDOMJITUsvStringAttrGetter(ExecState& state, JSTestDO > return result; > } > >-TestDOMJITUsvStringAttrDOMJIT::TestDOMJITUsvStringAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUsvStringAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLUSVString>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUsvStringAttr() >-{ >- static NeverDestroyed<TestDOMJITUsvStringAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITNodeAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITNodeAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -731,17 +789,6 @@ static inline JSValue jsTestDOMJITNodeAttrGetter(ExecState& state, JSTestDOMJIT& > return result; > } > >-TestDOMJITNodeAttrDOMJIT::TestDOMJITNodeAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITNodeAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLInterface<Node>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITNodeAttr() >-{ >- static NeverDestroyed<TestDOMJITNodeAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITBooleanNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITBooleanNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -758,17 +805,6 @@ static inline JSValue jsTestDOMJITBooleanNullableAttrGetter(ExecState& state, JS > return result; > } > >-TestDOMJITBooleanNullableAttrDOMJIT::TestDOMJITBooleanNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITBooleanNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLBoolean>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITBooleanNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITBooleanNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITByteNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITByteNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -785,17 +821,6 @@ static inline JSValue jsTestDOMJITByteNullableAttrGetter(ExecState& state, JSTes > return result; > } > >-TestDOMJITByteNullableAttrDOMJIT::TestDOMJITByteNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITByteNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLByte>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITByteNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITByteNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITOctetNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITOctetNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -812,17 +837,6 @@ static inline JSValue jsTestDOMJITOctetNullableAttrGetter(ExecState& state, JSTe > return result; > } > >-TestDOMJITOctetNullableAttrDOMJIT::TestDOMJITOctetNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITOctetNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLOctet>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITOctetNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITOctetNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITShortNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITShortNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -839,17 +853,6 @@ static inline JSValue jsTestDOMJITShortNullableAttrGetter(ExecState& state, JSTe > return result; > } > >-TestDOMJITShortNullableAttrDOMJIT::TestDOMJITShortNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITShortNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLShort>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITShortNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITShortNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnsignedShortNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnsignedShortNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -866,17 +869,6 @@ static inline JSValue jsTestDOMJITUnsignedShortNullableAttrGetter(ExecState& sta > return result; > } > >-TestDOMJITUnsignedShortNullableAttrDOMJIT::TestDOMJITUnsignedShortNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnsignedShortNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedShort>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedShortNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITUnsignedShortNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITLongNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITLongNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -893,17 +885,6 @@ static inline JSValue jsTestDOMJITLongNullableAttrGetter(ExecState& state, JSTes > return result; > } > >-TestDOMJITLongNullableAttrDOMJIT::TestDOMJITLongNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITLongNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLLong>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITLongNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITLongNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnsignedLongNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnsignedLongNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -920,17 +901,6 @@ static inline JSValue jsTestDOMJITUnsignedLongNullableAttrGetter(ExecState& stat > return result; > } > >-TestDOMJITUnsignedLongNullableAttrDOMJIT::TestDOMJITUnsignedLongNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnsignedLongNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedLong>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedLongNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITUnsignedLongNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITLongLongNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITLongLongNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -947,17 +917,6 @@ static inline JSValue jsTestDOMJITLongLongNullableAttrGetter(ExecState& state, J > return result; > } > >-TestDOMJITLongLongNullableAttrDOMJIT::TestDOMJITLongLongNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITLongLongNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLLongLong>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITLongLongNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITLongLongNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnsignedLongLongNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnsignedLongLongNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -974,17 +933,6 @@ static inline JSValue jsTestDOMJITUnsignedLongLongNullableAttrGetter(ExecState& > return result; > } > >-TestDOMJITUnsignedLongLongNullableAttrDOMJIT::TestDOMJITUnsignedLongLongNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnsignedLongLongNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnsignedLongLong>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedLongLongNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITUnsignedLongLongNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITFloatNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITFloatNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -1001,17 +949,6 @@ static inline JSValue jsTestDOMJITFloatNullableAttrGetter(ExecState& state, JSTe > return result; > } > >-TestDOMJITFloatNullableAttrDOMJIT::TestDOMJITFloatNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITFloatNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLFloat>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITFloatNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITFloatNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnrestrictedFloatNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnrestrictedFloatNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -1028,17 +965,6 @@ static inline JSValue jsTestDOMJITUnrestrictedFloatNullableAttrGetter(ExecState& > return result; > } > >-TestDOMJITUnrestrictedFloatNullableAttrDOMJIT::TestDOMJITUnrestrictedFloatNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnrestrictedFloatNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnrestrictedFloat>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnrestrictedFloatNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITUnrestrictedFloatNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITDoubleNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITDoubleNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -1055,17 +981,6 @@ static inline JSValue jsTestDOMJITDoubleNullableAttrGetter(ExecState& state, JST > return result; > } > >-TestDOMJITDoubleNullableAttrDOMJIT::TestDOMJITDoubleNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITDoubleNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLDouble>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITDoubleNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITDoubleNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUnrestrictedDoubleNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUnrestrictedDoubleNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -1082,17 +997,6 @@ static inline JSValue jsTestDOMJITUnrestrictedDoubleNullableAttrGetter(ExecState > return result; > } > >-TestDOMJITUnrestrictedDoubleNullableAttrDOMJIT::TestDOMJITUnrestrictedDoubleNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUnrestrictedDoubleNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUnrestrictedDouble>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnrestrictedDoubleNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITUnrestrictedDoubleNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITDomStringNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITDomStringNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -1109,17 +1013,6 @@ static inline JSValue jsTestDOMJITDomStringNullableAttrGetter(ExecState& state, > return result; > } > >-TestDOMJITDomStringNullableAttrDOMJIT::TestDOMJITDomStringNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITDomStringNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLDOMString>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITDomStringNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITDomStringNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITByteStringNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITByteStringNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -1136,17 +1029,6 @@ static inline JSValue jsTestDOMJITByteStringNullableAttrGetter(ExecState& state, > return result; > } > >-TestDOMJITByteStringNullableAttrDOMJIT::TestDOMJITByteStringNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITByteStringNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLByteString>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITByteStringNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITByteStringNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITUsvStringNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITUsvStringNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -1163,17 +1045,6 @@ static inline JSValue jsTestDOMJITUsvStringNullableAttrGetter(ExecState& state, > return result; > } > >-TestDOMJITUsvStringNullableAttrDOMJIT::TestDOMJITUsvStringNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITUsvStringNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLUSVString>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUsvStringNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITUsvStringNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > static inline JSValue jsTestDOMJITNodeNullableAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope); > > EncodedJSValue jsTestDOMJITNodeNullableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) >@@ -1190,17 +1061,6 @@ static inline JSValue jsTestDOMJITNodeNullableAttrGetter(ExecState& state, JSTes > return result; > } > >-TestDOMJITNodeNullableAttrDOMJIT::TestDOMJITNodeNullableAttrDOMJIT() >- : JSC::DOMJIT::GetterSetter(jsTestDOMJITNodeNullableAttr, nullptr, JSTestDOMJIT::info(), DOMJIT::IDLResultTypeFilter<IDLNullable<IDLInterface<Node>>>::value) >-{ >-} >- >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITNodeNullableAttr() >-{ >- static NeverDestroyed<TestDOMJITNodeNullableAttrDOMJIT> compiler; >- return &compiler.get(); >-} >- > EncodedJSValue jsTestDOMJITConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName) > { > VM& vm = state->vm(); >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h b/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h >index 8abc31f340696017e67a0e6c5b29ecbdf5dddcb7..eb0e4c8ba9faaff183e45523c925b7f82ecd2a55 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h >@@ -61,355 +61,294 @@ class JSTestDOMJIT : public JSNode { > }; > > >-// DOMJIT emitters for attributes >+// Accelerated DOM Attributes > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITAnyAttr(void); >-class TestDOMJITAnyAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITInterfaceDOMJIT : public JSC::DOMJIT::GetterSetter { > public: >- TestDOMJITAnyAttrDOMJIT(); >+ template<typename... Args> >+ inline constexpr TestDOMJITInterfaceDOMJIT(Args&&... args) >+ : JSC::DOMJIT::GetterSetter(args...) >+ { >+ } >+}; >+ >+class TestDOMJITAnyAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { >+public: >+ constexpr TestDOMJITAnyAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITBooleanAttr(void); >-class TestDOMJITBooleanAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITBooleanAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITBooleanAttrDOMJIT(); >+ constexpr TestDOMJITBooleanAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITByteAttr(void); >-class TestDOMJITByteAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITByteAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITByteAttrDOMJIT(); >+ constexpr TestDOMJITByteAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITOctetAttr(void); >-class TestDOMJITOctetAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITOctetAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITOctetAttrDOMJIT(); >+ constexpr TestDOMJITOctetAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITShortAttr(void); >-class TestDOMJITShortAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITShortAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITShortAttrDOMJIT(); >+ constexpr TestDOMJITShortAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedShortAttr(void); >-class TestDOMJITUnsignedShortAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnsignedShortAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnsignedShortAttrDOMJIT(); >+ constexpr TestDOMJITUnsignedShortAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITLongAttr(void); >-class TestDOMJITLongAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITLongAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITLongAttrDOMJIT(); >+ constexpr TestDOMJITLongAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedLongAttr(void); >-class TestDOMJITUnsignedLongAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnsignedLongAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnsignedLongAttrDOMJIT(); >+ constexpr TestDOMJITUnsignedLongAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITLongLongAttr(void); >-class TestDOMJITLongLongAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITLongLongAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITLongLongAttrDOMJIT(); >+ constexpr TestDOMJITLongLongAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedLongLongAttr(void); >-class TestDOMJITUnsignedLongLongAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnsignedLongLongAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnsignedLongLongAttrDOMJIT(); >+ constexpr TestDOMJITUnsignedLongLongAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITFloatAttr(void); >-class TestDOMJITFloatAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITFloatAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITFloatAttrDOMJIT(); >+ constexpr TestDOMJITFloatAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnrestrictedFloatAttr(void); >-class TestDOMJITUnrestrictedFloatAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnrestrictedFloatAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnrestrictedFloatAttrDOMJIT(); >+ constexpr TestDOMJITUnrestrictedFloatAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITDoubleAttr(void); >-class TestDOMJITDoubleAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITDoubleAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITDoubleAttrDOMJIT(); >+ constexpr TestDOMJITDoubleAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnrestrictedDoubleAttr(void); >-class TestDOMJITUnrestrictedDoubleAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnrestrictedDoubleAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnrestrictedDoubleAttrDOMJIT(); >+ constexpr TestDOMJITUnrestrictedDoubleAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITDomStringAttr(void); >-class TestDOMJITDomStringAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITDomStringAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITDomStringAttrDOMJIT(); >+ constexpr TestDOMJITDomStringAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITByteStringAttr(void); >-class TestDOMJITByteStringAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITByteStringAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITByteStringAttrDOMJIT(); >+ constexpr TestDOMJITByteStringAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUsvStringAttr(void); >-class TestDOMJITUsvStringAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUsvStringAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUsvStringAttrDOMJIT(); >+ constexpr TestDOMJITUsvStringAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITNodeAttr(void); >-class TestDOMJITNodeAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITNodeAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITNodeAttrDOMJIT(); >+ constexpr TestDOMJITNodeAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITBooleanNullableAttr(void); >-class TestDOMJITBooleanNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITBooleanNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITBooleanNullableAttrDOMJIT(); >+ constexpr TestDOMJITBooleanNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITByteNullableAttr(void); >-class TestDOMJITByteNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITByteNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITByteNullableAttrDOMJIT(); >+ constexpr TestDOMJITByteNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITOctetNullableAttr(void); >-class TestDOMJITOctetNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITOctetNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITOctetNullableAttrDOMJIT(); >+ constexpr TestDOMJITOctetNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITShortNullableAttr(void); >-class TestDOMJITShortNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITShortNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITShortNullableAttrDOMJIT(); >+ constexpr TestDOMJITShortNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedShortNullableAttr(void); >-class TestDOMJITUnsignedShortNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnsignedShortNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnsignedShortNullableAttrDOMJIT(); >+ constexpr TestDOMJITUnsignedShortNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITLongNullableAttr(void); >-class TestDOMJITLongNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITLongNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITLongNullableAttrDOMJIT(); >+ constexpr TestDOMJITLongNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedLongNullableAttr(void); >-class TestDOMJITUnsignedLongNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnsignedLongNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnsignedLongNullableAttrDOMJIT(); >+ constexpr TestDOMJITUnsignedLongNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITLongLongNullableAttr(void); >-class TestDOMJITLongLongNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITLongLongNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITLongLongNullableAttrDOMJIT(); >+ constexpr TestDOMJITLongLongNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnsignedLongLongNullableAttr(void); >-class TestDOMJITUnsignedLongLongNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnsignedLongLongNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnsignedLongLongNullableAttrDOMJIT(); >+ constexpr TestDOMJITUnsignedLongLongNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITFloatNullableAttr(void); >-class TestDOMJITFloatNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITFloatNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITFloatNullableAttrDOMJIT(); >+ constexpr TestDOMJITFloatNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnrestrictedFloatNullableAttr(void); >-class TestDOMJITUnrestrictedFloatNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnrestrictedFloatNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnrestrictedFloatNullableAttrDOMJIT(); >+ constexpr TestDOMJITUnrestrictedFloatNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITDoubleNullableAttr(void); >-class TestDOMJITDoubleNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITDoubleNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITDoubleNullableAttrDOMJIT(); >+ constexpr TestDOMJITDoubleNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUnrestrictedDoubleNullableAttr(void); >-class TestDOMJITUnrestrictedDoubleNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUnrestrictedDoubleNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUnrestrictedDoubleNullableAttrDOMJIT(); >+ constexpr TestDOMJITUnrestrictedDoubleNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITDomStringNullableAttr(void); >-class TestDOMJITDomStringNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITDomStringNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITDomStringNullableAttrDOMJIT(); >+ constexpr TestDOMJITDomStringNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITByteStringNullableAttr(void); >-class TestDOMJITByteStringNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITByteStringNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITByteStringNullableAttrDOMJIT(); >+ constexpr TestDOMJITByteStringNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITUsvStringNullableAttr(void); >-class TestDOMJITUsvStringNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITUsvStringNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITUsvStringNullableAttrDOMJIT(); >+ constexpr TestDOMJITUsvStringNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >-JSC::DOMJIT::GetterSetter* domJITGetterSetterForTestDOMJITNodeNullableAttr(void); >-class TestDOMJITNodeNullableAttrDOMJIT : public JSC::DOMJIT::GetterSetter { >+class TestDOMJITNodeNullableAttrAttributeDOMJIT : public TestDOMJITInterfaceDOMJIT { > public: >- TestDOMJITNodeNullableAttrDOMJIT(); >+ constexpr TestDOMJITNodeNullableAttrAttributeDOMJIT(); > #if ENABLE(JIT) >- Ref<JSC::DOMJIT::Patchpoint> checkDOM() override; >- Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() override; >+ RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> callDOMGetter() const final; > #endif > }; > >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp >index 16be099d929780dfcd147b08ba12827d4b17ecfe..09d568362dc4c54459a9097116d41073933704c3 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp >@@ -154,10 +154,10 @@ template<> const ClassInfo JSTestEventConstructorConstructor::s_info = { "TestEv > static const HashTableValue JSTestEventConstructorPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestEventConstructorConstructor) } }, >- { "attr1", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorAttr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "attr2", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorAttr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "attr1", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorAttr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "attr2", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorAttr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > #if ENABLE(SPECIAL_EVENT) >- { "attr3", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorAttr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "attr3", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorAttr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif >@@ -168,7 +168,7 @@ const ClassInfo JSTestEventConstructorPrototype::s_info = { "TestEventConstructo > void JSTestEventConstructorPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestEventConstructorPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestEventConstructor::info(), JSTestEventConstructorPrototypeTableValues, *this); > } > > const ClassInfo JSTestEventConstructor::s_info = { "TestEventConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestEventConstructor) }; >@@ -204,7 +204,7 @@ static inline JSValue jsTestEventConstructorAttr1Getter(ExecState&, JSTestEventC > > EncodedJSValue jsTestEventConstructorAttr1(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestEventConstructor>::attribute<jsTestEventConstructorAttr1Getter>(state, thisValue, "attr1"); >+ return BindingCaller<JSTestEventConstructor>::attribute<jsTestEventConstructorAttr1Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "attr1"); > } > > static inline JSValue jsTestEventConstructorAttr1Getter(ExecState& state, JSTestEventConstructor& thisObject, ThrowScope& throwScope) >@@ -220,7 +220,7 @@ static inline JSValue jsTestEventConstructorAttr2Getter(ExecState&, JSTestEventC > > EncodedJSValue jsTestEventConstructorAttr2(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestEventConstructor>::attribute<jsTestEventConstructorAttr2Getter>(state, thisValue, "attr2"); >+ return BindingCaller<JSTestEventConstructor>::attribute<jsTestEventConstructorAttr2Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "attr2"); > } > > static inline JSValue jsTestEventConstructorAttr2Getter(ExecState& state, JSTestEventConstructor& thisObject, ThrowScope& throwScope) >@@ -237,7 +237,7 @@ static inline JSValue jsTestEventConstructorAttr3Getter(ExecState&, JSTestEventC > > EncodedJSValue jsTestEventConstructorAttr3(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestEventConstructor>::attribute<jsTestEventConstructorAttr3Getter>(state, thisValue, "attr3"); >+ return BindingCaller<JSTestEventConstructor>::attribute<jsTestEventConstructorAttr3Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "attr3"); > } > > static inline JSValue jsTestEventConstructorAttr3Getter(ExecState& state, JSTestEventConstructor& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp >index 98cec169d6f1fbbdcc29b0094e423a57756577e3..245bc344329a2429417d556f0ea1ee21a0d8cebb 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp >@@ -99,7 +99,7 @@ const ClassInfo JSTestEventTargetPrototype::s_info = { "TestEventTargetPrototype > void JSTestEventTargetPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestEventTargetPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestEventTarget::info(), JSTestEventTargetPrototypeTableValues, *this); > } > > const ClassInfo JSTestEventTarget::s_info = { "TestEventTarget", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestEventTarget) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp >index a75fbb4084605a19ab8ebdb820f8349972144c53..fba9400328839633ca26e9b5090c40d8ddebb4e1 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp >@@ -108,7 +108,7 @@ const ClassInfo JSTestExceptionPrototype::s_info = { "TestExceptionPrototype", & > void JSTestExceptionPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestExceptionPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestException::info(), JSTestExceptionPrototypeTableValues, *this); > } > > const ClassInfo JSTestException::s_info = { "TestException", &Base::s_info, &JSTestExceptionTable, CREATE_METHOD_TABLE(JSTestException) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp >index b30091e53bdd913064c28fa2d0d92e72566fd0d2..6d1ba4198eba648915b8d6d7f58ccd7424babb9e 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp >@@ -92,7 +92,7 @@ const ClassInfo JSTestGenerateIsReachablePrototype::s_info = { "TestGenerateIsRe > void JSTestGenerateIsReachablePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestGenerateIsReachablePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestGenerateIsReachable::info(), JSTestGenerateIsReachablePrototypeTableValues, *this); > } > > const ClassInfo JSTestGenerateIsReachable::s_info = { "TestGenerateIsReachable", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestGenerateIsReachable) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp >index 5ae5be89e1cf81bcfa27061e2ec746c625f16358..2bb631d8abefc3c5c596f6fc3ced4bb20c70fd5a 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp >@@ -251,7 +251,7 @@ template<> void JSTestInterfaceConstructor::initializeProperties(VM& vm, JSDOMGl > putDirect(vm, vm.propertyNames->prototype, JSTestInterface::prototype(vm, globalObject), DontDelete | ReadOnly | DontEnum); > putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String(ASCIILiteral("TestInterface"))), ReadOnly | DontEnum); > putDirect(vm, vm.propertyNames->length, jsNumber(1), ReadOnly | DontEnum); >- reifyStaticProperties(vm, JSTestInterfaceConstructorTableValues, *this); >+ reifyStaticProperties(vm, JSTestInterfaceConstructor::info(), JSTestInterfaceConstructorTableValues, *this); > } > > template<> const ClassInfo JSTestInterfaceConstructor::s_info = { "TestInterface", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestInterfaceConstructor) }; >@@ -262,42 +262,42 @@ static const HashTableValue JSTestInterfacePrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceConstructor) } }, > #if ENABLE(Condition22) || ENABLE(Condition23) >- { "implementsStr1", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "implementsStr1", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition22) || ENABLE(Condition23) >- { "implementsStr2", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsStr2) } }, >+ { "implementsStr2", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsStr2) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition22) || ENABLE(Condition23) >- { "implementsStr3", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsStr3) } }, >+ { "implementsStr3", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsStr3) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition22) || ENABLE(Condition23) >- { "implementsNode", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsNode), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsNode) } }, >+ { "implementsNode", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsNode), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsNode) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition11) || ENABLE(Condition12) >- { "supplementalStr1", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "supplementalStr1", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition11) || ENABLE(Condition12) >- { "supplementalStr2", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalStr2) } }, >+ { "supplementalStr2", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalStr2) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition11) || ENABLE(Condition12) >- { "supplementalStr3", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalStr3) } }, >+ { "supplementalStr3", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalStr3) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition11) || ENABLE(Condition12) >- { "supplementalNode", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalNode), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalNode) } }, >+ { "supplementalNode", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalNode), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalNode) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif >@@ -368,7 +368,7 @@ const ClassInfo JSTestInterfacePrototype::s_info = { "TestInterfacePrototype", & > void JSTestInterfacePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestInterfacePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestInterface::info(), JSTestInterfacePrototypeTableValues, *this); > } > > const ClassInfo JSTestInterface::s_info = { "TestInterface", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestInterface) }; >@@ -474,7 +474,7 @@ static inline JSValue jsTestInterfaceImplementsStr1Getter(ExecState&, JSTestInte > > EncodedJSValue jsTestInterfaceImplementsStr1(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceImplementsStr1Getter>(state, thisValue, "implementsStr1"); >+ return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceImplementsStr1Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "implementsStr1"); > } > > static inline JSValue jsTestInterfaceImplementsStr1Getter(ExecState& state, JSTestInterface& thisObject, ThrowScope& throwScope) >@@ -493,7 +493,7 @@ static inline JSValue jsTestInterfaceImplementsStr2Getter(ExecState&, JSTestInte > > EncodedJSValue jsTestInterfaceImplementsStr2(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceImplementsStr2Getter>(state, thisValue, "implementsStr2"); >+ return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceImplementsStr2Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "implementsStr2"); > } > > static inline JSValue jsTestInterfaceImplementsStr2Getter(ExecState& state, JSTestInterface& thisObject, ThrowScope& throwScope) >@@ -512,7 +512,7 @@ static inline JSValue jsTestInterfaceImplementsStr3Getter(ExecState&, JSTestInte > > EncodedJSValue jsTestInterfaceImplementsStr3(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceImplementsStr3Getter>(state, thisValue, "implementsStr3"); >+ return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceImplementsStr3Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "implementsStr3"); > } > > static inline JSValue jsTestInterfaceImplementsStr3Getter(ExecState& state, JSTestInterface& thisObject, ThrowScope& throwScope) >@@ -529,7 +529,7 @@ static inline JSValue jsTestInterfaceImplementsNodeGetter(ExecState&, JSTestInte > > EncodedJSValue jsTestInterfaceImplementsNode(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceImplementsNodeGetter>(state, thisValue, "implementsNode"); >+ return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceImplementsNodeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "implementsNode"); > } > > static inline JSValue jsTestInterfaceImplementsNodeGetter(ExecState& state, JSTestInterface& thisObject, ThrowScope& throwScope) >@@ -584,7 +584,7 @@ static inline JSValue jsTestInterfaceSupplementalStr1Getter(ExecState&, JSTestIn > > EncodedJSValue jsTestInterfaceSupplementalStr1(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceSupplementalStr1Getter>(state, thisValue, "supplementalStr1"); >+ return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceSupplementalStr1Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "supplementalStr1"); > } > > static inline JSValue jsTestInterfaceSupplementalStr1Getter(ExecState& state, JSTestInterface& thisObject, ThrowScope& throwScope) >@@ -603,7 +603,7 @@ static inline JSValue jsTestInterfaceSupplementalStr2Getter(ExecState&, JSTestIn > > EncodedJSValue jsTestInterfaceSupplementalStr2(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceSupplementalStr2Getter>(state, thisValue, "supplementalStr2"); >+ return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceSupplementalStr2Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "supplementalStr2"); > } > > static inline JSValue jsTestInterfaceSupplementalStr2Getter(ExecState& state, JSTestInterface& thisObject, ThrowScope& throwScope) >@@ -622,7 +622,7 @@ static inline JSValue jsTestInterfaceSupplementalStr3Getter(ExecState&, JSTestIn > > EncodedJSValue jsTestInterfaceSupplementalStr3(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceSupplementalStr3Getter>(state, thisValue, "supplementalStr3"); >+ return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceSupplementalStr3Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "supplementalStr3"); > } > > static inline JSValue jsTestInterfaceSupplementalStr3Getter(ExecState& state, JSTestInterface& thisObject, ThrowScope& throwScope) >@@ -639,7 +639,7 @@ static inline JSValue jsTestInterfaceSupplementalNodeGetter(ExecState&, JSTestIn > > EncodedJSValue jsTestInterfaceSupplementalNode(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceSupplementalNodeGetter>(state, thisValue, "supplementalNode"); >+ return BindingCaller<JSTestInterface>::attribute<jsTestInterfaceSupplementalNodeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "supplementalNode"); > } > > static inline JSValue jsTestInterfaceSupplementalNodeGetter(ExecState& state, JSTestInterface& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp >index 796cd7fd96cc683e075b2991b8a4c7b9682fea25..774f1bc5c171308c3e11db8e8498a42b396a1c0c 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp >@@ -87,7 +87,7 @@ template<> const ClassInfo JSTestInterfaceLeadingUnderscoreConstructor::s_info = > static const HashTableValue JSTestInterfaceLeadingUnderscorePrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceLeadingUnderscoreConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceLeadingUnderscoreConstructor) } }, >- { "readonly", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceLeadingUnderscoreReadonly), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "readonly", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceLeadingUnderscoreReadonly), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > }; > > const ClassInfo JSTestInterfaceLeadingUnderscorePrototype::s_info = { "TestInterfaceLeadingUnderscorePrototype", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestInterfaceLeadingUnderscorePrototype) }; >@@ -95,7 +95,7 @@ const ClassInfo JSTestInterfaceLeadingUnderscorePrototype::s_info = { "TestInter > void JSTestInterfaceLeadingUnderscorePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestInterfaceLeadingUnderscorePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestInterfaceLeadingUnderscore::info(), JSTestInterfaceLeadingUnderscorePrototypeTableValues, *this); > } > > const ClassInfo JSTestInterfaceLeadingUnderscore::s_info = { "TestInterfaceLeadingUnderscore", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestInterfaceLeadingUnderscore) }; >@@ -137,7 +137,7 @@ static inline JSValue jsTestInterfaceLeadingUnderscoreReadonlyGetter(ExecState&, > > EncodedJSValue jsTestInterfaceLeadingUnderscoreReadonly(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestInterfaceLeadingUnderscore>::attribute<jsTestInterfaceLeadingUnderscoreReadonlyGetter>(state, thisValue, "readonly"); >+ return BindingCaller<JSTestInterfaceLeadingUnderscore>::attribute<jsTestInterfaceLeadingUnderscoreReadonlyGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "readonly"); > } > > static inline JSValue jsTestInterfaceLeadingUnderscoreReadonlyGetter(ExecState& state, JSTestInterfaceLeadingUnderscore& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp >index a581b43617b15fc10d8521f96b9ff531482d32b7..55a7cbeef71b3cba6152b8fecc3057be5a8e5149 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp >@@ -105,7 +105,7 @@ const ClassInfo JSTestIterablePrototype::s_info = { "TestIterablePrototype", &Ba > void JSTestIterablePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestIterablePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestIterable::info(), JSTestIterablePrototypeTableValues, *this); > putDirect(vm, vm.propertyNames->iteratorSymbol, JSFunction::create(vm, globalObject(), 0, ASCIILiteral("[Symbol.Iterator]"), jsTestIterablePrototypeFunctionSymbolIterator), DontEnum); > } > >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp >index b80ed20dea09e39c97350078339329be081f2753..ef425538c9942805db98ced807ec16beb832fea9 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp >@@ -100,8 +100,8 @@ static const HashTableValue JSTestJSBuiltinConstructorPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestJSBuiltinConstructorConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestJSBuiltinConstructorConstructor) } }, > { "testAttribute", Accessor | Builtin, NoIntrinsic, { (intptr_t)static_cast<BuiltinGenerator>(testJSBuiltinConstructorTestAttributeCodeGenerator), (intptr_t) (setTestJSBuiltinConstructorTestAttributeCodeGenerator) } }, >- { "testAttributeCustom", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestJSBuiltinConstructorTestAttributeCustom), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "testAttributeRWCustom", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestJSBuiltinConstructorTestAttributeRWCustom), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestJSBuiltinConstructorTestAttributeRWCustom) } }, >+ { "testAttributeCustom", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestJSBuiltinConstructorTestAttributeCustom), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "testAttributeRWCustom", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestJSBuiltinConstructorTestAttributeRWCustom), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestJSBuiltinConstructorTestAttributeRWCustom) } }, > { "testFunction", JSC::Builtin, NoIntrinsic, { (intptr_t)static_cast<BuiltinGenerator>(testJSBuiltinConstructorTestFunctionCodeGenerator), (intptr_t) (0) } }, > { "testCustomFunction", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunction), (intptr_t) (0) } }, > }; >@@ -111,7 +111,7 @@ const ClassInfo JSTestJSBuiltinConstructorPrototype::s_info = { "TestJSBuiltinCo > void JSTestJSBuiltinConstructorPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestJSBuiltinConstructorPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestJSBuiltinConstructor::info(), JSTestJSBuiltinConstructorPrototypeTableValues, *this); > } > > const ClassInfo JSTestJSBuiltinConstructor::s_info = { "TestJSBuiltinConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestJSBuiltinConstructor) }; >@@ -156,7 +156,7 @@ static inline JSValue jsTestJSBuiltinConstructorTestAttributeCustomGetter(ExecSt > > EncodedJSValue jsTestJSBuiltinConstructorTestAttributeCustom(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestJSBuiltinConstructor>::attribute<jsTestJSBuiltinConstructorTestAttributeCustomGetter>(state, thisValue, "testAttributeCustom"); >+ return BindingCaller<JSTestJSBuiltinConstructor>::attribute<jsTestJSBuiltinConstructorTestAttributeCustomGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "testAttributeCustom"); > } > > static inline JSValue jsTestJSBuiltinConstructorTestAttributeCustomGetter(ExecState& state, JSTestJSBuiltinConstructor& thisObject, ThrowScope& throwScope) >@@ -170,7 +170,7 @@ static inline JSValue jsTestJSBuiltinConstructorTestAttributeRWCustomGetter(Exec > > EncodedJSValue jsTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestJSBuiltinConstructor>::attribute<jsTestJSBuiltinConstructorTestAttributeRWCustomGetter>(state, thisValue, "testAttributeRWCustom"); >+ return BindingCaller<JSTestJSBuiltinConstructor>::attribute<jsTestJSBuiltinConstructorTestAttributeRWCustomGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "testAttributeRWCustom"); > } > > static inline JSValue jsTestJSBuiltinConstructorTestAttributeRWCustomGetter(ExecState& state, JSTestJSBuiltinConstructor& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp >index 77d510f298c157316d39fdd2d13fe9ed1aad6739..2d147c8466e22c117feb3178c034d8ed73d708c9 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp >@@ -100,7 +100,7 @@ const ClassInfo JSTestMediaQueryListListenerPrototype::s_info = { "TestMediaQuer > void JSTestMediaQueryListListenerPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestMediaQueryListListenerPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestMediaQueryListListener::info(), JSTestMediaQueryListListenerPrototypeTableValues, *this); > } > > const ClassInfo JSTestMediaQueryListListener::s_info = { "TestMediaQueryListListener", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestMediaQueryListListener) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp >index 839b25fc966e88fd555b0cb68347b43273c36954..c6cd38ae35b86f139eb4ba027d2229e7c6c3ceb9 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp >@@ -130,7 +130,7 @@ const ClassInfo JSTestNamedConstructorPrototype::s_info = { "TestNamedConstructo > void JSTestNamedConstructorPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestNamedConstructorPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestNamedConstructor::info(), JSTestNamedConstructorPrototypeTableValues, *this); > } > > const ClassInfo JSTestNamedConstructor::s_info = { "TestNamedConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestNamedConstructor) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp >index 1ef2cfe7082c3d08582c7c1b43842b0c7696741d..9245ac6bfc32d9cb37b6a4ef796aace05a99c5ca 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp >@@ -112,7 +112,7 @@ template<> const ClassInfo JSTestNodeConstructor::s_info = { "TestNode", &Base:: > static const HashTableValue JSTestNodePrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNodeConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNodeConstructor) } }, >- { "name", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNodeName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNodeName) } }, >+ { "name", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNodeName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestNodeName) } }, > { "testWorkerPromise", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestNodePrototypeFunctionTestWorkerPromise), (intptr_t) (0) } }, > { "entries", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestNodePrototypeFunctionEntries), (intptr_t) (0) } }, > { "keys", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestNodePrototypeFunctionKeys), (intptr_t) (0) } }, >@@ -126,7 +126,7 @@ const ClassInfo JSTestNodePrototype::s_info = { "TestNodePrototype", &Base::s_in > void JSTestNodePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestNodePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestNode::info(), JSTestNodePrototypeTableValues, *this); > if (!RuntimeEnabledFeatures::sharedFeatures().domIteratorEnabled()) { > Identifier propertyName = Identifier::fromString(&vm, reinterpret_cast<const LChar*>("entries"), strlen("entries")); > VM::DeletePropertyModeScope scope(vm, VM::DeletePropertyMode::IgnoreConfigurable); >@@ -188,7 +188,7 @@ static inline JSValue jsTestNodeNameGetter(ExecState&, JSTestNode&, ThrowScope& > > EncodedJSValue jsTestNodeName(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestNode>::attribute<jsTestNodeNameGetter>(state, thisValue, "name"); >+ return BindingCaller<JSTestNode>::attribute<jsTestNodeNameGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "name"); > } > > static inline JSValue jsTestNodeNameGetter(ExecState& state, JSTestNode& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >index 3f92dc3f28bb33bc7ccdd93401a814a9b2e2dbe6..7eb6de1a574d0e2d5823605c9bff638ab37175a7 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >@@ -1627,7 +1627,7 @@ template<> void JSTestObjConstructor::initializeProperties(VM& vm, JSDOMGlobalOb > putDirect(vm, vm.propertyNames->prototype, JSTestObj::prototype(vm, globalObject), DontDelete | ReadOnly | DontEnum); > putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String(ASCIILiteral("TestObject"))), ReadOnly | DontEnum); > putDirect(vm, vm.propertyNames->length, jsNumber(2), ReadOnly | DontEnum); >- reifyStaticProperties(vm, JSTestObjConstructorTableValues, *this); >+ reifyStaticProperties(vm, JSTestObjConstructor::info(), JSTestObjConstructorTableValues, *this); > } > > template<> const ClassInfo JSTestObjConstructor::s_info = { "TestObject", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestObjConstructor) }; >@@ -1637,66 +1637,66 @@ template<> const ClassInfo JSTestObjConstructor::s_info = { "TestObject", &Base: > static const HashTableValue JSTestObjPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConstructor) } }, >- { "readOnlyLongAttr", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "readOnlyStringAttr", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "readOnlyTestObjAttr", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyTestObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "enumAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjEnumAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjEnumAttr) } }, >- { "byteAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjByteAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjByteAttr) } }, >- { "octetAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjOctetAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjOctetAttr) } }, >- { "shortAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjShortAttr) } }, >- { "clampedShortAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjClampedShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjClampedShortAttr) } }, >- { "enforceRangeShortAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjEnforceRangeShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjEnforceRangeShortAttr) } }, >- { "unsignedShortAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUnsignedShortAttr) } }, >- { "longAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjLongAttr) } }, >- { "longLongAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjLongLongAttr) } }, >- { "unsignedLongLongAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUnsignedLongLongAttr) } }, >- { "stringAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttr) } }, >- { "usvstringAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUsvstringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUsvstringAttr) } }, >- { "testObjAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTestObjAttr) } }, >- { "testNullableObjAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestNullableObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTestNullableObjAttr) } }, >+ { "readOnlyLongAttr", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "readOnlyStringAttr", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "readOnlyTestObjAttr", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyTestObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "enumAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjEnumAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjEnumAttr) } }, >+ { "byteAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjByteAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjByteAttr) } }, >+ { "octetAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjOctetAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjOctetAttr) } }, >+ { "shortAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjShortAttr) } }, >+ { "clampedShortAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjClampedShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjClampedShortAttr) } }, >+ { "enforceRangeShortAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjEnforceRangeShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjEnforceRangeShortAttr) } }, >+ { "unsignedShortAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUnsignedShortAttr) } }, >+ { "longAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjLongAttr) } }, >+ { "longLongAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjLongLongAttr) } }, >+ { "unsignedLongLongAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUnsignedLongLongAttr) } }, >+ { "stringAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttr) } }, >+ { "usvstringAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUsvstringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUsvstringAttr) } }, >+ { "testObjAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTestObjAttr) } }, >+ { "testNullableObjAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestNullableObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTestNullableObjAttr) } }, > { "lenientTestObjAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLenientTestObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjLenientTestObjAttr) } }, >- { "stringAttrTreatingNullAsEmptyString", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrTreatingNullAsEmptyString), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrTreatingNullAsEmptyString) } }, >- { "usvstringAttrTreatingNullAsEmptyString", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUsvstringAttrTreatingNullAsEmptyString), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUsvstringAttrTreatingNullAsEmptyString) } }, >- { "byteStringAttrTreatingNullAsEmptyString", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjByteStringAttrTreatingNullAsEmptyString), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjByteStringAttrTreatingNullAsEmptyString) } }, >- { "stringLongRecordAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringLongRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringLongRecordAttr) } }, >- { "usvstringLongRecordAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUsvstringLongRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUsvstringLongRecordAttr) } }, >- { "usvstringLongRecordAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUsvstringLongRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUsvstringLongRecordAttr) } }, >- { "stringObjRecordAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringObjRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringObjRecordAttr) } }, >- { "stringNullableObjRecordAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringNullableObjRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringNullableObjRecordAttr) } }, >- { "dictionaryAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDictionaryAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjDictionaryAttr) } }, >- { "nullableDictionaryAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableDictionaryAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableDictionaryAttr) } }, >- { "annotatedTypeInUnionAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAnnotatedTypeInUnionAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAnnotatedTypeInUnionAttr) } }, >- { "annotatedTypeInSequenceAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAnnotatedTypeInSequenceAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAnnotatedTypeInSequenceAttr) } }, >- { "implementationEnumAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjImplementationEnumAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjImplementationEnumAttr) } }, >- { "XMLObjAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjXMLObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjXMLObjAttr) } }, >- { "create", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCreate), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjCreate) } }, >- { "reflectedStringAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedStringAttr) } }, >- { "reflectedUSVStringAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUSVStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedUSVStringAttr) } }, >- { "reflectedIntegralAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedIntegralAttr) } }, >- { "reflectedUnsignedIntegralAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedUnsignedIntegralAttr) } }, >- { "reflectedBooleanAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedBooleanAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedBooleanAttr) } }, >- { "reflectedURLAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedURLAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedURLAttr) } }, >- { "reflectedUSVURLAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUSVURLAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedUSVURLAttr) } }, >- { "reflectedStringAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedStringAttr) } }, >- { "reflectedCustomIntegralAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomIntegralAttr) } }, >- { "reflectedCustomBooleanAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomBooleanAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomBooleanAttr) } }, >- { "reflectedCustomURLAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomURLAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomURLAttr) } }, >+ { "stringAttrTreatingNullAsEmptyString", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrTreatingNullAsEmptyString), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrTreatingNullAsEmptyString) } }, >+ { "usvstringAttrTreatingNullAsEmptyString", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUsvstringAttrTreatingNullAsEmptyString), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUsvstringAttrTreatingNullAsEmptyString) } }, >+ { "byteStringAttrTreatingNullAsEmptyString", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjByteStringAttrTreatingNullAsEmptyString), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjByteStringAttrTreatingNullAsEmptyString) } }, >+ { "stringLongRecordAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringLongRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringLongRecordAttr) } }, >+ { "usvstringLongRecordAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUsvstringLongRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUsvstringLongRecordAttr) } }, >+ { "usvstringLongRecordAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUsvstringLongRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUsvstringLongRecordAttr) } }, >+ { "stringObjRecordAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringObjRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringObjRecordAttr) } }, >+ { "stringNullableObjRecordAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringNullableObjRecordAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringNullableObjRecordAttr) } }, >+ { "dictionaryAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDictionaryAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjDictionaryAttr) } }, >+ { "nullableDictionaryAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableDictionaryAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableDictionaryAttr) } }, >+ { "annotatedTypeInUnionAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAnnotatedTypeInUnionAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAnnotatedTypeInUnionAttr) } }, >+ { "annotatedTypeInSequenceAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAnnotatedTypeInSequenceAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAnnotatedTypeInSequenceAttr) } }, >+ { "implementationEnumAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjImplementationEnumAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjImplementationEnumAttr) } }, >+ { "XMLObjAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjXMLObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjXMLObjAttr) } }, >+ { "create", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCreate), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjCreate) } }, >+ { "reflectedStringAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedStringAttr) } }, >+ { "reflectedUSVStringAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUSVStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedUSVStringAttr) } }, >+ { "reflectedIntegralAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedIntegralAttr) } }, >+ { "reflectedUnsignedIntegralAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedUnsignedIntegralAttr) } }, >+ { "reflectedBooleanAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedBooleanAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedBooleanAttr) } }, >+ { "reflectedURLAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedURLAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedURLAttr) } }, >+ { "reflectedUSVURLAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUSVURLAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedUSVURLAttr) } }, >+ { "reflectedStringAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedStringAttr) } }, >+ { "reflectedCustomIntegralAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomIntegralAttr) } }, >+ { "reflectedCustomBooleanAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomBooleanAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomBooleanAttr) } }, >+ { "reflectedCustomURLAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomURLAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomURLAttr) } }, > #if ENABLE(TEST_FEATURE) > { "enabledAtRuntimeAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjEnabledAtRuntimeAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjEnabledAtRuntimeAttribute) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(TEST_FEATURE) >- { "enabledBySettingAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjEnabledBySettingAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjEnabledBySettingAttribute) } }, >+ { "enabledBySettingAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjEnabledBySettingAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjEnabledBySettingAttribute) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif >- { "typedArrayAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTypedArrayAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTypedArrayAttr) } }, >- { "attributeWithGetterException", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithGetterException) } }, >- { "attributeWithSetterException", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithSetterException) } }, >- { "stringAttrWithGetterException", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrWithGetterException) } }, >- { "stringAttrWithSetterException", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrWithSetterException) } }, >- { "customAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCustomAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjCustomAttr) } }, >+ { "typedArrayAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTypedArrayAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTypedArrayAttr) } }, >+ { "attributeWithGetterException", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithGetterException) } }, >+ { "attributeWithSetterException", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithSetterException) } }, >+ { "stringAttrWithGetterException", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrWithGetterException) } }, >+ { "stringAttrWithSetterException", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrWithSetterException) } }, >+ { "customAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCustomAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjCustomAttr) } }, > #if ENABLE(Condition4) > { "jsBuiltinAttribute", Accessor | Builtin, NoIntrinsic, { (intptr_t)static_cast<BuiltinGenerator>(testObjJsBuiltinAttributeCodeGenerator), (intptr_t) (setTestObjJsBuiltinAttributeCodeGenerator) } }, > #else >@@ -1707,57 +1707,57 @@ static const HashTableValue JSTestObjPrototypeTableValues[] = > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif >- { "onfoo", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjOnfoo), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjOnfoo) } }, >- { "onwebkitfoo", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjOnwebkitfoo), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjOnwebkitfoo) } }, >- { "withScriptStateAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptStateAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptStateAttribute) } }, >- { "withCallWithAndSetterCallWithAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithCallWithAndSetterCallWithAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithCallWithAndSetterCallWithAttribute) } }, >- { "withScriptExecutionContextAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAttribute) } }, >- { "withScriptStateAttributeRaises", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptStateAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptStateAttributeRaises) } }, >- { "withScriptExecutionContextAttributeRaises", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAttributeRaises) } }, >- { "withScriptExecutionContextAndScriptStateAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateAttribute) } }, >- { "withScriptExecutionContextAndScriptStateAttributeRaises", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises) } }, >- { "withScriptExecutionContextAndScriptStateWithSpacesAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute) } }, >- { "withScriptArgumentsAndCallStackAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptArgumentsAndCallStackAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptArgumentsAndCallStackAttribute) } }, >+ { "onfoo", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjOnfoo), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjOnfoo) } }, >+ { "onwebkitfoo", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjOnwebkitfoo), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjOnwebkitfoo) } }, >+ { "withScriptStateAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptStateAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptStateAttribute) } }, >+ { "withCallWithAndSetterCallWithAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithCallWithAndSetterCallWithAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithCallWithAndSetterCallWithAttribute) } }, >+ { "withScriptExecutionContextAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAttribute) } }, >+ { "withScriptStateAttributeRaises", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptStateAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptStateAttributeRaises) } }, >+ { "withScriptExecutionContextAttributeRaises", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAttributeRaises) } }, >+ { "withScriptExecutionContextAndScriptStateAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateAttribute) } }, >+ { "withScriptExecutionContextAndScriptStateAttributeRaises", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises) } }, >+ { "withScriptExecutionContextAndScriptStateWithSpacesAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute) } }, >+ { "withScriptArgumentsAndCallStackAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptArgumentsAndCallStackAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptArgumentsAndCallStackAttribute) } }, > #if ENABLE(Condition1) >- { "conditionalAttr1", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr1) } }, >+ { "conditionalAttr1", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr1) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition1) && ENABLE(Condition2) >- { "conditionalAttr2", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr2) } }, >+ { "conditionalAttr2", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr2) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif > #if ENABLE(Condition1) || ENABLE(Condition2) >- { "conditionalAttr3", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr3) } }, >+ { "conditionalAttr3", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr3) } }, > #else > { 0, 0, NoIntrinsic, { 0, 0 } }, > #endif >- { "cachedAttribute1", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "cachedAttribute2", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "anyAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAnyAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAnyAttribute) } }, >- { "objectAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjObjectAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjObjectAttribute) } }, >- { "contentDocument", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjContentDocument), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "mutablePoint", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjMutablePoint), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjMutablePoint) } }, >- { "strawberry", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStrawberry), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStrawberry) } }, >- { "description", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDescription), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "id", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjId), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjId) } }, >- { "hash", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjHash), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "replaceableAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReplaceableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReplaceableAttribute) } }, >- { "nullableDoubleAttribute", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableDoubleAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "nullableLongAttribute", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "nullableBooleanAttribute", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableBooleanAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "nullableStringAttribute", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "nullableLongSettableAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableLongSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableLongSettableAttribute) } }, >- { "nullableStringSettableAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableStringSettableAttribute) } }, >- { "nullableUSVStringSettableAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableUSVStringSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableUSVStringSettableAttribute) } }, >- { "nullableByteStringSettableAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableByteStringSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableByteStringSettableAttribute) } }, >- { "nullableStringValue", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableStringValue) } }, >- { "attribute", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "attributeWithReservedEnumType", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithReservedEnumType) } }, >- { "putForwardsAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjPutForwardsAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjPutForwardsAttribute) } }, >- { "putForwardsNullableAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjPutForwardsNullableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjPutForwardsNullableAttribute) } }, >- { "stringifierAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringifierAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringifierAttribute) } }, >+ { "cachedAttribute1", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "cachedAttribute2", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "anyAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAnyAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAnyAttribute) } }, >+ { "objectAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjObjectAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjObjectAttribute) } }, >+ { "contentDocument", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjContentDocument), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "mutablePoint", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjMutablePoint), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjMutablePoint) } }, >+ { "strawberry", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStrawberry), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStrawberry) } }, >+ { "description", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDescription), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "id", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjId), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjId) } }, >+ { "hash", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjHash), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "replaceableAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReplaceableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReplaceableAttribute) } }, >+ { "nullableDoubleAttribute", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableDoubleAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "nullableLongAttribute", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "nullableBooleanAttribute", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableBooleanAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "nullableStringAttribute", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "nullableLongSettableAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableLongSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableLongSettableAttribute) } }, >+ { "nullableStringSettableAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableStringSettableAttribute) } }, >+ { "nullableUSVStringSettableAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableUSVStringSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableUSVStringSettableAttribute) } }, >+ { "nullableByteStringSettableAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableByteStringSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableByteStringSettableAttribute) } }, >+ { "nullableStringValue", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableStringValue) } }, >+ { "attribute", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "attributeWithReservedEnumType", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithReservedEnumType) } }, >+ { "putForwardsAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjPutForwardsAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjPutForwardsAttribute) } }, >+ { "putForwardsNullableAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjPutForwardsNullableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjPutForwardsNullableAttribute) } }, >+ { "stringifierAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringifierAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringifierAttribute) } }, > #if ENABLE(TEST_FEATURE) > { "enabledAtRuntimeOperation", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionEnabledAtRuntimeOperation), (intptr_t) (1) } }, > #else >@@ -1948,7 +1948,7 @@ const ClassInfo JSTestObjPrototype::s_info = { "TestObjectPrototype", &Base::s_i > void JSTestObjPrototype::finishCreation(VM& vm, JSDOMGlobalObject& globalObject) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestObjPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestObj::info(), JSTestObjPrototypeTableValues, *this); > #if ENABLE(TEST_FEATURE) > if (!RuntimeEnabledFeatures::sharedFeatures().testFeatureEnabled()) { > Identifier propertyName = Identifier::fromString(&vm, reinterpret_cast<const LChar*>("enabledAtRuntimeOperation"), strlen("enabledAtRuntimeOperation")); >@@ -2073,7 +2073,7 @@ static inline JSValue jsTestObjReadOnlyLongAttrGetter(ExecState&, JSTestObj&, Th > > EncodedJSValue jsTestObjReadOnlyLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReadOnlyLongAttrGetter>(state, thisValue, "readOnlyLongAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReadOnlyLongAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "readOnlyLongAttr"); > } > > static inline JSValue jsTestObjReadOnlyLongAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2089,7 +2089,7 @@ static inline JSValue jsTestObjReadOnlyStringAttrGetter(ExecState&, JSTestObj&, > > EncodedJSValue jsTestObjReadOnlyStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReadOnlyStringAttrGetter>(state, thisValue, "readOnlyStringAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReadOnlyStringAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "readOnlyStringAttr"); > } > > static inline JSValue jsTestObjReadOnlyStringAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2105,7 +2105,7 @@ static inline JSValue jsTestObjReadOnlyTestObjAttrGetter(ExecState&, JSTestObj&, > > EncodedJSValue jsTestObjReadOnlyTestObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReadOnlyTestObjAttrGetter>(state, thisValue, "readOnlyTestObjAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReadOnlyTestObjAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "readOnlyTestObjAttr"); > } > > static inline JSValue jsTestObjReadOnlyTestObjAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2184,7 +2184,7 @@ static inline JSValue jsTestObjEnumAttrGetter(ExecState&, JSTestObj&, ThrowScope > > EncodedJSValue jsTestObjEnumAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjEnumAttrGetter>(state, thisValue, "enumAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjEnumAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "enumAttr"); > } > > static inline JSValue jsTestObjEnumAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2200,7 +2200,7 @@ static inline JSValue jsTestObjByteAttrGetter(ExecState&, JSTestObj&, ThrowScope > > EncodedJSValue jsTestObjByteAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjByteAttrGetter>(state, thisValue, "byteAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjByteAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "byteAttr"); > } > > static inline JSValue jsTestObjByteAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2216,7 +2216,7 @@ static inline JSValue jsTestObjOctetAttrGetter(ExecState&, JSTestObj&, ThrowScop > > EncodedJSValue jsTestObjOctetAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjOctetAttrGetter>(state, thisValue, "octetAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjOctetAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "octetAttr"); > } > > static inline JSValue jsTestObjOctetAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2232,7 +2232,7 @@ static inline JSValue jsTestObjShortAttrGetter(ExecState&, JSTestObj&, ThrowScop > > EncodedJSValue jsTestObjShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjShortAttrGetter>(state, thisValue, "shortAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjShortAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "shortAttr"); > } > > static inline JSValue jsTestObjShortAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2248,7 +2248,7 @@ static inline JSValue jsTestObjClampedShortAttrGetter(ExecState&, JSTestObj&, Th > > EncodedJSValue jsTestObjClampedShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjClampedShortAttrGetter>(state, thisValue, "clampedShortAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjClampedShortAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "clampedShortAttr"); > } > > static inline JSValue jsTestObjClampedShortAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2264,7 +2264,7 @@ static inline JSValue jsTestObjEnforceRangeShortAttrGetter(ExecState&, JSTestObj > > EncodedJSValue jsTestObjEnforceRangeShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjEnforceRangeShortAttrGetter>(state, thisValue, "enforceRangeShortAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjEnforceRangeShortAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "enforceRangeShortAttr"); > } > > static inline JSValue jsTestObjEnforceRangeShortAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2280,7 +2280,7 @@ static inline JSValue jsTestObjUnsignedShortAttrGetter(ExecState&, JSTestObj&, T > > EncodedJSValue jsTestObjUnsignedShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjUnsignedShortAttrGetter>(state, thisValue, "unsignedShortAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjUnsignedShortAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "unsignedShortAttr"); > } > > static inline JSValue jsTestObjUnsignedShortAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2296,7 +2296,7 @@ static inline JSValue jsTestObjLongAttrGetter(ExecState&, JSTestObj&, ThrowScope > > EncodedJSValue jsTestObjLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjLongAttrGetter>(state, thisValue, "longAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjLongAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "longAttr"); > } > > static inline JSValue jsTestObjLongAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2312,7 +2312,7 @@ static inline JSValue jsTestObjLongLongAttrGetter(ExecState&, JSTestObj&, ThrowS > > EncodedJSValue jsTestObjLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjLongLongAttrGetter>(state, thisValue, "longLongAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjLongLongAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "longLongAttr"); > } > > static inline JSValue jsTestObjLongLongAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2328,7 +2328,7 @@ static inline JSValue jsTestObjUnsignedLongLongAttrGetter(ExecState&, JSTestObj& > > EncodedJSValue jsTestObjUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjUnsignedLongLongAttrGetter>(state, thisValue, "unsignedLongLongAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjUnsignedLongLongAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "unsignedLongLongAttr"); > } > > static inline JSValue jsTestObjUnsignedLongLongAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2344,7 +2344,7 @@ static inline JSValue jsTestObjStringAttrGetter(ExecState&, JSTestObj&, ThrowSco > > EncodedJSValue jsTestObjStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStringAttrGetter>(state, thisValue, "stringAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStringAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringAttr"); > } > > static inline JSValue jsTestObjStringAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2360,7 +2360,7 @@ static inline JSValue jsTestObjUsvstringAttrGetter(ExecState&, JSTestObj&, Throw > > EncodedJSValue jsTestObjUsvstringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjUsvstringAttrGetter>(state, thisValue, "usvstringAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjUsvstringAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "usvstringAttr"); > } > > static inline JSValue jsTestObjUsvstringAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2376,7 +2376,7 @@ static inline JSValue jsTestObjTestObjAttrGetter(ExecState&, JSTestObj&, ThrowSc > > EncodedJSValue jsTestObjTestObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjTestObjAttrGetter>(state, thisValue, "testObjAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjTestObjAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "testObjAttr"); > } > > static inline JSValue jsTestObjTestObjAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2392,7 +2392,7 @@ static inline JSValue jsTestObjTestNullableObjAttrGetter(ExecState&, JSTestObj&, > > EncodedJSValue jsTestObjTestNullableObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjTestNullableObjAttrGetter>(state, thisValue, "testNullableObjAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjTestNullableObjAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "testNullableObjAttr"); > } > > static inline JSValue jsTestObjTestNullableObjAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2440,7 +2440,7 @@ static inline JSValue jsTestObjStringAttrTreatingNullAsEmptyStringGetter(ExecSta > > EncodedJSValue jsTestObjStringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStringAttrTreatingNullAsEmptyStringGetter>(state, thisValue, "stringAttrTreatingNullAsEmptyString"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStringAttrTreatingNullAsEmptyStringGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringAttrTreatingNullAsEmptyString"); > } > > static inline JSValue jsTestObjStringAttrTreatingNullAsEmptyStringGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2456,7 +2456,7 @@ static inline JSValue jsTestObjUsvstringAttrTreatingNullAsEmptyStringGetter(Exec > > EncodedJSValue jsTestObjUsvstringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjUsvstringAttrTreatingNullAsEmptyStringGetter>(state, thisValue, "usvstringAttrTreatingNullAsEmptyString"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjUsvstringAttrTreatingNullAsEmptyStringGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "usvstringAttrTreatingNullAsEmptyString"); > } > > static inline JSValue jsTestObjUsvstringAttrTreatingNullAsEmptyStringGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2472,7 +2472,7 @@ static inline JSValue jsTestObjByteStringAttrTreatingNullAsEmptyStringGetter(Exe > > EncodedJSValue jsTestObjByteStringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjByteStringAttrTreatingNullAsEmptyStringGetter>(state, thisValue, "byteStringAttrTreatingNullAsEmptyString"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjByteStringAttrTreatingNullAsEmptyStringGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "byteStringAttrTreatingNullAsEmptyString"); > } > > static inline JSValue jsTestObjByteStringAttrTreatingNullAsEmptyStringGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2488,7 +2488,7 @@ static inline JSValue jsTestObjStringLongRecordAttrGetter(ExecState&, JSTestObj& > > EncodedJSValue jsTestObjStringLongRecordAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStringLongRecordAttrGetter>(state, thisValue, "stringLongRecordAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStringLongRecordAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringLongRecordAttr"); > } > > static inline JSValue jsTestObjStringLongRecordAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2504,7 +2504,7 @@ static inline JSValue jsTestObjUsvstringLongRecordAttrGetter(ExecState&, JSTestO > > EncodedJSValue jsTestObjUsvstringLongRecordAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjUsvstringLongRecordAttrGetter>(state, thisValue, "usvstringLongRecordAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjUsvstringLongRecordAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "usvstringLongRecordAttr"); > } > > static inline JSValue jsTestObjUsvstringLongRecordAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2520,7 +2520,7 @@ static inline JSValue jsTestObjUsvstringLongRecordAttrGetter(ExecState&, JSTestO > > EncodedJSValue jsTestObjUsvstringLongRecordAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjUsvstringLongRecordAttrGetter>(state, thisValue, "usvstringLongRecordAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjUsvstringLongRecordAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "usvstringLongRecordAttr"); > } > > static inline JSValue jsTestObjUsvstringLongRecordAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2536,7 +2536,7 @@ static inline JSValue jsTestObjStringObjRecordAttrGetter(ExecState&, JSTestObj&, > > EncodedJSValue jsTestObjStringObjRecordAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStringObjRecordAttrGetter>(state, thisValue, "stringObjRecordAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStringObjRecordAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringObjRecordAttr"); > } > > static inline JSValue jsTestObjStringObjRecordAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2552,7 +2552,7 @@ static inline JSValue jsTestObjStringNullableObjRecordAttrGetter(ExecState&, JST > > EncodedJSValue jsTestObjStringNullableObjRecordAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStringNullableObjRecordAttrGetter>(state, thisValue, "stringNullableObjRecordAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStringNullableObjRecordAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringNullableObjRecordAttr"); > } > > static inline JSValue jsTestObjStringNullableObjRecordAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2568,7 +2568,7 @@ static inline JSValue jsTestObjDictionaryAttrGetter(ExecState&, JSTestObj&, Thro > > EncodedJSValue jsTestObjDictionaryAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjDictionaryAttrGetter>(state, thisValue, "dictionaryAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjDictionaryAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "dictionaryAttr"); > } > > static inline JSValue jsTestObjDictionaryAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2584,7 +2584,7 @@ static inline JSValue jsTestObjNullableDictionaryAttrGetter(ExecState&, JSTestOb > > EncodedJSValue jsTestObjNullableDictionaryAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableDictionaryAttrGetter>(state, thisValue, "nullableDictionaryAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableDictionaryAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableDictionaryAttr"); > } > > static inline JSValue jsTestObjNullableDictionaryAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2600,7 +2600,7 @@ static inline JSValue jsTestObjAnnotatedTypeInUnionAttrGetter(ExecState&, JSTest > > EncodedJSValue jsTestObjAnnotatedTypeInUnionAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjAnnotatedTypeInUnionAttrGetter>(state, thisValue, "annotatedTypeInUnionAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjAnnotatedTypeInUnionAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "annotatedTypeInUnionAttr"); > } > > static inline JSValue jsTestObjAnnotatedTypeInUnionAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2616,7 +2616,7 @@ static inline JSValue jsTestObjAnnotatedTypeInSequenceAttrGetter(ExecState&, JST > > EncodedJSValue jsTestObjAnnotatedTypeInSequenceAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjAnnotatedTypeInSequenceAttrGetter>(state, thisValue, "annotatedTypeInSequenceAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjAnnotatedTypeInSequenceAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "annotatedTypeInSequenceAttr"); > } > > static inline JSValue jsTestObjAnnotatedTypeInSequenceAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2632,7 +2632,7 @@ static inline JSValue jsTestObjImplementationEnumAttrGetter(ExecState&, JSTestOb > > EncodedJSValue jsTestObjImplementationEnumAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjImplementationEnumAttrGetter>(state, thisValue, "implementationEnumAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjImplementationEnumAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "implementationEnumAttr"); > } > > static inline JSValue jsTestObjImplementationEnumAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2648,7 +2648,7 @@ static inline JSValue jsTestObjXMLObjAttrGetter(ExecState&, JSTestObj&, ThrowSco > > EncodedJSValue jsTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjXMLObjAttrGetter>(state, thisValue, "XMLObjAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjXMLObjAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "XMLObjAttr"); > } > > static inline JSValue jsTestObjXMLObjAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2664,7 +2664,7 @@ static inline JSValue jsTestObjCreateGetter(ExecState&, JSTestObj&, ThrowScope& > > EncodedJSValue jsTestObjCreate(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjCreateGetter>(state, thisValue, "create"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjCreateGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "create"); > } > > static inline JSValue jsTestObjCreateGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2680,7 +2680,7 @@ static inline JSValue jsTestObjReflectedStringAttrGetter(ExecState&, JSTestObj&, > > EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedStringAttrGetter>(state, thisValue, "reflectedStringAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedStringAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedStringAttr"); > } > > static inline JSValue jsTestObjReflectedStringAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2696,7 +2696,7 @@ static inline JSValue jsTestObjReflectedUSVStringAttrGetter(ExecState&, JSTestOb > > EncodedJSValue jsTestObjReflectedUSVStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedUSVStringAttrGetter>(state, thisValue, "reflectedUSVStringAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedUSVStringAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedUSVStringAttr"); > } > > static inline JSValue jsTestObjReflectedUSVStringAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2712,7 +2712,7 @@ static inline JSValue jsTestObjReflectedIntegralAttrGetter(ExecState&, JSTestObj > > EncodedJSValue jsTestObjReflectedIntegralAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedIntegralAttrGetter>(state, thisValue, "reflectedIntegralAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedIntegralAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedIntegralAttr"); > } > > static inline JSValue jsTestObjReflectedIntegralAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2728,7 +2728,7 @@ static inline JSValue jsTestObjReflectedUnsignedIntegralAttrGetter(ExecState&, J > > EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedUnsignedIntegralAttrGetter>(state, thisValue, "reflectedUnsignedIntegralAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedUnsignedIntegralAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedUnsignedIntegralAttr"); > } > > static inline JSValue jsTestObjReflectedUnsignedIntegralAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2744,7 +2744,7 @@ static inline JSValue jsTestObjReflectedBooleanAttrGetter(ExecState&, JSTestObj& > > EncodedJSValue jsTestObjReflectedBooleanAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedBooleanAttrGetter>(state, thisValue, "reflectedBooleanAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedBooleanAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedBooleanAttr"); > } > > static inline JSValue jsTestObjReflectedBooleanAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2760,7 +2760,7 @@ static inline JSValue jsTestObjReflectedURLAttrGetter(ExecState&, JSTestObj&, Th > > EncodedJSValue jsTestObjReflectedURLAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedURLAttrGetter>(state, thisValue, "reflectedURLAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedURLAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedURLAttr"); > } > > static inline JSValue jsTestObjReflectedURLAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2776,7 +2776,7 @@ static inline JSValue jsTestObjReflectedUSVURLAttrGetter(ExecState&, JSTestObj&, > > EncodedJSValue jsTestObjReflectedUSVURLAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedUSVURLAttrGetter>(state, thisValue, "reflectedUSVURLAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedUSVURLAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedUSVURLAttr"); > } > > static inline JSValue jsTestObjReflectedUSVURLAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2792,7 +2792,7 @@ static inline JSValue jsTestObjReflectedStringAttrGetter(ExecState&, JSTestObj&, > > EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedStringAttrGetter>(state, thisValue, "reflectedStringAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedStringAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedStringAttr"); > } > > static inline JSValue jsTestObjReflectedStringAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2808,7 +2808,7 @@ static inline JSValue jsTestObjReflectedCustomIntegralAttrGetter(ExecState&, JST > > EncodedJSValue jsTestObjReflectedCustomIntegralAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedCustomIntegralAttrGetter>(state, thisValue, "reflectedCustomIntegralAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedCustomIntegralAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedCustomIntegralAttr"); > } > > static inline JSValue jsTestObjReflectedCustomIntegralAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2824,7 +2824,7 @@ static inline JSValue jsTestObjReflectedCustomBooleanAttrGetter(ExecState&, JSTe > > EncodedJSValue jsTestObjReflectedCustomBooleanAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedCustomBooleanAttrGetter>(state, thisValue, "reflectedCustomBooleanAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedCustomBooleanAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedCustomBooleanAttr"); > } > > static inline JSValue jsTestObjReflectedCustomBooleanAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2840,7 +2840,7 @@ static inline JSValue jsTestObjReflectedCustomURLAttrGetter(ExecState&, JSTestOb > > EncodedJSValue jsTestObjReflectedCustomURLAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedCustomURLAttrGetter>(state, thisValue, "reflectedCustomURLAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReflectedCustomURLAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reflectedCustomURLAttr"); > } > > static inline JSValue jsTestObjReflectedCustomURLAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2876,7 +2876,7 @@ static inline JSValue jsTestObjEnabledBySettingAttributeGetter(ExecState&, JSTes > > EncodedJSValue jsTestObjEnabledBySettingAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjEnabledBySettingAttributeGetter>(state, thisValue, "enabledBySettingAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjEnabledBySettingAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "enabledBySettingAttribute"); > } > > static inline JSValue jsTestObjEnabledBySettingAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2894,7 +2894,7 @@ static inline JSValue jsTestObjTypedArrayAttrGetter(ExecState&, JSTestObj&, Thro > > EncodedJSValue jsTestObjTypedArrayAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjTypedArrayAttrGetter>(state, thisValue, "typedArrayAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjTypedArrayAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "typedArrayAttr"); > } > > static inline JSValue jsTestObjTypedArrayAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2910,7 +2910,7 @@ static inline JSValue jsTestObjAttributeWithGetterExceptionGetter(ExecState&, JS > > EncodedJSValue jsTestObjAttributeWithGetterException(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjAttributeWithGetterExceptionGetter>(state, thisValue, "attributeWithGetterException"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjAttributeWithGetterExceptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attributeWithGetterException"); > } > > static inline JSValue jsTestObjAttributeWithGetterExceptionGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2926,7 +2926,7 @@ static inline JSValue jsTestObjAttributeWithSetterExceptionGetter(ExecState&, JS > > EncodedJSValue jsTestObjAttributeWithSetterException(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjAttributeWithSetterExceptionGetter>(state, thisValue, "attributeWithSetterException"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjAttributeWithSetterExceptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attributeWithSetterException"); > } > > static inline JSValue jsTestObjAttributeWithSetterExceptionGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2942,7 +2942,7 @@ static inline JSValue jsTestObjStringAttrWithGetterExceptionGetter(ExecState&, J > > EncodedJSValue jsTestObjStringAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStringAttrWithGetterExceptionGetter>(state, thisValue, "stringAttrWithGetterException"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStringAttrWithGetterExceptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringAttrWithGetterException"); > } > > static inline JSValue jsTestObjStringAttrWithGetterExceptionGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2958,7 +2958,7 @@ static inline JSValue jsTestObjStringAttrWithSetterExceptionGetter(ExecState&, J > > EncodedJSValue jsTestObjStringAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStringAttrWithSetterExceptionGetter>(state, thisValue, "stringAttrWithSetterException"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStringAttrWithSetterExceptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringAttrWithSetterException"); > } > > static inline JSValue jsTestObjStringAttrWithSetterExceptionGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2974,7 +2974,7 @@ static inline JSValue jsTestObjCustomAttrGetter(ExecState&, JSTestObj&, ThrowSco > > EncodedJSValue jsTestObjCustomAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjCustomAttrGetter>(state, thisValue, "customAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjCustomAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "customAttr"); > } > > static inline JSValue jsTestObjCustomAttrGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -2988,7 +2988,7 @@ static inline JSValue jsTestObjOnfooGetter(ExecState&, JSTestObj&, ThrowScope& t > > EncodedJSValue jsTestObjOnfoo(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjOnfooGetter>(state, thisValue, "onfoo"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjOnfooGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "onfoo"); > } > > static inline JSValue jsTestObjOnfooGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3002,7 +3002,7 @@ static inline JSValue jsTestObjOnwebkitfooGetter(ExecState&, JSTestObj&, ThrowSc > > EncodedJSValue jsTestObjOnwebkitfoo(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjOnwebkitfooGetter>(state, thisValue, "onwebkitfoo"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjOnwebkitfooGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "onwebkitfoo"); > } > > static inline JSValue jsTestObjOnwebkitfooGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3016,7 +3016,7 @@ static inline JSValue jsTestObjWithScriptStateAttributeGetter(ExecState&, JSTest > > EncodedJSValue jsTestObjWithScriptStateAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptStateAttributeGetter>(state, thisValue, "withScriptStateAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptStateAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withScriptStateAttribute"); > } > > static inline JSValue jsTestObjWithScriptStateAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3032,7 +3032,7 @@ static inline JSValue jsTestObjWithCallWithAndSetterCallWithAttributeGetter(Exec > > EncodedJSValue jsTestObjWithCallWithAndSetterCallWithAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithCallWithAndSetterCallWithAttributeGetter>(state, thisValue, "withCallWithAndSetterCallWithAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithCallWithAndSetterCallWithAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withCallWithAndSetterCallWithAttribute"); > } > > static inline JSValue jsTestObjWithCallWithAndSetterCallWithAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3048,7 +3048,7 @@ static inline JSValue jsTestObjWithScriptExecutionContextAttributeGetter(ExecSta > > EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAttributeGetter>(state, thisValue, "withScriptExecutionContextAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withScriptExecutionContextAttribute"); > } > > static inline JSValue jsTestObjWithScriptExecutionContextAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3067,7 +3067,7 @@ static inline JSValue jsTestObjWithScriptStateAttributeRaisesGetter(ExecState&, > > EncodedJSValue jsTestObjWithScriptStateAttributeRaises(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptStateAttributeRaisesGetter>(state, thisValue, "withScriptStateAttributeRaises"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptStateAttributeRaisesGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withScriptStateAttributeRaises"); > } > > static inline JSValue jsTestObjWithScriptStateAttributeRaisesGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3083,7 +3083,7 @@ static inline JSValue jsTestObjWithScriptExecutionContextAttributeRaisesGetter(E > > EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAttributeRaisesGetter>(state, thisValue, "withScriptExecutionContextAttributeRaises"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAttributeRaisesGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withScriptExecutionContextAttributeRaises"); > } > > static inline JSValue jsTestObjWithScriptExecutionContextAttributeRaisesGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3102,7 +3102,7 @@ static inline JSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute > > EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAndScriptStateAttributeGetter>(state, thisValue, "withScriptExecutionContextAndScriptStateAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAndScriptStateAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withScriptExecutionContextAndScriptStateAttribute"); > } > > static inline JSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3121,7 +3121,7 @@ static inline JSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute > > EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaisesGetter>(state, thisValue, "withScriptExecutionContextAndScriptStateAttributeRaises"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaisesGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withScriptExecutionContextAndScriptStateAttributeRaises"); > } > > static inline JSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaisesGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3140,7 +3140,7 @@ static inline JSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpace > > EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeGetter>(state, thisValue, "withScriptExecutionContextAndScriptStateWithSpacesAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withScriptExecutionContextAndScriptStateWithSpacesAttribute"); > } > > static inline JSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3159,7 +3159,7 @@ static inline JSValue jsTestObjWithScriptArgumentsAndCallStackAttributeGetter(Ex > > EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptArgumentsAndCallStackAttributeGetter>(state, thisValue, "withScriptArgumentsAndCallStackAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjWithScriptArgumentsAndCallStackAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "withScriptArgumentsAndCallStackAttribute"); > } > > static inline JSValue jsTestObjWithScriptArgumentsAndCallStackAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3176,7 +3176,7 @@ static inline JSValue jsTestObjConditionalAttr1Getter(ExecState&, JSTestObj&, Th > > EncodedJSValue jsTestObjConditionalAttr1(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjConditionalAttr1Getter>(state, thisValue, "conditionalAttr1"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjConditionalAttr1Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "conditionalAttr1"); > } > > static inline JSValue jsTestObjConditionalAttr1Getter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3195,7 +3195,7 @@ static inline JSValue jsTestObjConditionalAttr2Getter(ExecState&, JSTestObj&, Th > > EncodedJSValue jsTestObjConditionalAttr2(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjConditionalAttr2Getter>(state, thisValue, "conditionalAttr2"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjConditionalAttr2Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "conditionalAttr2"); > } > > static inline JSValue jsTestObjConditionalAttr2Getter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3214,7 +3214,7 @@ static inline JSValue jsTestObjConditionalAttr3Getter(ExecState&, JSTestObj&, Th > > EncodedJSValue jsTestObjConditionalAttr3(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjConditionalAttr3Getter>(state, thisValue, "conditionalAttr3"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjConditionalAttr3Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "conditionalAttr3"); > } > > static inline JSValue jsTestObjConditionalAttr3Getter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3283,7 +3283,7 @@ static inline JSValue jsTestObjCachedAttribute1Getter(ExecState&, JSTestObj&, Th > > EncodedJSValue jsTestObjCachedAttribute1(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjCachedAttribute1Getter>(state, thisValue, "cachedAttribute1"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjCachedAttribute1Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "cachedAttribute1"); > } > > static inline JSValue jsTestObjCachedAttribute1Getter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3302,7 +3302,7 @@ static inline JSValue jsTestObjCachedAttribute2Getter(ExecState&, JSTestObj&, Th > > EncodedJSValue jsTestObjCachedAttribute2(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjCachedAttribute2Getter>(state, thisValue, "cachedAttribute2"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjCachedAttribute2Getter, CastedThisErrorBehavior::Assert>(state, thisValue, "cachedAttribute2"); > } > > static inline JSValue jsTestObjCachedAttribute2Getter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3321,7 +3321,7 @@ static inline JSValue jsTestObjAnyAttributeGetter(ExecState&, JSTestObj&, ThrowS > > EncodedJSValue jsTestObjAnyAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjAnyAttributeGetter>(state, thisValue, "anyAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjAnyAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "anyAttribute"); > } > > static inline JSValue jsTestObjAnyAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3337,7 +3337,7 @@ static inline JSValue jsTestObjObjectAttributeGetter(ExecState&, JSTestObj&, Thr > > EncodedJSValue jsTestObjObjectAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjObjectAttributeGetter>(state, thisValue, "objectAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjObjectAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "objectAttribute"); > } > > static inline JSValue jsTestObjObjectAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3353,7 +3353,7 @@ static inline JSValue jsTestObjContentDocumentGetter(ExecState&, JSTestObj&, Thr > > EncodedJSValue jsTestObjContentDocument(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjContentDocumentGetter>(state, thisValue, "contentDocument"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjContentDocumentGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "contentDocument"); > } > > static inline JSValue jsTestObjContentDocumentGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3369,7 +3369,7 @@ static inline JSValue jsTestObjMutablePointGetter(ExecState&, JSTestObj&, ThrowS > > EncodedJSValue jsTestObjMutablePoint(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjMutablePointGetter>(state, thisValue, "mutablePoint"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjMutablePointGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "mutablePoint"); > } > > static inline JSValue jsTestObjMutablePointGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3385,7 +3385,7 @@ static inline JSValue jsTestObjStrawberryGetter(ExecState&, JSTestObj&, ThrowSco > > EncodedJSValue jsTestObjStrawberry(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStrawberryGetter>(state, thisValue, "strawberry"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStrawberryGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "strawberry"); > } > > static inline JSValue jsTestObjStrawberryGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3401,7 +3401,7 @@ static inline JSValue jsTestObjDescriptionGetter(ExecState&, JSTestObj&, ThrowSc > > EncodedJSValue jsTestObjDescription(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjDescriptionGetter>(state, thisValue, "description"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjDescriptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "description"); > } > > static inline JSValue jsTestObjDescriptionGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3417,7 +3417,7 @@ static inline JSValue jsTestObjIdGetter(ExecState&, JSTestObj&, ThrowScope& thro > > EncodedJSValue jsTestObjId(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjIdGetter>(state, thisValue, "id"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjIdGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "id"); > } > > static inline JSValue jsTestObjIdGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3433,7 +3433,7 @@ static inline JSValue jsTestObjHashGetter(ExecState&, JSTestObj&, ThrowScope& th > > EncodedJSValue jsTestObjHash(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjHashGetter>(state, thisValue, "hash"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjHashGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "hash"); > } > > static inline JSValue jsTestObjHashGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3449,7 +3449,7 @@ static inline JSValue jsTestObjReplaceableAttributeGetter(ExecState&, JSTestObj& > > EncodedJSValue jsTestObjReplaceableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjReplaceableAttributeGetter>(state, thisValue, "replaceableAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjReplaceableAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "replaceableAttribute"); > } > > static inline JSValue jsTestObjReplaceableAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3465,7 +3465,7 @@ static inline JSValue jsTestObjNullableDoubleAttributeGetter(ExecState&, JSTestO > > EncodedJSValue jsTestObjNullableDoubleAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableDoubleAttributeGetter>(state, thisValue, "nullableDoubleAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableDoubleAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableDoubleAttribute"); > } > > static inline JSValue jsTestObjNullableDoubleAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3481,7 +3481,7 @@ static inline JSValue jsTestObjNullableLongAttributeGetter(ExecState&, JSTestObj > > EncodedJSValue jsTestObjNullableLongAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableLongAttributeGetter>(state, thisValue, "nullableLongAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableLongAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableLongAttribute"); > } > > static inline JSValue jsTestObjNullableLongAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3497,7 +3497,7 @@ static inline JSValue jsTestObjNullableBooleanAttributeGetter(ExecState&, JSTest > > EncodedJSValue jsTestObjNullableBooleanAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableBooleanAttributeGetter>(state, thisValue, "nullableBooleanAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableBooleanAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableBooleanAttribute"); > } > > static inline JSValue jsTestObjNullableBooleanAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3513,7 +3513,7 @@ static inline JSValue jsTestObjNullableStringAttributeGetter(ExecState&, JSTestO > > EncodedJSValue jsTestObjNullableStringAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableStringAttributeGetter>(state, thisValue, "nullableStringAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableStringAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableStringAttribute"); > } > > static inline JSValue jsTestObjNullableStringAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3529,7 +3529,7 @@ static inline JSValue jsTestObjNullableLongSettableAttributeGetter(ExecState&, J > > EncodedJSValue jsTestObjNullableLongSettableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableLongSettableAttributeGetter>(state, thisValue, "nullableLongSettableAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableLongSettableAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableLongSettableAttribute"); > } > > static inline JSValue jsTestObjNullableLongSettableAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3545,7 +3545,7 @@ static inline JSValue jsTestObjNullableStringSettableAttributeGetter(ExecState&, > > EncodedJSValue jsTestObjNullableStringSettableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableStringSettableAttributeGetter>(state, thisValue, "nullableStringSettableAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableStringSettableAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableStringSettableAttribute"); > } > > static inline JSValue jsTestObjNullableStringSettableAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3561,7 +3561,7 @@ static inline JSValue jsTestObjNullableUSVStringSettableAttributeGetter(ExecStat > > EncodedJSValue jsTestObjNullableUSVStringSettableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableUSVStringSettableAttributeGetter>(state, thisValue, "nullableUSVStringSettableAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableUSVStringSettableAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableUSVStringSettableAttribute"); > } > > static inline JSValue jsTestObjNullableUSVStringSettableAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3577,7 +3577,7 @@ static inline JSValue jsTestObjNullableByteStringSettableAttributeGetter(ExecSta > > EncodedJSValue jsTestObjNullableByteStringSettableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableByteStringSettableAttributeGetter>(state, thisValue, "nullableByteStringSettableAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableByteStringSettableAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableByteStringSettableAttribute"); > } > > static inline JSValue jsTestObjNullableByteStringSettableAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3593,7 +3593,7 @@ static inline JSValue jsTestObjNullableStringValueGetter(ExecState&, JSTestObj&, > > EncodedJSValue jsTestObjNullableStringValue(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjNullableStringValueGetter>(state, thisValue, "nullableStringValue"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjNullableStringValueGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "nullableStringValue"); > } > > static inline JSValue jsTestObjNullableStringValueGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3609,7 +3609,7 @@ static inline JSValue jsTestObjAttributeGetter(ExecState&, JSTestObj&, ThrowScop > > EncodedJSValue jsTestObjAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjAttributeGetter>(state, thisValue, "attribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attribute"); > } > > static inline JSValue jsTestObjAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3625,7 +3625,7 @@ static inline JSValue jsTestObjAttributeWithReservedEnumTypeGetter(ExecState&, J > > EncodedJSValue jsTestObjAttributeWithReservedEnumType(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjAttributeWithReservedEnumTypeGetter>(state, thisValue, "attributeWithReservedEnumType"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjAttributeWithReservedEnumTypeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attributeWithReservedEnumType"); > } > > static inline JSValue jsTestObjAttributeWithReservedEnumTypeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3641,7 +3641,7 @@ static inline JSValue jsTestObjPutForwardsAttributeGetter(ExecState&, JSTestObj& > > EncodedJSValue jsTestObjPutForwardsAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjPutForwardsAttributeGetter>(state, thisValue, "putForwardsAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjPutForwardsAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "putForwardsAttribute"); > } > > static inline JSValue jsTestObjPutForwardsAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3657,7 +3657,7 @@ static inline JSValue jsTestObjPutForwardsNullableAttributeGetter(ExecState&, JS > > EncodedJSValue jsTestObjPutForwardsNullableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjPutForwardsNullableAttributeGetter>(state, thisValue, "putForwardsNullableAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjPutForwardsNullableAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "putForwardsNullableAttribute"); > } > > static inline JSValue jsTestObjPutForwardsNullableAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >@@ -3673,7 +3673,7 @@ static inline JSValue jsTestObjStringifierAttributeGetter(ExecState&, JSTestObj& > > EncodedJSValue jsTestObjStringifierAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjStringifierAttributeGetter>(state, thisValue, "stringifierAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjStringifierAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringifierAttribute"); > } > > static inline JSValue jsTestObjStringifierAttributeGetter(ExecState& state, JSTestObj& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp >index 908065995a63fe6ede5701a7ef75fc8eac4482f1..89693b0ee9b01e2f487470adf3287e43b8e03872 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp >@@ -193,7 +193,7 @@ const ClassInfo JSTestOverloadedConstructorsPrototype::s_info = { "TestOverloade > void JSTestOverloadedConstructorsPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestOverloadedConstructorsPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestOverloadedConstructors::info(), JSTestOverloadedConstructorsPrototypeTableValues, *this); > } > > const ClassInfo JSTestOverloadedConstructors::s_info = { "TestOverloadedConstructors", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestOverloadedConstructors) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp >index 6845d3ea9d925dd835322224b9a01ca569e9be1f..83243a33dd566512dc6d26ae43a3f2a458b1a550 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp >@@ -144,7 +144,7 @@ const ClassInfo JSTestOverloadedConstructorsWithSequencePrototype::s_info = { "T > void JSTestOverloadedConstructorsWithSequencePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestOverloadedConstructorsWithSequencePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestOverloadedConstructorsWithSequence::info(), JSTestOverloadedConstructorsWithSequencePrototypeTableValues, *this); > } > > const ClassInfo JSTestOverloadedConstructorsWithSequence::s_info = { "TestOverloadedConstructorsWithSequence", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestOverloadedConstructorsWithSequence) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp >index 8a8a2675c4a5b9940138a6bd6128485f20d882c7..9d29558c934caf16c6300a8ed3d9d704822d8c02 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp >@@ -100,7 +100,7 @@ const ClassInfo JSTestOverrideBuiltinsPrototype::s_info = { "TestOverrideBuiltin > void JSTestOverrideBuiltinsPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestOverrideBuiltinsPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestOverrideBuiltins::info(), JSTestOverrideBuiltinsPrototypeTableValues, *this); > } > > const ClassInfo JSTestOverrideBuiltins::s_info = { "TestOverrideBuiltins", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestOverrideBuiltins) }; >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp >index adbb47bddbbfe3ee3080f3be9666b468ffc1c571..ed88d139d6dc5d8f53b83b919f71364208893dee 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp >@@ -156,7 +156,7 @@ static const HashTableValue JSTestPromiseRejectionEventPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestPromiseRejectionEventConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestPromiseRejectionEventConstructor) } }, > { "promise", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestPromiseRejectionEventPromise), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "reason", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestPromiseRejectionEventReason), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "reason", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestPromiseRejectionEventReason), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > }; > > const ClassInfo JSTestPromiseRejectionEventPrototype::s_info = { "TestPromiseRejectionEventPrototype", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestPromiseRejectionEventPrototype) }; >@@ -164,7 +164,7 @@ const ClassInfo JSTestPromiseRejectionEventPrototype::s_info = { "TestPromiseRej > void JSTestPromiseRejectionEventPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestPromiseRejectionEventPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestPromiseRejectionEvent::info(), JSTestPromiseRejectionEventPrototypeTableValues, *this); > } > > const ClassInfo JSTestPromiseRejectionEvent::s_info = { "TestPromiseRejectionEvent", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestPromiseRejectionEvent) }; >@@ -216,7 +216,7 @@ static inline JSValue jsTestPromiseRejectionEventReasonGetter(ExecState&, JSTest > > EncodedJSValue jsTestPromiseRejectionEventReason(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestPromiseRejectionEvent>::attribute<jsTestPromiseRejectionEventReasonGetter>(state, thisValue, "reason"); >+ return BindingCaller<JSTestPromiseRejectionEvent>::attribute<jsTestPromiseRejectionEventReasonGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "reason"); > } > > static inline JSValue jsTestPromiseRejectionEventReasonGetter(ExecState& state, JSTestPromiseRejectionEvent& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp >index 0b5448af4bb72375c555f6a0725a3d376db17d7f..75cdacea616add2a6f2e4c5807221a97f5f864f9 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp >@@ -104,12 +104,12 @@ template<> const ClassInfo JSTestSerializationConstructor::s_info = { "TestSeria > static const HashTableValue JSTestSerializationPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationConstructor) } }, >- { "firstStringAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationFirstStringAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationFirstStringAttribute) } }, >- { "secondLongAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationSecondLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationSecondLongAttribute) } }, >- { "thirdUnserializableAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationThirdUnserializableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationThirdUnserializableAttribute) } }, >- { "fourthUnrestrictedDoubleAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationFourthUnrestrictedDoubleAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationFourthUnrestrictedDoubleAttribute) } }, >- { "fifthLongAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationFifthLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationFifthLongAttribute) } }, >- { "sixthTypedefAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationSixthTypedefAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationSixthTypedefAttribute) } }, >+ { "firstStringAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationFirstStringAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationFirstStringAttribute) } }, >+ { "secondLongAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationSecondLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationSecondLongAttribute) } }, >+ { "thirdUnserializableAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationThirdUnserializableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationThirdUnserializableAttribute) } }, >+ { "fourthUnrestrictedDoubleAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationFourthUnrestrictedDoubleAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationFourthUnrestrictedDoubleAttribute) } }, >+ { "fifthLongAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationFifthLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationFifthLongAttribute) } }, >+ { "sixthTypedefAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationSixthTypedefAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationSixthTypedefAttribute) } }, > { "toJSON", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestSerializationPrototypeFunctionToJSON), (intptr_t) (0) } }, > }; > >@@ -118,7 +118,7 @@ const ClassInfo JSTestSerializationPrototype::s_info = { "TestSerializationProto > void JSTestSerializationPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestSerializationPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestSerialization::info(), JSTestSerializationPrototypeTableValues, *this); > } > > const ClassInfo JSTestSerialization::s_info = { "TestSerialization", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestSerialization) }; >@@ -165,7 +165,7 @@ static inline JSValue jsTestSerializationFirstStringAttributeGetter(ExecState&, > > EncodedJSValue jsTestSerializationFirstStringAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationFirstStringAttributeGetter>(state, thisValue, "firstStringAttribute"); >+ return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationFirstStringAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "firstStringAttribute"); > } > > static inline JSValue jsTestSerializationFirstStringAttributeGetter(ExecState& state, JSTestSerialization& thisObject, ThrowScope& throwScope) >@@ -181,7 +181,7 @@ static inline JSValue jsTestSerializationSecondLongAttributeGetter(ExecState&, J > > EncodedJSValue jsTestSerializationSecondLongAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationSecondLongAttributeGetter>(state, thisValue, "secondLongAttribute"); >+ return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationSecondLongAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "secondLongAttribute"); > } > > static inline JSValue jsTestSerializationSecondLongAttributeGetter(ExecState& state, JSTestSerialization& thisObject, ThrowScope& throwScope) >@@ -197,7 +197,7 @@ static inline JSValue jsTestSerializationThirdUnserializableAttributeGetter(Exec > > EncodedJSValue jsTestSerializationThirdUnserializableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationThirdUnserializableAttributeGetter>(state, thisValue, "thirdUnserializableAttribute"); >+ return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationThirdUnserializableAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "thirdUnserializableAttribute"); > } > > static inline JSValue jsTestSerializationThirdUnserializableAttributeGetter(ExecState& state, JSTestSerialization& thisObject, ThrowScope& throwScope) >@@ -213,7 +213,7 @@ static inline JSValue jsTestSerializationFourthUnrestrictedDoubleAttributeGetter > > EncodedJSValue jsTestSerializationFourthUnrestrictedDoubleAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationFourthUnrestrictedDoubleAttributeGetter>(state, thisValue, "fourthUnrestrictedDoubleAttribute"); >+ return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationFourthUnrestrictedDoubleAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "fourthUnrestrictedDoubleAttribute"); > } > > static inline JSValue jsTestSerializationFourthUnrestrictedDoubleAttributeGetter(ExecState& state, JSTestSerialization& thisObject, ThrowScope& throwScope) >@@ -229,7 +229,7 @@ static inline JSValue jsTestSerializationFifthLongAttributeGetter(ExecState&, JS > > EncodedJSValue jsTestSerializationFifthLongAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationFifthLongAttributeGetter>(state, thisValue, "fifthLongAttribute"); >+ return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationFifthLongAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "fifthLongAttribute"); > } > > static inline JSValue jsTestSerializationFifthLongAttributeGetter(ExecState& state, JSTestSerialization& thisObject, ThrowScope& throwScope) >@@ -245,7 +245,7 @@ static inline JSValue jsTestSerializationSixthTypedefAttributeGetter(ExecState&, > > EncodedJSValue jsTestSerializationSixthTypedefAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationSixthTypedefAttributeGetter>(state, thisValue, "sixthTypedefAttribute"); >+ return BindingCaller<JSTestSerialization>::attribute<jsTestSerializationSixthTypedefAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "sixthTypedefAttribute"); > } > > static inline JSValue jsTestSerializationSixthTypedefAttributeGetter(ExecState& state, JSTestSerialization& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp >index 12410f5c45c906f569790b39c89b91fb570f8bb8..afeee89872f7ac1a10ab70dd94e1201485e2bd8d 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp >@@ -91,7 +91,7 @@ template<> const ClassInfo JSTestSerializationInheritConstructor::s_info = { "Te > static const HashTableValue JSTestSerializationInheritPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationInheritConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationInheritConstructor) } }, >- { "inheritLongAttribute", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationInheritInheritLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationInheritInheritLongAttribute) } }, >+ { "inheritLongAttribute", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationInheritInheritLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationInheritInheritLongAttribute) } }, > { "toJSON", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestSerializationInheritPrototypeFunctionToJSON), (intptr_t) (0) } }, > }; > >@@ -100,7 +100,7 @@ const ClassInfo JSTestSerializationInheritPrototype::s_info = { "TestSerializati > void JSTestSerializationInheritPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestSerializationInheritPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestSerializationInherit::info(), JSTestSerializationInheritPrototypeTableValues, *this); > } > > const ClassInfo JSTestSerializationInherit::s_info = { "TestSerializationInherit", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestSerializationInherit) }; >@@ -141,7 +141,7 @@ static inline JSValue jsTestSerializationInheritInheritLongAttributeGetter(ExecS > > EncodedJSValue jsTestSerializationInheritInheritLongAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerializationInherit>::attribute<jsTestSerializationInheritInheritLongAttributeGetter>(state, thisValue, "inheritLongAttribute"); >+ return BindingCaller<JSTestSerializationInherit>::attribute<jsTestSerializationInheritInheritLongAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "inheritLongAttribute"); > } > > static inline JSValue jsTestSerializationInheritInheritLongAttributeGetter(ExecState& state, JSTestSerializationInherit& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp >index e626723d36bc621b383ee2527f7701b62e92132c..3a7ee0434dff37e2de6758f323c6de86b51d9d20 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp >@@ -93,8 +93,8 @@ template<> const ClassInfo JSTestSerializationInheritFinalConstructor::s_info = > static const HashTableValue JSTestSerializationInheritFinalPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationInheritFinalConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationInheritFinalConstructor) } }, >- { "finalLongAttributeFoo", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationInheritFinalFinalLongAttributeFoo), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationInheritFinalFinalLongAttributeFoo) } }, >- { "finalLongAttributeBar", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationInheritFinalFinalLongAttributeBar), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationInheritFinalFinalLongAttributeBar) } }, >+ { "finalLongAttributeFoo", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationInheritFinalFinalLongAttributeFoo), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationInheritFinalFinalLongAttributeFoo) } }, >+ { "finalLongAttributeBar", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializationInheritFinalFinalLongAttributeBar), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializationInheritFinalFinalLongAttributeBar) } }, > { "toJSON", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestSerializationInheritFinalPrototypeFunctionToJSON), (intptr_t) (0) } }, > }; > >@@ -103,7 +103,7 @@ const ClassInfo JSTestSerializationInheritFinalPrototype::s_info = { "TestSerial > void JSTestSerializationInheritFinalPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestSerializationInheritFinalPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestSerializationInheritFinal::info(), JSTestSerializationInheritFinalPrototypeTableValues, *this); > } > > const ClassInfo JSTestSerializationInheritFinal::s_info = { "TestSerializationInheritFinal", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestSerializationInheritFinal) }; >@@ -144,7 +144,7 @@ static inline JSValue jsTestSerializationInheritFinalFinalLongAttributeFooGetter > > EncodedJSValue jsTestSerializationInheritFinalFinalLongAttributeFoo(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerializationInheritFinal>::attribute<jsTestSerializationInheritFinalFinalLongAttributeFooGetter>(state, thisValue, "finalLongAttributeFoo"); >+ return BindingCaller<JSTestSerializationInheritFinal>::attribute<jsTestSerializationInheritFinalFinalLongAttributeFooGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "finalLongAttributeFoo"); > } > > static inline JSValue jsTestSerializationInheritFinalFinalLongAttributeFooGetter(ExecState& state, JSTestSerializationInheritFinal& thisObject, ThrowScope& throwScope) >@@ -160,7 +160,7 @@ static inline JSValue jsTestSerializationInheritFinalFinalLongAttributeBarGetter > > EncodedJSValue jsTestSerializationInheritFinalFinalLongAttributeBar(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerializationInheritFinal>::attribute<jsTestSerializationInheritFinalFinalLongAttributeBarGetter>(state, thisValue, "finalLongAttributeBar"); >+ return BindingCaller<JSTestSerializationInheritFinal>::attribute<jsTestSerializationInheritFinalFinalLongAttributeBarGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "finalLongAttributeBar"); > } > > static inline JSValue jsTestSerializationInheritFinalFinalLongAttributeBarGetter(ExecState& state, JSTestSerializationInheritFinal& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp >index 8a41f5ba4ade31ee92afa9c906aaa9305cb0cf8c..9b19617d7a3f994ae3ed0901a269cf3944a1d305 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp >@@ -105,11 +105,11 @@ template<> const ClassInfo JSTestSerializedScriptValueInterfaceConstructor::s_in > static const HashTableValue JSTestSerializedScriptValueInterfacePrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializedScriptValueInterfaceConstructor) } }, >- { "value", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializedScriptValueInterfaceValue) } }, >- { "readonlyValue", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceReadonlyValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "cachedValue", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializedScriptValueInterfaceCachedValue) } }, >- { "ports", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfacePorts), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >- { "cachedReadonlyValue", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedReadonlyValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "value", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializedScriptValueInterfaceValue) } }, >+ { "readonlyValue", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceReadonlyValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "cachedValue", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializedScriptValueInterfaceCachedValue) } }, >+ { "ports", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfacePorts), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "cachedReadonlyValue", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedReadonlyValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > { "function", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestSerializedScriptValueInterfacePrototypeFunctionFunction), (intptr_t) (1) } }, > { "functionReturning", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionReturning), (intptr_t) (0) } }, > }; >@@ -119,7 +119,7 @@ const ClassInfo JSTestSerializedScriptValueInterfacePrototype::s_info = { "TestS > void JSTestSerializedScriptValueInterfacePrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestSerializedScriptValueInterfacePrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestSerializedScriptValueInterface::info(), JSTestSerializedScriptValueInterfacePrototypeTableValues, *this); > } > > const ClassInfo JSTestSerializedScriptValueInterface::s_info = { "TestSerializedScriptValueInterface", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestSerializedScriptValueInterface) }; >@@ -166,7 +166,7 @@ static inline JSValue jsTestSerializedScriptValueInterfaceValueGetter(ExecState& > > EncodedJSValue jsTestSerializedScriptValueInterfaceValue(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfaceValueGetter>(state, thisValue, "value"); >+ return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfaceValueGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "value"); > } > > static inline JSValue jsTestSerializedScriptValueInterfaceValueGetter(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, ThrowScope& throwScope) >@@ -182,7 +182,7 @@ static inline JSValue jsTestSerializedScriptValueInterfaceReadonlyValueGetter(Ex > > EncodedJSValue jsTestSerializedScriptValueInterfaceReadonlyValue(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfaceReadonlyValueGetter>(state, thisValue, "readonlyValue"); >+ return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfaceReadonlyValueGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "readonlyValue"); > } > > static inline JSValue jsTestSerializedScriptValueInterfaceReadonlyValueGetter(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, ThrowScope& throwScope) >@@ -198,7 +198,7 @@ static inline JSValue jsTestSerializedScriptValueInterfaceCachedValueGetter(Exec > > EncodedJSValue jsTestSerializedScriptValueInterfaceCachedValue(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfaceCachedValueGetter>(state, thisValue, "cachedValue"); >+ return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfaceCachedValueGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "cachedValue"); > } > > static inline JSValue jsTestSerializedScriptValueInterfaceCachedValueGetter(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, ThrowScope& throwScope) >@@ -217,7 +217,7 @@ static inline JSValue jsTestSerializedScriptValueInterfacePortsGetter(ExecState& > > EncodedJSValue jsTestSerializedScriptValueInterfacePorts(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfacePortsGetter>(state, thisValue, "ports"); >+ return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfacePortsGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "ports"); > } > > static inline JSValue jsTestSerializedScriptValueInterfacePortsGetter(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, ThrowScope& throwScope) >@@ -233,7 +233,7 @@ static inline JSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValueGet > > EncodedJSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfaceCachedReadonlyValueGetter>(state, thisValue, "cachedReadonlyValue"); >+ return BindingCaller<JSTestSerializedScriptValueInterface>::attribute<jsTestSerializedScriptValueInterfaceCachedReadonlyValueGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "cachedReadonlyValue"); > } > > static inline JSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValueGetter(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp >index dc679bbd468d71db5ef7748ba4ae8182917de13a..115dbd51f5f61e3a284cedcfb25f2e7abb0497d1 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp >@@ -161,7 +161,7 @@ template<> void JSTestTypedefsConstructor::initializeProperties(VM& vm, JSDOMGlo > putDirect(vm, vm.propertyNames->prototype, JSTestTypedefs::prototype(vm, globalObject), DontDelete | ReadOnly | DontEnum); > putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String(ASCIILiteral("TestTypedefs"))), ReadOnly | DontEnum); > putDirect(vm, vm.propertyNames->length, jsNumber(3), ReadOnly | DontEnum); >- reifyStaticProperties(vm, JSTestTypedefsConstructorTableValues, *this); >+ reifyStaticProperties(vm, JSTestTypedefsConstructor::info(), JSTestTypedefsConstructorTableValues, *this); > } > > template<> const ClassInfo JSTestTypedefsConstructor::s_info = { "TestTypedefs", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestTypedefsConstructor) }; >@@ -171,14 +171,14 @@ template<> const ClassInfo JSTestTypedefsConstructor::s_info = { "TestTypedefs", > static const HashTableValue JSTestTypedefsPrototypeTableValues[] = > { > { "constructor", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsConstructor) } }, >- { "unsignedLongLongAttr", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsUnsignedLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsUnsignedLongLongAttr) } }, >- { "serializedScriptValue", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsSerializedScriptValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsSerializedScriptValue) } }, >- { "attributeWithClamp", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsAttributeWithClamp), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsAttributeWithClamp) } }, >- { "attributeWithClampInTypedef", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsAttributeWithClampInTypedef), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsAttributeWithClampInTypedef) } }, >- { "attrWithGetterException", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsAttrWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsAttrWithGetterException) } }, >- { "attrWithSetterException", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsAttrWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsAttrWithSetterException) } }, >- { "stringAttrWithGetterException", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsStringAttrWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsStringAttrWithGetterException) } }, >- { "stringAttrWithSetterException", CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsStringAttrWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsStringAttrWithSetterException) } }, >+ { "unsignedLongLongAttr", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsUnsignedLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsUnsignedLongLongAttr) } }, >+ { "serializedScriptValue", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsSerializedScriptValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsSerializedScriptValue) } }, >+ { "attributeWithClamp", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsAttributeWithClamp), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsAttributeWithClamp) } }, >+ { "attributeWithClampInTypedef", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsAttributeWithClampInTypedef), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsAttributeWithClampInTypedef) } }, >+ { "attrWithGetterException", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsAttrWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsAttrWithGetterException) } }, >+ { "attrWithSetterException", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsAttrWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsAttrWithSetterException) } }, >+ { "stringAttrWithGetterException", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsStringAttrWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsStringAttrWithGetterException) } }, >+ { "stringAttrWithSetterException", CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsStringAttrWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsStringAttrWithSetterException) } }, > { "func", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestTypedefsPrototypeFunctionFunc), (intptr_t) (0) } }, > { "setShadow", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestTypedefsPrototypeFunctionSetShadow), (intptr_t) (3) } }, > { "methodWithSequenceArg", JSC::Function, NoIntrinsic, { (intptr_t)static_cast<NativeFunction>(jsTestTypedefsPrototypeFunctionMethodWithSequenceArg), (intptr_t) (1) } }, >@@ -201,7 +201,7 @@ const ClassInfo JSTestTypedefsPrototype::s_info = { "TestTypedefsPrototype", &Ba > void JSTestTypedefsPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestTypedefsPrototypeTableValues, *this); >+ reifyStaticProperties(vm, JSTestTypedefs::info(), JSTestTypedefsPrototypeTableValues, *this); > } > > const ClassInfo JSTestTypedefs::s_info = { "TestTypedefs", &Base::s_info, &JSTestTypedefsTable, CREATE_METHOD_TABLE(JSTestTypedefs) }; >@@ -248,7 +248,7 @@ static inline JSValue jsTestTypedefsUnsignedLongLongAttrGetter(ExecState&, JSTes > > EncodedJSValue jsTestTypedefsUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsUnsignedLongLongAttrGetter>(state, thisValue, "unsignedLongLongAttr"); >+ return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsUnsignedLongLongAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "unsignedLongLongAttr"); > } > > static inline JSValue jsTestTypedefsUnsignedLongLongAttrGetter(ExecState& state, JSTestTypedefs& thisObject, ThrowScope& throwScope) >@@ -264,7 +264,7 @@ static inline JSValue jsTestTypedefsSerializedScriptValueGetter(ExecState&, JSTe > > EncodedJSValue jsTestTypedefsSerializedScriptValue(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsSerializedScriptValueGetter>(state, thisValue, "serializedScriptValue"); >+ return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsSerializedScriptValueGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "serializedScriptValue"); > } > > static inline JSValue jsTestTypedefsSerializedScriptValueGetter(ExecState& state, JSTestTypedefs& thisObject, ThrowScope& throwScope) >@@ -294,7 +294,7 @@ static inline JSValue jsTestTypedefsAttributeWithClampGetter(ExecState&, JSTestT > > EncodedJSValue jsTestTypedefsAttributeWithClamp(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsAttributeWithClampGetter>(state, thisValue, "attributeWithClamp"); >+ return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsAttributeWithClampGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attributeWithClamp"); > } > > static inline JSValue jsTestTypedefsAttributeWithClampGetter(ExecState& state, JSTestTypedefs& thisObject, ThrowScope& throwScope) >@@ -310,7 +310,7 @@ static inline JSValue jsTestTypedefsAttributeWithClampInTypedefGetter(ExecState& > > EncodedJSValue jsTestTypedefsAttributeWithClampInTypedef(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsAttributeWithClampInTypedefGetter>(state, thisValue, "attributeWithClampInTypedef"); >+ return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsAttributeWithClampInTypedefGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attributeWithClampInTypedef"); > } > > static inline JSValue jsTestTypedefsAttributeWithClampInTypedefGetter(ExecState& state, JSTestTypedefs& thisObject, ThrowScope& throwScope) >@@ -326,7 +326,7 @@ static inline JSValue jsTestTypedefsAttrWithGetterExceptionGetter(ExecState&, JS > > EncodedJSValue jsTestTypedefsAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsAttrWithGetterExceptionGetter>(state, thisValue, "attrWithGetterException"); >+ return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsAttrWithGetterExceptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attrWithGetterException"); > } > > static inline JSValue jsTestTypedefsAttrWithGetterExceptionGetter(ExecState& state, JSTestTypedefs& thisObject, ThrowScope& throwScope) >@@ -342,7 +342,7 @@ static inline JSValue jsTestTypedefsAttrWithSetterExceptionGetter(ExecState&, JS > > EncodedJSValue jsTestTypedefsAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsAttrWithSetterExceptionGetter>(state, thisValue, "attrWithSetterException"); >+ return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsAttrWithSetterExceptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "attrWithSetterException"); > } > > static inline JSValue jsTestTypedefsAttrWithSetterExceptionGetter(ExecState& state, JSTestTypedefs& thisObject, ThrowScope& throwScope) >@@ -358,7 +358,7 @@ static inline JSValue jsTestTypedefsStringAttrWithGetterExceptionGetter(ExecStat > > EncodedJSValue jsTestTypedefsStringAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsStringAttrWithGetterExceptionGetter>(state, thisValue, "stringAttrWithGetterException"); >+ return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsStringAttrWithGetterExceptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringAttrWithGetterException"); > } > > static inline JSValue jsTestTypedefsStringAttrWithGetterExceptionGetter(ExecState& state, JSTestTypedefs& thisObject, ThrowScope& throwScope) >@@ -374,7 +374,7 @@ static inline JSValue jsTestTypedefsStringAttrWithSetterExceptionGetter(ExecStat > > EncodedJSValue jsTestTypedefsStringAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsStringAttrWithSetterExceptionGetter>(state, thisValue, "stringAttrWithSetterException"); >+ return BindingCaller<JSTestTypedefs>::attribute<jsTestTypedefsStringAttrWithSetterExceptionGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "stringAttrWithSetterException"); > } > > static inline JSValue jsTestTypedefsStringAttrWithSetterExceptionGetter(ExecState& state, JSTestTypedefs& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/dom/Document.idl b/Source/WebCore/dom/Document.idl >index 1088cbe1ffc459a4a3839d2cbe420c8a447e0ad6..492935cd6a8a0a33cafd7cf72993a12bfbb778f9 100644 >--- a/Source/WebCore/dom/Document.idl >+++ b/Source/WebCore/dom/Document.idl >@@ -22,6 +22,7 @@ > Constructor, > ConstructorCallWith=Document, > CustomToJSObject, >+ DOMJIT, > ExportMacro=WEBCORE_EXPORT, > JSCustomHeader, > JSCustomMarkFunction, >diff --git a/Source/WebCore/dom/DocumentFragment.idl b/Source/WebCore/dom/DocumentFragment.idl >index c6748a8538966f4805b0e282028c2f8f42841533..402c5ba01a82456f88df4ea3ee0652ed2caac7e8 100644 >--- a/Source/WebCore/dom/DocumentFragment.idl >+++ b/Source/WebCore/dom/DocumentFragment.idl >@@ -20,7 +20,8 @@ > [ > Constructor, > ConstructorCallWith=Document, >- CustomToJSObject >+ CustomToJSObject, >+ DOMJIT, > ] interface DocumentFragment : Node { > }; > >diff --git a/Source/WebCore/dom/Element.idl b/Source/WebCore/dom/Element.idl >index 7a60a3bf07b5461952e0daa01acdd538ccd86ad5..79eabb6f1fee7bb182cfc119cc9288e06b7a0845 100644 >--- a/Source/WebCore/dom/Element.idl >+++ b/Source/WebCore/dom/Element.idl >@@ -20,6 +20,7 @@ > > [ > CustomToJSObject, >+ DOMJIT, > JSCustomHeader, > JSGenerateToNativeObject, > ExportMacro=WEBCORE_EXPORT, >diff --git a/Source/WebCore/dom/Event.idl b/Source/WebCore/dom/Event.idl >index 6f790e1cf89b4e455b0a4fb202361f60a712f030..e0c62fafe90a2e6a6951924c56b07b7cadb6bf36 100644 >--- a/Source/WebCore/dom/Event.idl >+++ b/Source/WebCore/dom/Event.idl >@@ -25,6 +25,7 @@ typedef unsigned long long DOMTimeStamp; > [ > Constructor(DOMString type, optional EventInit eventInitDict), > CustomToJSObject, >+ DOMJIT, > ExportToWrappedFunction, > Exposed=(Window,Worker), > JSCustomHeader, >diff --git a/Source/WebCore/dom/Node.idl b/Source/WebCore/dom/Node.idl >index c93e25bb245848cd4a6aabac81bfa2f8ecdc0417..deee2f8997131ceb22ea17e23f2a91480585be4a 100644 >--- a/Source/WebCore/dom/Node.idl >+++ b/Source/WebCore/dom/Node.idl >@@ -21,6 +21,7 @@ > [ > CustomIsReachable, > CustomToJSObject, >+ DOMJIT, > ExportMacro=WEBCORE_EXPORT, > JSCustomHeader, > JSCustomMarkFunction, >diff --git a/Source/WebCore/domjit/DOMJITIDLTypeFilter.h b/Source/WebCore/domjit/DOMJITIDLTypeFilter.h >index 7b71e5df2686c698410f66c020f45222154cc140..c18bfb3b5a881178f5c879412d087ec6c139ab3f 100644 >--- a/Source/WebCore/domjit/DOMJITIDLTypeFilter.h >+++ b/Source/WebCore/domjit/DOMJITIDLTypeFilter.h >@@ -25,6 +25,7 @@ > > #pragma once > >+#include "IDLTypes.h" > #include <bytecode/SpeculatedType.h> > > namespace WebCore { namespace DOMJIT { >diff --git a/Source/WebCore/domjit/JSDocumentDOMJIT.cpp b/Source/WebCore/domjit/JSDocumentDOMJIT.cpp >index d1a258fb90f2159e04c7171fed18b9d7fef04858..269d55ceaf6b8a122b2a3f2ccf4a78fe88e6498b 100644 >--- a/Source/WebCore/domjit/JSDocumentDOMJIT.cpp >+++ b/Source/WebCore/domjit/JSDocumentDOMJIT.cpp >@@ -42,12 +42,12 @@ using namespace JSC; > > namespace WebCore { > >-Ref<JSC::DOMJIT::Patchpoint> DocumentDocumentElementDOMJIT::checkDOM() >+RefPtr<JSC::DOMJIT::Patchpoint> DocumentInterfaceDOMJIT::checkDOM() const > { > return DOMJIT::checkDOM<Document>(); > } > >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> DocumentDocumentElementDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> DocumentDocumentElementAttributeDOMJIT::callDOMGetter() const > { > Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> patchpoint = JSC::DOMJIT::CallDOMGetterPatchpoint::create(); > patchpoint->numGPScratchRegisters = 1; >@@ -74,18 +74,13 @@ Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> DocumentDocumentElementDOMJIT::callDOM > return patchpoint; > } > >-Ref<JSC::DOMJIT::Patchpoint> DocumentBodyDOMJIT::checkDOM() >-{ >- return DOMJIT::checkDOM<Document>(); >-} >- > static void loadLocalName(CCallHelpers& jit, GPRReg htmlElement, GPRReg localNameImpl) > { > jit.loadPtr(CCallHelpers::Address(htmlElement, Element::tagQNameMemoryOffset() + QualifiedName::implMemoryOffset()), localNameImpl); > jit.loadPtr(CCallHelpers::Address(localNameImpl, QualifiedName::QualifiedNameImpl::localNameMemoryOffset()), localNameImpl); > } > >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> DocumentBodyDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> DocumentBodyAttributeDOMJIT::callDOMGetter() const > { > Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> patchpoint = JSC::DOMJIT::CallDOMGetterPatchpoint::create(); > patchpoint->numGPScratchRegisters = 2; >diff --git a/Source/WebCore/domjit/JSDocumentFragmentDOMJIT.cpp b/Source/WebCore/domjit/JSDocumentFragmentDOMJIT.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..97df876019c75ace134fa4709f0344abb92fa816 >--- /dev/null >+++ b/Source/WebCore/domjit/JSDocumentFragmentDOMJIT.cpp >@@ -0,0 +1,46 @@ >+/* >+ * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "JSDocumentFragment.h" >+ >+#if ENABLE(JIT) >+ >+#include "DOMJITCheckDOM.h" >+ >+using namespace JSC; >+ >+namespace WebCore { >+ >+#if 0 >+RefPtr<JSC::DOMJIT::Patchpoint> DocumentFragmentInterfaceDOMJIT::checkDOM() const >+{ >+ return DOMJIT::checkDOM<DocumentFragment>(); >+} >+#endif >+ >+} >+ >+#endif >diff --git a/Source/WebCore/domjit/JSElementDOMJIT.cpp b/Source/WebCore/domjit/JSElementDOMJIT.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..dacda81601b296c93a6a64f8b26bc30aa527fc5a >--- /dev/null >+++ b/Source/WebCore/domjit/JSElementDOMJIT.cpp >@@ -0,0 +1,46 @@ >+/* >+ * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "JSElement.h" >+ >+#if ENABLE(JIT) >+ >+#include "DOMJITCheckDOM.h" >+ >+using namespace JSC; >+ >+namespace WebCore { >+ >+#if 0 >+RefPtr<JSC::DOMJIT::Patchpoint> ElementInterfaceDOMJIT::checkDOM() const >+{ >+ return DOMJIT::checkDOM<Element>(); >+} >+#endif >+ >+} >+ >+#endif >diff --git a/Source/WebCore/domjit/JSEventDOMJIT.cpp b/Source/WebCore/domjit/JSEventDOMJIT.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..80b9c870c9b128f60446980a7855e92596c61960 >--- /dev/null >+++ b/Source/WebCore/domjit/JSEventDOMJIT.cpp >@@ -0,0 +1,46 @@ >+/* >+ * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "JSEvent.h" >+ >+#if ENABLE(JIT) >+ >+#include "DOMJITCheckDOM.h" >+ >+using namespace JSC; >+ >+namespace WebCore { >+ >+#if 0 >+RefPtr<JSC::DOMJIT::Patchpoint> EventInterfaceDOMJIT::checkDOM() const >+{ >+ return DOMJIT::checkDOM<Event>(); >+} >+#endif >+ >+} >+ >+#endif >diff --git a/Source/WebCore/domjit/JSNodeDOMJIT.cpp b/Source/WebCore/domjit/JSNodeDOMJIT.cpp >index 29f8b384e5621c445adf49de1a060aa8109ee9a7..27883128f171fa1a3fc9b7a0c1479094313c256f 100644 >--- a/Source/WebCore/domjit/JSNodeDOMJIT.cpp >+++ b/Source/WebCore/domjit/JSNodeDOMJIT.cpp >@@ -76,72 +76,47 @@ static Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> createCallDOMGetterForOffsetAcc > return patchpoint; > } > >-Ref<JSC::DOMJIT::Patchpoint> NodeFirstChildDOMJIT::checkDOM() >+RefPtr<JSC::DOMJIT::Patchpoint> NodeInterfaceDOMJIT::checkDOM() const > { > return DOMJIT::checkDOM<Node>(); > } > >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeFirstChildDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeFirstChildAttributeDOMJIT::callDOMGetter() const > { > auto patchpoint = createCallDOMGetterForOffsetAccess<Node>(CAST_OFFSET(Node*, ContainerNode*) + ContainerNode::firstChildMemoryOffset(), IsContainerGuardRequirement::Required); > patchpoint->effect = JSC::DOMJIT::Effect::forDef(DOMJIT::AbstractHeapRepository::Node_firstChild); > return patchpoint; > } > >-Ref<JSC::DOMJIT::Patchpoint> NodeLastChildDOMJIT::checkDOM() >-{ >- return DOMJIT::checkDOM<Node>(); >-} >- >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeLastChildDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeLastChildAttributeDOMJIT::callDOMGetter() const > { > auto patchpoint = createCallDOMGetterForOffsetAccess<Node>(CAST_OFFSET(Node*, ContainerNode*) + ContainerNode::lastChildMemoryOffset(), IsContainerGuardRequirement::Required); > patchpoint->effect = JSC::DOMJIT::Effect::forDef(DOMJIT::AbstractHeapRepository::Node_lastChild); > return patchpoint; > } > >-Ref<JSC::DOMJIT::Patchpoint> NodeNextSiblingDOMJIT::checkDOM() >-{ >- return DOMJIT::checkDOM<Node>(); >-} >- >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeNextSiblingDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeNextSiblingAttributeDOMJIT::callDOMGetter() const > { > auto patchpoint = createCallDOMGetterForOffsetAccess<Node>(Node::nextSiblingMemoryOffset(), IsContainerGuardRequirement::NotRequired); > patchpoint->effect = JSC::DOMJIT::Effect::forDef(DOMJIT::AbstractHeapRepository::Node_nextSibling); > return patchpoint; > } > >-Ref<JSC::DOMJIT::Patchpoint> NodePreviousSiblingDOMJIT::checkDOM() >-{ >- return DOMJIT::checkDOM<Node>(); >-} >- >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> NodePreviousSiblingDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> NodePreviousSiblingAttributeDOMJIT::callDOMGetter() const > { > auto patchpoint = createCallDOMGetterForOffsetAccess<Node>(Node::previousSiblingMemoryOffset(), IsContainerGuardRequirement::NotRequired); > patchpoint->effect = JSC::DOMJIT::Effect::forDef(DOMJIT::AbstractHeapRepository::Node_previousSibling); > return patchpoint; > } > >-Ref<JSC::DOMJIT::Patchpoint> NodeParentNodeDOMJIT::checkDOM() >-{ >- return DOMJIT::checkDOM<Node>(); >-} >- >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeParentNodeDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeParentNodeAttributeDOMJIT::callDOMGetter() const > { > auto patchpoint = createCallDOMGetterForOffsetAccess<ContainerNode>(Node::parentNodeMemoryOffset(), IsContainerGuardRequirement::NotRequired); > patchpoint->effect = JSC::DOMJIT::Effect::forDef(DOMJIT::AbstractHeapRepository::Node_parentNode); > return patchpoint; > } > >-Ref<JSC::DOMJIT::Patchpoint> NodeNodeTypeDOMJIT::checkDOM() >-{ >- return DOMJIT::checkDOM<Node>(); >-} >- >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeNodeTypeDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeNodeTypeAttributeDOMJIT::callDOMGetter() const > { > Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> patchpoint = JSC::DOMJIT::CallDOMGetterPatchpoint::create(); > patchpoint->effect = JSC::DOMJIT::Effect::forPure(); >@@ -157,12 +132,7 @@ Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeNodeTypeDOMJIT::callDOMGetter() > return patchpoint; > } > >-Ref<JSC::DOMJIT::Patchpoint> NodeOwnerDocumentDOMJIT::checkDOM() >-{ >- return DOMJIT::checkDOM<Node>(); >-} >- >-Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeOwnerDocumentDOMJIT::callDOMGetter() >+RefPtr<JSC::DOMJIT::CallDOMGetterPatchpoint> NodeOwnerDocumentAttributeDOMJIT::callDOMGetter() const > { > Ref<JSC::DOMJIT::CallDOMGetterPatchpoint> patchpoint = JSC::DOMJIT::CallDOMGetterPatchpoint::create(); > patchpoint->numGPScratchRegisters = 2; >diff --git a/JSTests/ChangeLog b/JSTests/ChangeLog >index 53521e92031b524a62887f959caec74d6913a6b6..75335b4d7eaa3ffc125e6e8bd39e2eb074e8141a 100644 >--- a/JSTests/ChangeLog >+++ b/JSTests/ChangeLog >@@ -1,3 +1,14 @@ >+2017-05-12 Yusuke Suzuki <utatane.tea@gmail.com> >+ >+ Hoist DOM binding attribute getter/setter prologue into JavaScriptCore taking advantage of DOMJIT / CheckDOM >+ https://bugs.webkit.org/show_bug.cgi?id=171637 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * stress/domjit-getter-type-check.js: Added. >+ (shouldBe): >+ (i.shouldThrow): >+ > 2017-05-11 JF Bastien <jfbastien@apple.com> > > WebAssembly: stop supporting 0xD >diff --git a/JSTests/stress/domjit-getter-type-check.js b/JSTests/stress/domjit-getter-type-check.js >new file mode 100644 >index 0000000000000000000000000000000000000000..d76433236766dbc16a57cddfa8e8097db9f1f36d >--- /dev/null >+++ b/JSTests/stress/domjit-getter-type-check.js >@@ -0,0 +1,26 @@ >+function shouldBe(actual, expected) { >+ if (actual !== expected) >+ throw new Error(`bad value: ${String(actual)}`); >+} >+ >+function shouldThrow(func, errorMessage) { >+ var errorThrown = false; >+ var error = null; >+ try { >+ func(); >+ } catch (e) { >+ errorThrown = true; >+ error = e; >+ } >+ if (!errorThrown) >+ throw new Error('not thrown'); >+ if (String(error) !== errorMessage) >+ throw new Error(`bad error: ${String(error)}`); >+} >+ >+var domjit = createDOMJITGetterObject(); >+for (var i = 0; i < 1e3; ++i) { >+ shouldThrow(() => { >+ Reflect.get(domjit, 'customGetter', { customGetter: 42 }); >+ }, `TypeError: The DOMJITNode.customGetter getter can only be used on instances of DOMJITNode`); >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 171637
:
309891
|
309893
|
309900
|
310021
|
310103
|
311424
|
311436
|
311437
|
311438
|
311439
|
311440
|
311441
|
311442
|
311443
|
311444
|
311445
|
311446
|
311448
|
311450
|
311468
|
311472
|
311473
|
311492
|
311495
|
311810
|
311958
|
311984
|
311999
|
316545