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-20170515095820.patch (text/plain), 523.75 KB, created by
Yusuke Suzuki
on 2017-05-14 17:58:22 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2017-05-14 17:58:22 PDT
Size:
523.75 KB
patch
obsolete
>Subversion Revision: 216734 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index a06087b4841b76d965a69412c4b0f22c933af32e..7ad34e9c0bf3db3b974ac7a03cda03b6ebab0b52 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,148 @@ >+2017-05-14 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. >+ * create_hash_table: >+ * 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.cpp: >+ (JSC::callCustomSetterAfterTypeCheck): >+ (JSC::callCustomSetter): >+ * runtime/CustomGetterSetter.h: >+ (JSC::CustomGetterSetter::create): >+ (JSC::CustomGetterSetter::setter): >+ (JSC::CustomGetterSetter::CustomGetterSetter): >+ (): Deleted. >+ * runtime/DOMAnnotation.h: Copied from Source/JavaScriptCore/runtime/CustomGetterSetter.cpp. >+ (JSC::operator==): >+ (JSC::operator!=): >+ * runtime/DOMAttributeGetterSetter.cpp: Copied from Source/JavaScriptCore/runtime/CustomGetterSetter.cpp. >+ * runtime/DOMAttributeGetterSetter.h: Copied from Source/JavaScriptCore/runtime/CustomGetterSetter.h. >+ (JSC::isDOMAttributeGetterSetter): >+ * runtime/Error.cpp: >+ (JSC::throwDOMAttributeGetterTypeError): >+ * runtime/Error.h: >+ (JSC::throwVMDOMAttributeGetterTypeError): >+ * runtime/JSCJSValue.cpp: >+ (JSC::JSValue::putToPrimitive): >+ * runtime/JSCustomGetterSetterFunction.cpp: >+ (JSC::JSCustomGetterSetterFunction::customGetterSetterFunctionCall): >+ * runtime/JSObject.cpp: >+ (JSC::JSObject::putInlineSlow): >+ (JSC::JSObject::deleteProperty): >+ (JSC::JSObject::getOwnStaticPropertySlot): >+ (JSC::JSObject::findPropertyHashEntry): >+ (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::propertyGetter): >+ (JSC::HashTableValue::propertyPutter): >+ (JSC::HashTableValue::domJIT): >+ (JSC::getStaticPropertySlotFromTable): >+ (JSC::putEntry): >+ (JSC::lookupPut): >+ (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..95ef63740445a74c883e32f78d5ea8fd9369f829 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,477 @@ >+2017-05-14 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: >+ * bindings/js/JSDOMBindingCaller.h: >+ (WebCore::BindingCaller::setAttribute): >+ (WebCore::BindingCaller::attribute): >+ * bindings/scripts/CodeGeneratorJS.pm: >+ (IsAcceleratedDOMAttribute): >+ (GetJSCAttributesForAttribute): >+ (GenerateHeader): >+ (GeneratePropertiesHashTable): >+ (GenerateImplementation): >+ (GenerateCallbackImplementationContent): >+ (GenerateHashTableValueArray): >+ (GenerateHashTable): >+ (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): >+ (WebCore::jsTestActiveDOMObjectExcitingAttr): >+ * bindings/scripts/test/JS/JSTestCEReactions.cpp: >+ (WebCore::JSTestCEReactionsPrototype::finishCreation): >+ (WebCore::jsTestCEReactionsAttributeWithCEReactions): >+ (WebCore::jsTestCEReactionsReflectAttributeWithCEReactions): >+ (WebCore::jsTestCEReactionsStringifierAttribute): >+ (WebCore::setJSTestCEReactionsAttributeWithCEReactions): >+ (WebCore::setJSTestCEReactionsReflectAttributeWithCEReactions): >+ (WebCore::setJSTestCEReactionsStringifierAttribute): >+ * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: >+ (WebCore::JSTestCEReactionsStringifierPrototype::finishCreation): >+ (WebCore::jsTestCEReactionsStringifierValue): >+ (WebCore::setJSTestCEReactionsStringifierValue): >+ * 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): >+ (WebCore::jsTestExceptionName): >+ * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: >+ (WebCore::JSTestGenerateIsReachablePrototype::finishCreation): >+ * bindings/scripts/test/JS/JSTestInterface.cpp: >+ (WebCore::JSTestInterfacePrototype::finishCreation): >+ (WebCore::jsTestInterfaceImplementsStr1): >+ (WebCore::jsTestInterfaceImplementsStr2): >+ (WebCore::jsTestInterfaceImplementsStr3): >+ (WebCore::jsTestInterfaceImplementsNode): >+ (WebCore::jsTestInterfaceSupplementalStr1): >+ (WebCore::jsTestInterfaceSupplementalStr2): >+ (WebCore::jsTestInterfaceSupplementalStr3): >+ (WebCore::jsTestInterfaceSupplementalNode): >+ (WebCore::setJSTestInterfaceImplementsStr2): >+ (WebCore::setJSTestInterfaceImplementsStr3): >+ (WebCore::setJSTestInterfaceImplementsNode): >+ (WebCore::setJSTestInterfaceSupplementalStr2): >+ (WebCore::setJSTestInterfaceSupplementalStr3): >+ (WebCore::setJSTestInterfaceSupplementalNode): >+ * 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): >+ (WebCore::setJSTestJSBuiltinConstructorTestAttributeRWCustom): >+ * 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): >+ (WebCore::setJSTestNodeName): >+ * bindings/scripts/test/JS/JSTestObj.cpp: >+ (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::jsTestObjUnforgeableAttr): >+ (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::jsTestObjEnabledAtRuntimeAttribute): >+ (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): >+ (WebCore::setJSTestObjEnumAttr): >+ (WebCore::setJSTestObjByteAttr): >+ (WebCore::setJSTestObjOctetAttr): >+ (WebCore::setJSTestObjShortAttr): >+ (WebCore::setJSTestObjClampedShortAttr): >+ (WebCore::setJSTestObjEnforceRangeShortAttr): >+ (WebCore::setJSTestObjUnsignedShortAttr): >+ (WebCore::setJSTestObjLongAttr): >+ (WebCore::setJSTestObjLongLongAttr): >+ (WebCore::setJSTestObjUnsignedLongLongAttr): >+ (WebCore::setJSTestObjStringAttr): >+ (WebCore::setJSTestObjUsvstringAttr): >+ (WebCore::setJSTestObjTestObjAttr): >+ (WebCore::setJSTestObjTestNullableObjAttr): >+ (WebCore::setJSTestObjStringAttrTreatingNullAsEmptyString): >+ (WebCore::setJSTestObjUsvstringAttrTreatingNullAsEmptyString): >+ (WebCore::setJSTestObjByteStringAttrTreatingNullAsEmptyString): >+ (WebCore::setJSTestObjStringLongRecordAttr): >+ (WebCore::setJSTestObjUsvstringLongRecordAttr): >+ (WebCore::setJSTestObjStringObjRecordAttr): >+ (WebCore::setJSTestObjStringNullableObjRecordAttr): >+ (WebCore::setJSTestObjDictionaryAttr): >+ (WebCore::setJSTestObjNullableDictionaryAttr): >+ (WebCore::setJSTestObjAnnotatedTypeInUnionAttr): >+ (WebCore::setJSTestObjAnnotatedTypeInSequenceAttr): >+ (WebCore::setJSTestObjImplementationEnumAttr): >+ (WebCore::setJSTestObjXMLObjAttr): >+ (WebCore::setJSTestObjCreate): >+ (WebCore::setJSTestObjReflectedStringAttr): >+ (WebCore::setJSTestObjReflectedUSVStringAttr): >+ (WebCore::setJSTestObjReflectedIntegralAttr): >+ (WebCore::setJSTestObjReflectedUnsignedIntegralAttr): >+ (WebCore::setJSTestObjReflectedBooleanAttr): >+ (WebCore::setJSTestObjReflectedURLAttr): >+ (WebCore::setJSTestObjReflectedUSVURLAttr): >+ (WebCore::setJSTestObjReflectedCustomIntegralAttr): >+ (WebCore::setJSTestObjReflectedCustomBooleanAttr): >+ (WebCore::setJSTestObjReflectedCustomURLAttr): >+ (WebCore::setJSTestObjEnabledAtRuntimeAttribute): >+ (WebCore::setJSTestObjEnabledBySettingAttribute): >+ (WebCore::setJSTestObjTypedArrayAttr): >+ (WebCore::setJSTestObjAttributeWithGetterException): >+ (WebCore::setJSTestObjAttributeWithSetterException): >+ (WebCore::setJSTestObjStringAttrWithGetterException): >+ (WebCore::setJSTestObjStringAttrWithSetterException): >+ (WebCore::setJSTestObjCustomAttr): >+ (WebCore::setJSTestObjOnfoo): >+ (WebCore::setJSTestObjOnwebkitfoo): >+ (WebCore::setJSTestObjWithScriptStateAttribute): >+ (WebCore::setJSTestObjWithCallWithAndSetterCallWithAttribute): >+ (WebCore::setJSTestObjWithScriptExecutionContextAttribute): >+ (WebCore::setJSTestObjWithScriptStateAttributeRaises): >+ (WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises): >+ (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute): >+ (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises): >+ (WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute): >+ (WebCore::setJSTestObjWithScriptArgumentsAndCallStackAttribute): >+ (WebCore::setJSTestObjConditionalAttr1): >+ (WebCore::setJSTestObjConditionalAttr2): >+ (WebCore::setJSTestObjConditionalAttr3): >+ (WebCore::setJSTestObjAnyAttribute): >+ (WebCore::setJSTestObjObjectAttribute): >+ (WebCore::setJSTestObjMutablePoint): >+ (WebCore::setJSTestObjStrawberry): >+ (WebCore::setJSTestObjId): >+ (WebCore::setJSTestObjReplaceableAttribute): >+ (WebCore::setJSTestObjNullableLongSettableAttribute): >+ (WebCore::setJSTestObjNullableStringSettableAttribute): >+ (WebCore::setJSTestObjNullableUSVStringSettableAttribute): >+ (WebCore::setJSTestObjNullableByteStringSettableAttribute): >+ (WebCore::setJSTestObjNullableStringValue): >+ (WebCore::setJSTestObjAttributeWithReservedEnumType): >+ (WebCore::setJSTestObjPutForwardsAttribute): >+ (WebCore::setJSTestObjPutForwardsNullableAttribute): >+ (WebCore::setJSTestObjStringifierAttribute): >+ * 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): >+ (WebCore::setJSTestSerializationFirstStringAttribute): >+ (WebCore::setJSTestSerializationSecondLongAttribute): >+ (WebCore::setJSTestSerializationThirdUnserializableAttribute): >+ (WebCore::setJSTestSerializationFourthUnrestrictedDoubleAttribute): >+ (WebCore::setJSTestSerializationFifthLongAttribute): >+ (WebCore::setJSTestSerializationSixthTypedefAttribute): >+ * bindings/scripts/test/JS/JSTestSerializationInherit.cpp: >+ (WebCore::JSTestSerializationInheritPrototype::finishCreation): >+ (WebCore::jsTestSerializationInheritInheritLongAttribute): >+ (WebCore::setJSTestSerializationInheritInheritLongAttribute): >+ * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp: >+ (WebCore::JSTestSerializationInheritFinalPrototype::finishCreation): >+ (WebCore::jsTestSerializationInheritFinalFinalLongAttributeFoo): >+ (WebCore::jsTestSerializationInheritFinalFinalLongAttributeBar): >+ (WebCore::setJSTestSerializationInheritFinalFinalLongAttributeFoo): >+ (WebCore::setJSTestSerializationInheritFinalFinalLongAttributeBar): >+ * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: >+ (WebCore::JSTestSerializedScriptValueInterfacePrototype::finishCreation): >+ (WebCore::jsTestSerializedScriptValueInterfaceValue): >+ (WebCore::jsTestSerializedScriptValueInterfaceReadonlyValue): >+ (WebCore::jsTestSerializedScriptValueInterfaceCachedValue): >+ (WebCore::jsTestSerializedScriptValueInterfacePorts): >+ (WebCore::jsTestSerializedScriptValueInterfaceCachedReadonlyValue): >+ (WebCore::setJSTestSerializedScriptValueInterfaceValue): >+ (WebCore::setJSTestSerializedScriptValueInterfaceCachedValue): >+ * bindings/scripts/test/JS/JSTestTypedefs.cpp: >+ (WebCore::JSTestTypedefsPrototype::finishCreation): >+ (WebCore::jsTestTypedefsUnsignedLongLongAttr): >+ (WebCore::jsTestTypedefsSerializedScriptValue): >+ (WebCore::jsTestTypedefsAttributeWithClamp): >+ (WebCore::jsTestTypedefsAttributeWithClampInTypedef): >+ (WebCore::jsTestTypedefsAttrWithGetterException): >+ (WebCore::jsTestTypedefsAttrWithSetterException): >+ (WebCore::jsTestTypedefsStringAttrWithGetterException): >+ (WebCore::jsTestTypedefsStringAttrWithSetterException): >+ (WebCore::setJSTestTypedefsUnsignedLongLongAttr): >+ (WebCore::setJSTestTypedefsSerializedScriptValue): >+ (WebCore::setJSTestTypedefsAttributeWithClamp): >+ (WebCore::setJSTestTypedefsAttributeWithClampInTypedef): >+ (WebCore::setJSTestTypedefsAttrWithGetterException): >+ (WebCore::setJSTestTypedefsAttrWithSetterException): >+ (WebCore::setJSTestTypedefsStringAttrWithGetterException): >+ (WebCore::setJSTestTypedefsStringAttrWithSetterException): >+ * 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..edfcc0178c48248f16101910293f0e737a4a899a 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 ((m_type == CustomAccessorGetter || m_type == CustomAccessorSetter) && 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 (Options::useDOMJIT() && m_type == CustomAccessorGetter && 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/create_hash_table b/Source/JavaScriptCore/create_hash_table >index d020f02db0e22b9e3d2189f094ed185a4aa9adaf..0a41473e411e3cc58f2008f6e94cd87f751ab0c5 100755 >--- a/Source/JavaScriptCore/create_hash_table >+++ b/Source/JavaScriptCore/create_hash_table >@@ -345,7 +345,7 @@ sub output() { > print "};\n"; > print "\n"; > print "static const struct HashTable $name =\n"; >- print " \{ $packedSize, $compactHashSizeMask, $hasSetter, $nameEntries, $nameIndex \};\n"; >+ print " \{ $packedSize, $compactHashSizeMask, $hasSetter, nullptr, $nameEntries, $nameIndex \};\n"; > print "\n"; > print "} // namespace JSC\n"; > } >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..a583fb2530179a04398104fa60a39cc18b59dc80 100644 >--- a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp >+++ b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp >@@ -7875,6 +7875,24 @@ 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(); >+ >+ flushRegisters(); >+#if USE(JSVALUE64) >+ callOperation(bitwise_cast<J_JITOperation_EJI>(getter), resultRegs, baseGPR, identifierUID(node->callDOMGetterData()->identifierNumber)); >+#else >+ callOperation(bitwise_cast<J_JITOperation_EJI>(getter), resultRegs, TrustedImm32(JSValue::CellTag), baseGPR, identifierUID(node->callDOMGetterData()->identifierNumber)); >+#endif >+ m_jit.exceptionCheck(); >+ jsValueResult(resultRegs, node); >+ return; >+ } > > Vector<GPRReg> gpScratch; > Vector<FPRReg> fpScratch; >@@ -7904,8 +7922,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..20c5e3b4266cb56e388d305da79156b15fa0c5b4 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, TrustedImm32 arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid) >+ { >+ m_jit.setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag, 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..1fe528c81f264e19079e7516776100b60f1c8a3d 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; >@@ -308,15 +308,14 @@ static InlineCacheAction tryCacheGetByID(ExecState* exec, JSValue baseValue, con > else > 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 (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..05d895fd8ade7de73f2f3775f20927473c2cbaf1 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; >@@ -675,38 +676,33 @@ class DOMJITGetter : public DOMJITNode { > return CCallHelpers::JumpList(); > > }); >- return patchpoint; >+ return WTFMove(patchpoint); > } > #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 { DOMJITNode::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.cpp b/Source/JavaScriptCore/runtime/CustomGetterSetter.cpp >index b80067bd425e0f0a2448a5b06586a9031c354cea..b75ca886222ea965eb6ef769eced1f3aa553a77c 100644 >--- a/Source/JavaScriptCore/runtime/CustomGetterSetter.cpp >+++ b/Source/JavaScriptCore/runtime/CustomGetterSetter.cpp >@@ -26,6 +26,8 @@ > #include "config.h" > #include "CustomGetterSetter.h" > >+#include "DOMAttributeGetterSetter.h" >+#include "Error.h" > #include "JSCInlines.h" > #include <wtf/Assertions.h> > >@@ -35,7 +37,7 @@ STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(CustomGetterSetter); > > const ClassInfo CustomGetterSetter::s_info = { "CustomGetterSetter", 0, 0, CREATE_METHOD_TABLE(CustomGetterSetter) }; > >-bool callCustomSetter(ExecState* exec, CustomGetterSetter::CustomSetter setter, bool isAccessor, JSValue thisValue, JSValue value) >+bool callCustomSetterAfterTypeCheck(ExecState* exec, CustomGetterSetter::CustomSetter setter, bool isAccessor, JSValue thisValue, JSValue value) > { > ASSERT(setter); > bool result = setter(exec, JSValue::encode(thisValue), JSValue::encode(value)); >@@ -45,8 +47,11 @@ bool callCustomSetter(ExecState* exec, CustomGetterSetter::CustomSetter setter, > return result; > } > >-bool callCustomSetter(ExecState* exec, JSValue customGetterSetter, bool isAccessor, JSObject* base, JSValue thisValue, JSValue value) >+bool callCustomSetter(ExecState* exec, JSValue customGetterSetter, bool isAccessor, JSObject* base, JSValue thisValue, JSValue value, PropertyName propertyName) > { >+ VM& vm = exec->vm(); >+ auto scope = DECLARE_THROW_SCOPE(vm); >+ > CustomGetterSetter::CustomSetter setter = jsCast<CustomGetterSetter*>(customGetterSetter)->setter(); > // Return false since there is no setter. > if (!setter) >@@ -55,7 +60,18 @@ bool callCustomSetter(ExecState* exec, JSValue customGetterSetter, bool isAccess > // https://bugs.webkit.org/show_bug.cgi?id=158014 > if (!isAccessor) > thisValue = base; >- return callCustomSetter(exec, setter, isAccessor, thisValue, value); >+ >+ if (isDOMAttributeGetterSetter(vm, jsCast<CustomGetterSetter*>(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)) { >+ throwVMDOMAttributeGetterTypeError(exec, scope, domAttribute.classInfo, propertyName); >+ return false; >+ } >+ } >+ >+ return callCustomSetterAfterTypeCheck(exec, setter, isAccessor, thisValue, value); > } > > } // namespace JSC >diff --git a/Source/JavaScriptCore/runtime/CustomGetterSetter.h b/Source/JavaScriptCore/runtime/CustomGetterSetter.h >index 44b7306a589959af2fbe36d15100664d4a068d23..ed558131e1fb1d52415543b1ec6b74d444643c9b 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,21 +57,20 @@ 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); >-JS_EXPORT_PRIVATE bool callCustomSetter(ExecState*, JSValue customGetterSetter, bool isAccessor, JSObject* slotBase, JSValue thisValue, JSValue); >+JS_EXPORT_PRIVATE bool callCustomSetterAfterTypeCheck(ExecState*, CustomGetterSetter::CustomSetter, bool isAccessor, JSValue thisValue, JSValue); >+JS_EXPORT_PRIVATE bool callCustomSetter(ExecState*, JSValue customGetterSetter, bool isAccessor, JSObject* slotBase, JSValue thisValue, JSValue, PropertyName); > > } // namespace JSC >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/JSCJSValue.cpp b/Source/JavaScriptCore/runtime/JSCJSValue.cpp >index 3663528788ee509c5a72578a2540cdbb05ee3cd6..21e166d9ba7753a1974d87e92ec91bdfc65a021b 100644 >--- a/Source/JavaScriptCore/runtime/JSCJSValue.cpp >+++ b/Source/JavaScriptCore/runtime/JSCJSValue.cpp >@@ -180,7 +180,7 @@ bool JSValue::putToPrimitive(ExecState* exec, PropertyName propertyName, JSValue > return callSetter(exec, *this, gs, value, slot.isStrictMode() ? StrictMode : NotStrictMode); > > if (gs.isCustomGetterSetter()) >- return callCustomSetter(exec, gs, attributes & CustomAccessor, obj, slot.thisValue(), value); >+ return callCustomSetter(exec, gs, attributes & CustomAccessor, obj, slot.thisValue(), value, propertyName); > > // If there's an existing property on the object or one of its > // prototypes it should be replaced, so break here. >diff --git a/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp b/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp >index ce29a3988cd7823be411a096313a89654e2ce410..1a247a99b7ba41daaf24ee69b3ed7cdacc30791f 100644 >--- a/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp >+++ b/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp >@@ -37,19 +37,30 @@ 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 (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()); >+ } > > if (customGetterSetterFunction->isSetter()) { > CustomGetterSetter::CustomSetter setter = customGetterSetter->setter(); > ASSERT(setter); >- callCustomSetter(exec, setter, true, exec->thisValue(), exec->argument(0)); >+ callCustomSetterAfterTypeCheck(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()); >+ 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..10cc81b75a5315ae2c5632b19eb8dbce4973f801 100644 >--- a/Source/JavaScriptCore/runtime/JSObject.cpp >+++ b/Source/JavaScriptCore/runtime/JSObject.cpp >@@ -776,7 +776,7 @@ bool JSObject::putInlineSlow(ExecState* exec, PropertyName propertyName, JSValue > return result; > } > if (gs.isCustomGetterSetter()) { >- bool result = callCustomSetter(exec, gs, attributes & CustomAccessor, obj, slot.thisValue(), value); >+ bool result = callCustomSetter(exec, gs, attributes & CustomAccessor, obj, slot.thisValue(), value, propertyName); > if (attributes & CustomAccessor) > slot.setCustomAccessor(obj, jsCast<CustomGetterSetter*>(gs.asCell())->setter()); > else >@@ -791,8 +791,8 @@ bool JSObject::putInlineSlow(ExecState* exec, PropertyName propertyName, JSValue > } > if (!obj->staticPropertiesReified()) { > if (obj->classInfo(vm)->hasStaticSetterOrReadonlyProperties()) { >- if (auto* entry = obj->findPropertyHashEntry(vm, propertyName)) >- return putEntry(exec, entry, obj, this, propertyName, value, slot); >+ if (auto pair = obj->findPropertyHashEntry(vm, propertyName)) >+ return putEntry(exec, pair->first->classForThis, pair->second, obj, this, propertyName, value, slot); > } > } > if (obj->type() == ProxyObjectType && propertyName != vm.propertyNames->underscoreProto) { >@@ -1799,11 +1799,11 @@ bool JSObject::deleteProperty(JSCell* cell, ExecState* exec, PropertyName proper > unsigned attributes; > > if (!thisObject->staticPropertiesReified()) { >- if (auto* entry = thisObject->findPropertyHashEntry(vm, propertyName)) { >+ if (auto pair = thisObject->findPropertyHashEntry(vm, propertyName)) { > // If the static table contains a non-configurable (DontDelete) property then we can return early; > // if there is a property in the storage array it too must be non-configurable (the language does > // not allow repacement of a non-configurable property with a configurable one). >- if (entry->attributes() & DontDelete && vm.deletePropertyMode() != VM::DeletePropertyMode::IgnoreConfigurable) { >+ if (pair->second->attributes() & DontDelete && vm.deletePropertyMode() != VM::DeletePropertyMode::IgnoreConfigurable) { > ASSERT(!isValidOffset(thisObject->structure(vm)->get(vm, propertyName, attributes)) || attributes & DontDelete); > return false; > } >@@ -2002,22 +2002,22 @@ 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, table->classForThis, *table, this, propertyName, slot)) > return true; > } > } > return false; > } > >-const HashTableValue* JSObject::findPropertyHashEntry(VM& vm, PropertyName propertyName) const >+std::optional<std::pair<const HashTable*, const HashTableValue*>> JSObject::findPropertyHashEntry(VM& vm, PropertyName propertyName) const > { > for (const ClassInfo* info = classInfo(vm); info; info = info->parentClass) { > if (const HashTable* propHashTable = info->staticPropHashTable) { > if (const HashTableValue* entry = propHashTable->entry(propertyName)) >- return entry; >+ return std::make_pair(propHashTable, entry); > } > } >- return 0; >+ return std::nullopt; > } > > bool JSObject::hasInstance(ExecState* exec, JSValue value, JSValue hasInstanceValue) >@@ -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, hashTable->classForThis, 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..9ad5eed05b52a5bfa220aa2612422346985015e3 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,11 +1014,11 @@ 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*); >+ JS_EXPORT_PRIVATE 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; >+ std::optional<std::pair<const HashTable*, const HashTableValue*>> findPropertyHashEntry(VM&, PropertyName) const; > > bool putIndexedDescriptor(ExecState*, SparseArrayEntry*, const PropertyDescriptor&, PropertyDescriptor& old); > >@@ -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..f5a5dc20753fa0ab793fda39d1425ceacf2aeddf 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 { >@@ -85,10 +84,10 @@ struct HashTableValue { > return static_cast<unsigned char>(m_values.value2); > } > >- 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); } >+ GetFunction propertyGetter() const { ASSERT(!(m_attributes & BuiltinOrFunctionOrAccessorOrLazyPropertyOrConstantOrDOMAttribute)); return reinterpret_cast<GetFunction>(m_values.value1); } >+ PutFunction propertyPutter() const { ASSERT(!(m_attributes & BuiltinOrFunctionOrAccessorOrLazyPropertyOrConstantOrDOMAttribute)); 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); } >@@ -109,6 +108,7 @@ struct HashTable { > int numberOfValues; > int indexMask; > bool hasSetterOrReadonlyProperties; >+ const ClassInfo* classForThis; // Used by DOMAttribute. Attribute accessors perform type check against this classInfo. > > const HashTableValue* values; // Fixed values generated by script. > const CompactHashIndex* index; >@@ -203,7 +203,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 +220,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 +230,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 +238,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; > } > >@@ -261,7 +266,7 @@ inline bool replaceStaticPropertySlot(VM& vm, JSObject* thisObject, PropertyName > // 'base' means the object holding the property (possibly in the prototype chain of the object put was called on). > // 'thisValue' is the object that put is being applied to (in the case of a proxy, the proxy target). > // 'slot.thisValue()' is the object the put was originally performed on (in the case of a proxy, the proxy itself). >-inline bool putEntry(ExecState* exec, const HashTableValue* entry, JSObject* base, JSObject* thisValue, PropertyName propertyName, JSValue value, PutPropertySlot& slot) >+inline bool putEntry(ExecState* exec, const ClassInfo* classInfo, const HashTableValue* entry, JSObject* base, JSObject* thisValue, PropertyName propertyName, JSValue value, PutPropertySlot& slot) > { > VM& vm = exec->vm(); > auto scope = DECLARE_THROW_SCOPE(vm); >@@ -284,7 +289,15 @@ inline bool putEntry(ExecState* exec, const HashTableValue* entry, JSObject* bas > ASSERT_WITH_MESSAGE(!(entry->attributes() & DOMJITAttribute), "DOMJITAttribute supports readonly attributes currently."); > bool isAccessor = entry->attributes() & CustomAccessor; > JSValue updateThisValue = entry->attributes() & CustomAccessor ? slot.thisValue() : JSValue(base); >- bool result = callCustomSetter(exec, entry->propertyPutter(), isAccessor, updateThisValue, value); >+ if (entry->attributes() & DOMAttribute) { >+ // DOMJIT type checking here. >+ // FIXME: Node, Element etc. have more efficient way to perform type check. >+ if (!updateThisValue.inherits(vm, classInfo)) { >+ throwVMDOMAttributeGetterTypeError(exec, scope, classInfo, propertyName); >+ return false; >+ } >+ } >+ bool result = callCustomSetterAfterTypeCheck(exec, entry->propertyPutter(), isAccessor, updateThisValue, value); > if (isAccessor) > slot.setCustomAccessor(base, entry->propertyPutter()); > else >@@ -307,11 +320,11 @@ inline bool lookupPut(ExecState* exec, PropertyName propertyName, JSObject* base > if (!entry) > return false; > >- putResult = putEntry(exec, entry, base, base, propertyName, value, slot); >+ putResult = putEntry(exec, table.classForThis, entry, base, base, propertyName, value, slot); > 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 +379,16 @@ 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); >+ ASSERT_WITH_MESSAGE(classInfo, "DOMJITAttribute should be reified eagerly."); >+ 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) { >+ ASSERT_WITH_MESSAGE(classInfo, "DOMAttribute should be reified eagerly."); >+ auto* customGetterSetter = DOMAttributeGetterSetter::create(vm, value.propertyGetter(), value.propertyPutter(), DOMAttributeAnnotation { classInfo, nullptr }); > thisObj.putDirectCustomAccessor(vm, propertyName, customGetterSetter, attributesForStructure(value.attributes())); > return; > } >@@ -377,14 +398,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..6fb423c16d21ac24d69f93d0cd8c80a84383bc27 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 >+ BuiltinOrFunctionOrAccessorOrLazyPropertyOrConstantOrDOMAttribute = Builtin | Function | Accessor | CellProperty | ClassStructure | PropertyCallback | ConstantInteger | DOMAttribute // 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..cf89f77e1513e3e66080687f14fe0be47134e94c 100644 >--- a/Source/WebCore/bindings/js/JSDOMBindingCaller.h >+++ b/Source/WebCore/bindings/js/JSDOMBindingCaller.h >@@ -76,6 +76,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 setter(*state, *thisObject, JSC::JSValue::decode(encodedValue), throwScope); >+ } >+ > auto* thisObject = castForAttribute(*state, thisValue); > if (UNLIKELY(!thisObject)) > return (shouldThrow == CastedThisErrorBehavior::Throw) ? throwSetterTypeError(*state, throwScope, JSClass::info()->className, attributeName) : false; >@@ -87,6 +94,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..a2fdd8dc245a32c3454c1fa2e6dc9fbf9898fb7a 100644 >--- a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm >+++ b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm >@@ -1018,6 +1018,27 @@ 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) and AttributeShouldBeOnInstance($interface, $attribute); >+ return 0 if $attribute->extendedAttributes->{PrivateIdentifier} and AttributeShouldBeOnInstance($interface, $attribute); >+ >+ # 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 +1052,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 +1993,7 @@ sub GenerateHeader > my $hasForwardDeclaringFunctions = 0; > my $hasForwardDeclaringAttributes = 0; > >- my $hasDOMJITAttributes = 0; >+ my $hasDOMAttributes = 0; > > # Attribute and function enums > if ($numAttributes > 0) { >@@ -1987,8 +2009,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 +2237,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 +2365,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 +3238,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); >@@ -3226,7 +3289,7 @@ sub GenerateImplementation > \@runtimeEnabledFunctions, \@runtimeEnabledAttributes, > \@settingsEnabledFunctions, \@settingsEnabledAttributes); > >- $object->GenerateHashTable($hashName, $numInstanceProperties, >+ $object->GenerateHashTable($className, $hashName, $numInstanceProperties, > \@hashKeys, \@hashSpecials, > \@hashValue1, \@hashValue2, > \%conditionals, 0) if $numInstanceProperties > 0; >@@ -3268,23 +3331,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}; >@@ -3317,7 +3380,7 @@ sub GenerateImplementation > $hashSize++; > } > >- $object->GenerateHashTable($hashName, $hashSize, >+ $object->GenerateHashTable($className, $hashName, $hashSize, > \@hashKeys, \@hashSpecials, > \@hashValue1, \@hashValue2, > \%conditionals, 1) if $hashSize > 0; >@@ -3371,7 +3434,7 @@ sub GenerateImplementation > > my $justGenerateValueArray = !IsDOMGlobalObject($interface); > >- $object->GenerateHashTable($hashName, $hashSize, >+ $object->GenerateHashTable($className, $hashName, $hashSize, > \@hashKeys, \@hashSpecials, > \@hashValue1, \@hashValue2, > \%conditionals, $justGenerateValueArray); >@@ -3392,7 +3455,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 +3758,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 +3871,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; > } > >@@ -3888,7 +3930,11 @@ sub GenerateImplementation > if (!$attribute->isStatic) { > my $setterFunction = "${putFunctionName}Function"; > my $templateParameters = $setterFunction; >- $templateParameters .= ", CastedThisErrorBehavior::ReturnEarly" if $attribute->extendedAttributes->{LenientThis}; >+ if ($attribute->extendedAttributes->{LenientThis}) { >+ $templateParameters .= ", CastedThisErrorBehavior::ReturnEarly"; >+ } elsif (IsAcceleratedDOMAttribute($interface, $attribute)) { >+ $templateParameters .= ", CastedThisErrorBehavior::Assert"; >+ } > > push(@implContent, "static inline bool ${setterFunction}(ExecState&, ${className}&, JSValue, ThrowScope&);\n\n"); > >@@ -5184,7 +5230,7 @@ sub GenerateCallbackImplementationContent > > $hashSize++; > } >- $object->GenerateHashTable($hashName, $hashSize, \@hashKeys, \@hashSpecials, \@hashValue1, \@hashValue2, \%conditionals, 1) if $hashSize > 0; >+ $object->GenerateHashTable($className, $hashName, $hashSize, \@hashKeys, \@hashSpecials, \@hashValue1, \@hashValue2, \%conditionals, 1) if $hashSize > 0; > > push(@$contentRef, $codeGenerator->GenerateCompileTimeCheckForEnumsIfNeeded($interfaceOrCallback)); > >@@ -5852,7 +5898,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>"; >@@ -5879,16 +5925,7 @@ sub GenerateHashTableValueArray > > sub GenerateHashTable > { >- my $object = shift; >- >- my $name = shift; >- my $size = shift; >- my $keys = shift; >- my $specials = shift; >- my $value1 = shift; >- my $value2 = shift; >- my $conditionals = shift; >- my $justGenerateValueArray = shift; >+ my ($object, $className, $name, $size, $keys, $specials, $value1, $value2, $conditionals, $justGenerateValueArray) = @_; > > my $nameEntries = "${name}Values"; > $nameEntries =~ s/:/_/g; >@@ -5966,7 +6003,7 @@ sub GenerateHashTable > my $packedSize = scalar @{$keys}; > > my $compactSizeMask = $numEntries - 1; >- push(@implContent, "static const HashTable $name = { $packedSize, $compactSizeMask, $hasSetter, $nameEntries, $nameIndex };\n"); >+ push(@implContent, "static const HashTable $name = { $packedSize, $compactSizeMask, $hasSetter, ${className}::info(), $nameEntries, $nameIndex };\n"); > } > > sub WriteData >@@ -6314,7 +6351,12 @@ 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); >+ >+ my $classForThis = "${className}::info()"; >+ if ($interface->isCallback) { >+ $classForThis = "nullptr"; >+ } >+ push(@$outputArray, " reifyStaticProperties(vm, ${classForThis}, ${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..caa8ca321059bf384a0da56d4a2077e3d2f774b4 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..f233b570b622d778c38317a562d311dc2ec7991c 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..8c850d37f5d961e00fa884adbbf01417c8a0997d 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..a8d8a0bd774c331365bbdeeb5dd74ead267a7880 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp >@@ -85,7 +85,7 @@ static const struct CompactHashIndex JSTestActiveDOMObjectTableIndex[2] = { > > static const HashTableValue JSTestActiveDOMObjectTableValues[] = > { >- { "excitingAttr", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestActiveDOMObjectExcitingAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "excitingAttr", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestActiveDOMObjectExcitingAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > }; > > static const HashTable JSTestActiveDOMObjectTable = { 1, 1, true, JSTestActiveDOMObjectTableValues, JSTestActiveDOMObjectTableIndex }; >@@ -118,7 +118,7 @@ const ClassInfo JSTestActiveDOMObjectPrototype::s_info = { "TestActiveDOMObjectP > void JSTestActiveDOMObjectPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestActiveDOMObjectPrototypeTableValues, *this); >+ reifyStaticPropertiesIncludingDOMAttributes(vm, JSTestActiveDOMObject::info(), JSTestActiveDOMObjectPrototypeTableValues, *this); > } > > const ClassInfo JSTestActiveDOMObject::s_info = { "TestActiveDOMObject", &Base::s_info, &JSTestActiveDOMObjectTable, CREATE_METHOD_TABLE(JSTestActiveDOMObject) }; >@@ -165,7 +165,7 @@ static inline JSValue jsTestActiveDOMObjectExcitingAttrGetter(ExecState&, JSTest > > EncodedJSValue jsTestActiveDOMObjectExcitingAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestActiveDOMObject>::attribute<jsTestActiveDOMObjectExcitingAttrGetter>(state, thisValue, "excitingAttr"); >+ return BindingCaller<JSTestActiveDOMObject>::attribute<jsTestActiveDOMObjectExcitingAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "excitingAttr"); > } > > static inline JSValue jsTestActiveDOMObjectExcitingAttrGetter(ExecState& state, JSTestActiveDOMObject& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp >index e0329427a30857dd17d50addd692e91fc21698d6..af8ca3c949d2dfc643ffa0d64ad4a0edd57d7e2a 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -230,7 +230,7 @@ static inline bool setJSTestCEReactionsAttributeWithCEReactionsFunction(ExecStat > > bool setJSTestCEReactionsAttributeWithCEReactions(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestCEReactions>::setAttribute<setJSTestCEReactionsAttributeWithCEReactionsFunction>(state, thisValue, encodedValue, "attributeWithCEReactions"); >+ return BindingCaller<JSTestCEReactions>::setAttribute<setJSTestCEReactionsAttributeWithCEReactionsFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "attributeWithCEReactions"); > } > > static inline bool setJSTestCEReactionsAttributeWithCEReactionsFunction(ExecState& state, JSTestCEReactions& thisObject, JSValue value, ThrowScope& throwScope) >@@ -250,7 +250,7 @@ static inline bool setJSTestCEReactionsReflectAttributeWithCEReactionsFunction(E > > bool setJSTestCEReactionsReflectAttributeWithCEReactions(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestCEReactions>::setAttribute<setJSTestCEReactionsReflectAttributeWithCEReactionsFunction>(state, thisValue, encodedValue, "reflectAttributeWithCEReactions"); >+ return BindingCaller<JSTestCEReactions>::setAttribute<setJSTestCEReactionsReflectAttributeWithCEReactionsFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectAttributeWithCEReactions"); > } > > static inline bool setJSTestCEReactionsReflectAttributeWithCEReactionsFunction(ExecState& state, JSTestCEReactions& thisObject, JSValue value, ThrowScope& throwScope) >@@ -270,7 +270,7 @@ static inline bool setJSTestCEReactionsStringifierAttributeFunction(ExecState&, > > bool setJSTestCEReactionsStringifierAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestCEReactions>::setAttribute<setJSTestCEReactionsStringifierAttributeFunction>(state, thisValue, encodedValue, "stringifierAttribute"); >+ return BindingCaller<JSTestCEReactions>::setAttribute<setJSTestCEReactionsStringifierAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringifierAttribute"); > } > > static inline bool setJSTestCEReactionsStringifierAttributeFunction(ExecState& state, JSTestCEReactions& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp >index 03b5bc0cb67ea37389ee69c070cc9ab3bec8ce5c..3678516d89d4fa6418c083f3ec6b9ea5ec59748e 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -190,7 +190,7 @@ static inline bool setJSTestCEReactionsStringifierValueFunction(ExecState&, JSTe > > bool setJSTestCEReactionsStringifierValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestCEReactionsStringifier>::setAttribute<setJSTestCEReactionsStringifierValueFunction>(state, thisValue, encodedValue, "value"); >+ return BindingCaller<JSTestCEReactionsStringifier>::setAttribute<setJSTestCEReactionsStringifierValueFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "value"); > } > > static inline bool setJSTestCEReactionsStringifierValueFunction(ExecState& state, JSTestCEReactionsStringifier& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp >index 91c111f1b1149562199a03ea5ec80c7ff2fbb035..79c0e6a0ef7eb62e0cb67f4baf1dc74c226e6790 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..4aa2c15ede03d3b3e0a189bec543958318643c5d 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..caf92e21412f574ed9bb9b05c09d135df16e5a7b 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..5c776fc6c7ecd864f8cd20d78c75e6598d818016 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..31b33355c9705f72a6d3c99cb11a8a132a7bbfe3 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..25a253497cf48ff783a96bb3c01b3752e3482d3c 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..fed9d123280da1256990ffe32583bdb4abb4988a 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp >@@ -77,7 +77,7 @@ static const struct CompactHashIndex JSTestExceptionTableIndex[2] = { > > static const HashTableValue JSTestExceptionTableValues[] = > { >- { "name", ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestExceptionName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "name", ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestExceptionName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > }; > > static const HashTable JSTestExceptionTable = { 1, 1, true, JSTestExceptionTableValues, JSTestExceptionTableIndex }; >@@ -108,7 +108,7 @@ const ClassInfo JSTestExceptionPrototype::s_info = { "TestExceptionPrototype", & > void JSTestExceptionPrototype::finishCreation(VM& vm) > { > Base::finishCreation(vm); >- reifyStaticProperties(vm, JSTestExceptionPrototypeTableValues, *this); >+ reifyStaticPropertiesIncludingDOMAttributes(vm, JSTestException::info(), JSTestExceptionPrototypeTableValues, *this); > } > > const ClassInfo JSTestException::s_info = { "TestException", &Base::s_info, &JSTestExceptionTable, CREATE_METHOD_TABLE(JSTestException) }; >@@ -150,7 +150,7 @@ static inline JSValue jsTestExceptionNameGetter(ExecState&, JSTestException&, Th > > EncodedJSValue jsTestExceptionName(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestException>::attribute<jsTestExceptionNameGetter>(state, thisValue, "name"); >+ return BindingCaller<JSTestException>::attribute<jsTestExceptionNameGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "name"); > } > > static inline JSValue jsTestExceptionNameGetter(ExecState& state, JSTestException& thisObject, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp >index b30091e53bdd913064c28fa2d0d92e72566fd0d2..b4a55f07571a2c1112c12d18f6c41ee9a2885e9a 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..75c680cc513a104abe43e155b086bc63b173deab 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp >@@ -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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -697,7 +697,7 @@ static inline bool setJSTestInterfaceImplementsStr2Function(ExecState&, JSTestIn > > bool setJSTestInterfaceImplementsStr2(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceImplementsStr2Function>(state, thisValue, encodedValue, "implementsStr2"); >+ return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceImplementsStr2Function, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "implementsStr2"); > } > > static inline bool setJSTestInterfaceImplementsStr2Function(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope) >@@ -718,7 +718,7 @@ static inline bool setJSTestInterfaceImplementsStr3Function(ExecState&, JSTestIn > > bool setJSTestInterfaceImplementsStr3(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceImplementsStr3Function>(state, thisValue, encodedValue, "implementsStr3"); >+ return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceImplementsStr3Function, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "implementsStr3"); > } > > static inline bool setJSTestInterfaceImplementsStr3Function(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope) >@@ -736,7 +736,7 @@ static inline bool setJSTestInterfaceImplementsNodeFunction(ExecState&, JSTestIn > > bool setJSTestInterfaceImplementsNode(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceImplementsNodeFunction>(state, thisValue, encodedValue, "implementsNode"); >+ return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceImplementsNodeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "implementsNode"); > } > > static inline bool setJSTestInterfaceImplementsNodeFunction(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope) >@@ -772,7 +772,7 @@ static inline bool setJSTestInterfaceSupplementalStr2Function(ExecState&, JSTest > > bool setJSTestInterfaceSupplementalStr2(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceSupplementalStr2Function>(state, thisValue, encodedValue, "supplementalStr2"); >+ return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceSupplementalStr2Function, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "supplementalStr2"); > } > > static inline bool setJSTestInterfaceSupplementalStr2Function(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope) >@@ -793,7 +793,7 @@ static inline bool setJSTestInterfaceSupplementalStr3Function(ExecState&, JSTest > > bool setJSTestInterfaceSupplementalStr3(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceSupplementalStr3Function>(state, thisValue, encodedValue, "supplementalStr3"); >+ return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceSupplementalStr3Function, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "supplementalStr3"); > } > > static inline bool setJSTestInterfaceSupplementalStr3Function(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope) >@@ -811,7 +811,7 @@ static inline bool setJSTestInterfaceSupplementalNodeFunction(ExecState&, JSTest > > bool setJSTestInterfaceSupplementalNode(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceSupplementalNodeFunction>(state, thisValue, encodedValue, "supplementalNode"); >+ return BindingCaller<JSTestInterface>::setAttribute<setJSTestInterfaceSupplementalNodeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "supplementalNode"); > } > > static inline bool setJSTestInterfaceSupplementalNodeFunction(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp >index 796cd7fd96cc683e075b2991b8a4c7b9682fea25..df123bbf7b0ccf368c63ee35457391e7058969e4 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..21439139ea03572d9fb10dad9ab870a0603642bc 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..3846f2bf7fdbb06ca055c3f06866cd24de58390f 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -208,7 +208,7 @@ static inline bool setJSTestJSBuiltinConstructorTestAttributeRWCustomFunction(Ex > > bool setJSTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestJSBuiltinConstructor>::setAttribute<setJSTestJSBuiltinConstructorTestAttributeRWCustomFunction>(state, thisValue, encodedValue, "testAttributeRWCustom"); >+ return BindingCaller<JSTestJSBuiltinConstructor>::setAttribute<setJSTestJSBuiltinConstructorTestAttributeRWCustomFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "testAttributeRWCustom"); > } > > static inline bool setJSTestJSBuiltinConstructorTestAttributeRWCustomFunction(ExecState& state, JSTestJSBuiltinConstructor& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp >index 77d510f298c157316d39fdd2d13fe9ed1aad6739..562e910ea240444aefa145730550036f89fb0962 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..90c52a33015c4af96ffd613b28a2b1e69477ecd9 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..495f307f6df44a4981a04c930ce0c521ae932345 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -228,7 +228,7 @@ static inline bool setJSTestNodeNameFunction(ExecState&, JSTestNode&, JSValue, T > > bool setJSTestNodeName(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestNode>::setAttribute<setJSTestNodeNameFunction>(state, thisValue, encodedValue, "name"); >+ return BindingCaller<JSTestNode>::setAttribute<setJSTestNodeNameFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "name"); > } > > static inline bool setJSTestNodeNameFunction(ExecState& state, JSTestNode& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >index 3f92dc3f28bb33bc7ccdd93401a814a9b2e2dbe6..d90fd1c1e4f1df0fb78f7c5ab6ed4b439c0aff25 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >@@ -1519,7 +1519,7 @@ static const struct CompactHashIndex JSTestObjTableIndex[17] = { > static const HashTableValue JSTestObjTableValues[] = > { > { "TestSubObjEnabledBySetting", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestSubObjEnabledBySettingConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTestSubObjEnabledBySettingConstructor) } }, >- { "unforgeableAttr", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnforgeableAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, >+ { "unforgeableAttr", DontDelete | ReadOnly | CustomAccessor | DOMAttribute, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnforgeableAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } }, > #if ENABLE(Condition1) > { "conditionalAttr4", DontEnum, NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr4Constructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr4Constructor) } }, > #else >@@ -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) } }, >+ { "enabledAtRuntimeAttribute", CustomAccessor | DOMAttribute, 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -2424,7 +2424,7 @@ static inline JSValue jsTestObjUnforgeableAttrGetter(ExecState&, JSTestObj&, Thr > > EncodedJSValue jsTestObjUnforgeableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjUnforgeableAttrGetter>(state, thisValue, "unforgeableAttr"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjUnforgeableAttrGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "unforgeableAttr"); > } > > static inline JSValue jsTestObjUnforgeableAttrGetter(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) >@@ -2857,7 +2857,7 @@ static inline JSValue jsTestObjEnabledAtRuntimeAttributeGetter(ExecState&, JSTes > > EncodedJSValue jsTestObjEnabledAtRuntimeAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName) > { >- return BindingCaller<JSTestObj>::attribute<jsTestObjEnabledAtRuntimeAttributeGetter>(state, thisValue, "enabledAtRuntimeAttribute"); >+ return BindingCaller<JSTestObj>::attribute<jsTestObjEnabledAtRuntimeAttributeGetter, CastedThisErrorBehavior::Assert>(state, thisValue, "enabledAtRuntimeAttribute"); > } > > static inline JSValue jsTestObjEnabledAtRuntimeAttributeGetter(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) >@@ -3742,7 +3742,7 @@ static inline bool setJSTestObjEnumAttrFunction(ExecState&, JSTestObj&, JSValue, > > bool setJSTestObjEnumAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjEnumAttrFunction>(state, thisValue, encodedValue, "enumAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjEnumAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "enumAttr"); > } > > static inline bool setJSTestObjEnumAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3763,7 +3763,7 @@ static inline bool setJSTestObjByteAttrFunction(ExecState&, JSTestObj&, JSValue, > > bool setJSTestObjByteAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjByteAttrFunction>(state, thisValue, encodedValue, "byteAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjByteAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "byteAttr"); > } > > static inline bool setJSTestObjByteAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3782,7 +3782,7 @@ static inline bool setJSTestObjOctetAttrFunction(ExecState&, JSTestObj&, JSValue > > bool setJSTestObjOctetAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjOctetAttrFunction>(state, thisValue, encodedValue, "octetAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjOctetAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "octetAttr"); > } > > static inline bool setJSTestObjOctetAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3801,7 +3801,7 @@ static inline bool setJSTestObjShortAttrFunction(ExecState&, JSTestObj&, JSValue > > bool setJSTestObjShortAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjShortAttrFunction>(state, thisValue, encodedValue, "shortAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjShortAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "shortAttr"); > } > > static inline bool setJSTestObjShortAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3820,7 +3820,7 @@ static inline bool setJSTestObjClampedShortAttrFunction(ExecState&, JSTestObj&, > > bool setJSTestObjClampedShortAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjClampedShortAttrFunction>(state, thisValue, encodedValue, "clampedShortAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjClampedShortAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "clampedShortAttr"); > } > > static inline bool setJSTestObjClampedShortAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3839,7 +3839,7 @@ static inline bool setJSTestObjEnforceRangeShortAttrFunction(ExecState&, JSTestO > > bool setJSTestObjEnforceRangeShortAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjEnforceRangeShortAttrFunction>(state, thisValue, encodedValue, "enforceRangeShortAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjEnforceRangeShortAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "enforceRangeShortAttr"); > } > > static inline bool setJSTestObjEnforceRangeShortAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3858,7 +3858,7 @@ static inline bool setJSTestObjUnsignedShortAttrFunction(ExecState&, JSTestObj&, > > bool setJSTestObjUnsignedShortAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUnsignedShortAttrFunction>(state, thisValue, encodedValue, "unsignedShortAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUnsignedShortAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "unsignedShortAttr"); > } > > static inline bool setJSTestObjUnsignedShortAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3877,7 +3877,7 @@ static inline bool setJSTestObjLongAttrFunction(ExecState&, JSTestObj&, JSValue, > > bool setJSTestObjLongAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjLongAttrFunction>(state, thisValue, encodedValue, "longAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjLongAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "longAttr"); > } > > static inline bool setJSTestObjLongAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3896,7 +3896,7 @@ static inline bool setJSTestObjLongLongAttrFunction(ExecState&, JSTestObj&, JSVa > > bool setJSTestObjLongLongAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjLongLongAttrFunction>(state, thisValue, encodedValue, "longLongAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjLongLongAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "longLongAttr"); > } > > static inline bool setJSTestObjLongLongAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3915,7 +3915,7 @@ static inline bool setJSTestObjUnsignedLongLongAttrFunction(ExecState&, JSTestOb > > bool setJSTestObjUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUnsignedLongLongAttrFunction>(state, thisValue, encodedValue, "unsignedLongLongAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUnsignedLongLongAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "unsignedLongLongAttr"); > } > > static inline bool setJSTestObjUnsignedLongLongAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3934,7 +3934,7 @@ static inline bool setJSTestObjStringAttrFunction(ExecState&, JSTestObj&, JSValu > > bool setJSTestObjStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringAttrFunction>(state, thisValue, encodedValue, "stringAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringAttr"); > } > > static inline bool setJSTestObjStringAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3953,7 +3953,7 @@ static inline bool setJSTestObjUsvstringAttrFunction(ExecState&, JSTestObj&, JSV > > bool setJSTestObjUsvstringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUsvstringAttrFunction>(state, thisValue, encodedValue, "usvstringAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUsvstringAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "usvstringAttr"); > } > > static inline bool setJSTestObjUsvstringAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3972,7 +3972,7 @@ static inline bool setJSTestObjTestObjAttrFunction(ExecState&, JSTestObj&, JSVal > > bool setJSTestObjTestObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjTestObjAttrFunction>(state, thisValue, encodedValue, "testObjAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjTestObjAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "testObjAttr"); > } > > static inline bool setJSTestObjTestObjAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -3991,7 +3991,7 @@ static inline bool setJSTestObjTestNullableObjAttrFunction(ExecState&, JSTestObj > > bool setJSTestObjTestNullableObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjTestNullableObjAttrFunction>(state, thisValue, encodedValue, "testNullableObjAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjTestNullableObjAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "testNullableObjAttr"); > } > > static inline bool setJSTestObjTestNullableObjAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4029,7 +4029,7 @@ static inline bool setJSTestObjStringAttrTreatingNullAsEmptyStringFunction(ExecS > > bool setJSTestObjStringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringAttrTreatingNullAsEmptyStringFunction>(state, thisValue, encodedValue, "stringAttrTreatingNullAsEmptyString"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringAttrTreatingNullAsEmptyStringFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringAttrTreatingNullAsEmptyString"); > } > > static inline bool setJSTestObjStringAttrTreatingNullAsEmptyStringFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4048,7 +4048,7 @@ static inline bool setJSTestObjUsvstringAttrTreatingNullAsEmptyStringFunction(Ex > > bool setJSTestObjUsvstringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUsvstringAttrTreatingNullAsEmptyStringFunction>(state, thisValue, encodedValue, "usvstringAttrTreatingNullAsEmptyString"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUsvstringAttrTreatingNullAsEmptyStringFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "usvstringAttrTreatingNullAsEmptyString"); > } > > static inline bool setJSTestObjUsvstringAttrTreatingNullAsEmptyStringFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4067,7 +4067,7 @@ static inline bool setJSTestObjByteStringAttrTreatingNullAsEmptyStringFunction(E > > bool setJSTestObjByteStringAttrTreatingNullAsEmptyString(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjByteStringAttrTreatingNullAsEmptyStringFunction>(state, thisValue, encodedValue, "byteStringAttrTreatingNullAsEmptyString"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjByteStringAttrTreatingNullAsEmptyStringFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "byteStringAttrTreatingNullAsEmptyString"); > } > > static inline bool setJSTestObjByteStringAttrTreatingNullAsEmptyStringFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4086,7 +4086,7 @@ static inline bool setJSTestObjStringLongRecordAttrFunction(ExecState&, JSTestOb > > bool setJSTestObjStringLongRecordAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringLongRecordAttrFunction>(state, thisValue, encodedValue, "stringLongRecordAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringLongRecordAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringLongRecordAttr"); > } > > static inline bool setJSTestObjStringLongRecordAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4105,7 +4105,7 @@ static inline bool setJSTestObjUsvstringLongRecordAttrFunction(ExecState&, JSTes > > bool setJSTestObjUsvstringLongRecordAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUsvstringLongRecordAttrFunction>(state, thisValue, encodedValue, "usvstringLongRecordAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUsvstringLongRecordAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "usvstringLongRecordAttr"); > } > > static inline bool setJSTestObjUsvstringLongRecordAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4124,7 +4124,7 @@ static inline bool setJSTestObjUsvstringLongRecordAttrFunction(ExecState&, JSTes > > bool setJSTestObjUsvstringLongRecordAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUsvstringLongRecordAttrFunction>(state, thisValue, encodedValue, "usvstringLongRecordAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjUsvstringLongRecordAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "usvstringLongRecordAttr"); > } > > static inline bool setJSTestObjUsvstringLongRecordAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4143,7 +4143,7 @@ static inline bool setJSTestObjStringObjRecordAttrFunction(ExecState&, JSTestObj > > bool setJSTestObjStringObjRecordAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringObjRecordAttrFunction>(state, thisValue, encodedValue, "stringObjRecordAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringObjRecordAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringObjRecordAttr"); > } > > static inline bool setJSTestObjStringObjRecordAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4162,7 +4162,7 @@ static inline bool setJSTestObjStringNullableObjRecordAttrFunction(ExecState&, J > > bool setJSTestObjStringNullableObjRecordAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringNullableObjRecordAttrFunction>(state, thisValue, encodedValue, "stringNullableObjRecordAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringNullableObjRecordAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringNullableObjRecordAttr"); > } > > static inline bool setJSTestObjStringNullableObjRecordAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4181,7 +4181,7 @@ static inline bool setJSTestObjDictionaryAttrFunction(ExecState&, JSTestObj&, JS > > bool setJSTestObjDictionaryAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjDictionaryAttrFunction>(state, thisValue, encodedValue, "dictionaryAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjDictionaryAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "dictionaryAttr"); > } > > static inline bool setJSTestObjDictionaryAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4200,7 +4200,7 @@ static inline bool setJSTestObjNullableDictionaryAttrFunction(ExecState&, JSTest > > bool setJSTestObjNullableDictionaryAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableDictionaryAttrFunction>(state, thisValue, encodedValue, "nullableDictionaryAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableDictionaryAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "nullableDictionaryAttr"); > } > > static inline bool setJSTestObjNullableDictionaryAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4219,7 +4219,7 @@ static inline bool setJSTestObjAnnotatedTypeInUnionAttrFunction(ExecState&, JSTe > > bool setJSTestObjAnnotatedTypeInUnionAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAnnotatedTypeInUnionAttrFunction>(state, thisValue, encodedValue, "annotatedTypeInUnionAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAnnotatedTypeInUnionAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "annotatedTypeInUnionAttr"); > } > > static inline bool setJSTestObjAnnotatedTypeInUnionAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4238,7 +4238,7 @@ static inline bool setJSTestObjAnnotatedTypeInSequenceAttrFunction(ExecState&, J > > bool setJSTestObjAnnotatedTypeInSequenceAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAnnotatedTypeInSequenceAttrFunction>(state, thisValue, encodedValue, "annotatedTypeInSequenceAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAnnotatedTypeInSequenceAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "annotatedTypeInSequenceAttr"); > } > > static inline bool setJSTestObjAnnotatedTypeInSequenceAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4257,7 +4257,7 @@ static inline bool setJSTestObjImplementationEnumAttrFunction(ExecState&, JSTest > > bool setJSTestObjImplementationEnumAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjImplementationEnumAttrFunction>(state, thisValue, encodedValue, "implementationEnumAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjImplementationEnumAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "implementationEnumAttr"); > } > > static inline bool setJSTestObjImplementationEnumAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4278,7 +4278,7 @@ static inline bool setJSTestObjXMLObjAttrFunction(ExecState&, JSTestObj&, JSValu > > bool setJSTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjXMLObjAttrFunction>(state, thisValue, encodedValue, "XMLObjAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjXMLObjAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "XMLObjAttr"); > } > > static inline bool setJSTestObjXMLObjAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4297,7 +4297,7 @@ static inline bool setJSTestObjCreateFunction(ExecState&, JSTestObj&, JSValue, T > > bool setJSTestObjCreate(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjCreateFunction>(state, thisValue, encodedValue, "create"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjCreateFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "create"); > } > > static inline bool setJSTestObjCreateFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4316,7 +4316,7 @@ static inline bool setJSTestObjReflectedStringAttrFunction(ExecState&, JSTestObj > > bool setJSTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedStringAttrFunction>(state, thisValue, encodedValue, "reflectedStringAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedStringAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedStringAttr"); > } > > static inline bool setJSTestObjReflectedStringAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4335,7 +4335,7 @@ static inline bool setJSTestObjReflectedUSVStringAttrFunction(ExecState&, JSTest > > bool setJSTestObjReflectedUSVStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedUSVStringAttrFunction>(state, thisValue, encodedValue, "reflectedUSVStringAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedUSVStringAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedUSVStringAttr"); > } > > static inline bool setJSTestObjReflectedUSVStringAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4354,7 +4354,7 @@ static inline bool setJSTestObjReflectedIntegralAttrFunction(ExecState&, JSTestO > > bool setJSTestObjReflectedIntegralAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedIntegralAttrFunction>(state, thisValue, encodedValue, "reflectedIntegralAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedIntegralAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedIntegralAttr"); > } > > static inline bool setJSTestObjReflectedIntegralAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4373,7 +4373,7 @@ static inline bool setJSTestObjReflectedUnsignedIntegralAttrFunction(ExecState&, > > bool setJSTestObjReflectedUnsignedIntegralAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedUnsignedIntegralAttrFunction>(state, thisValue, encodedValue, "reflectedUnsignedIntegralAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedUnsignedIntegralAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedUnsignedIntegralAttr"); > } > > static inline bool setJSTestObjReflectedUnsignedIntegralAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4392,7 +4392,7 @@ static inline bool setJSTestObjReflectedBooleanAttrFunction(ExecState&, JSTestOb > > bool setJSTestObjReflectedBooleanAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedBooleanAttrFunction>(state, thisValue, encodedValue, "reflectedBooleanAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedBooleanAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedBooleanAttr"); > } > > static inline bool setJSTestObjReflectedBooleanAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4411,7 +4411,7 @@ static inline bool setJSTestObjReflectedURLAttrFunction(ExecState&, JSTestObj&, > > bool setJSTestObjReflectedURLAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedURLAttrFunction>(state, thisValue, encodedValue, "reflectedURLAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedURLAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedURLAttr"); > } > > static inline bool setJSTestObjReflectedURLAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4430,7 +4430,7 @@ static inline bool setJSTestObjReflectedUSVURLAttrFunction(ExecState&, JSTestObj > > bool setJSTestObjReflectedUSVURLAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedUSVURLAttrFunction>(state, thisValue, encodedValue, "reflectedUSVURLAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedUSVURLAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedUSVURLAttr"); > } > > static inline bool setJSTestObjReflectedUSVURLAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4449,7 +4449,7 @@ static inline bool setJSTestObjReflectedStringAttrFunction(ExecState&, JSTestObj > > bool setJSTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedStringAttrFunction>(state, thisValue, encodedValue, "reflectedStringAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedStringAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedStringAttr"); > } > > static inline bool setJSTestObjReflectedStringAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4468,7 +4468,7 @@ static inline bool setJSTestObjReflectedCustomIntegralAttrFunction(ExecState&, J > > bool setJSTestObjReflectedCustomIntegralAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedCustomIntegralAttrFunction>(state, thisValue, encodedValue, "reflectedCustomIntegralAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedCustomIntegralAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedCustomIntegralAttr"); > } > > static inline bool setJSTestObjReflectedCustomIntegralAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4487,7 +4487,7 @@ static inline bool setJSTestObjReflectedCustomBooleanAttrFunction(ExecState&, JS > > bool setJSTestObjReflectedCustomBooleanAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedCustomBooleanAttrFunction>(state, thisValue, encodedValue, "reflectedCustomBooleanAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedCustomBooleanAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedCustomBooleanAttr"); > } > > static inline bool setJSTestObjReflectedCustomBooleanAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4506,7 +4506,7 @@ static inline bool setJSTestObjReflectedCustomURLAttrFunction(ExecState&, JSTest > > bool setJSTestObjReflectedCustomURLAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedCustomURLAttrFunction>(state, thisValue, encodedValue, "reflectedCustomURLAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReflectedCustomURLAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "reflectedCustomURLAttr"); > } > > static inline bool setJSTestObjReflectedCustomURLAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4526,7 +4526,7 @@ static inline bool setJSTestObjEnabledAtRuntimeAttributeFunction(ExecState&, JST > > bool setJSTestObjEnabledAtRuntimeAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjEnabledAtRuntimeAttributeFunction>(state, thisValue, encodedValue, "enabledAtRuntimeAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjEnabledAtRuntimeAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "enabledAtRuntimeAttribute"); > } > > static inline bool setJSTestObjEnabledAtRuntimeAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4547,7 +4547,7 @@ static inline bool setJSTestObjEnabledBySettingAttributeFunction(ExecState&, JST > > bool setJSTestObjEnabledBySettingAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjEnabledBySettingAttributeFunction>(state, thisValue, encodedValue, "enabledBySettingAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjEnabledBySettingAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "enabledBySettingAttribute"); > } > > static inline bool setJSTestObjEnabledBySettingAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4567,7 +4567,7 @@ static inline bool setJSTestObjTypedArrayAttrFunction(ExecState&, JSTestObj&, JS > > bool setJSTestObjTypedArrayAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjTypedArrayAttrFunction>(state, thisValue, encodedValue, "typedArrayAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjTypedArrayAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "typedArrayAttr"); > } > > static inline bool setJSTestObjTypedArrayAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4586,7 +4586,7 @@ static inline bool setJSTestObjAttributeWithGetterExceptionFunction(ExecState&, > > bool setJSTestObjAttributeWithGetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAttributeWithGetterExceptionFunction>(state, thisValue, encodedValue, "attributeWithGetterException"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAttributeWithGetterExceptionFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "attributeWithGetterException"); > } > > static inline bool setJSTestObjAttributeWithGetterExceptionFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4605,7 +4605,7 @@ static inline bool setJSTestObjAttributeWithSetterExceptionFunction(ExecState&, > > bool setJSTestObjAttributeWithSetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAttributeWithSetterExceptionFunction>(state, thisValue, encodedValue, "attributeWithSetterException"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAttributeWithSetterExceptionFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "attributeWithSetterException"); > } > > static inline bool setJSTestObjAttributeWithSetterExceptionFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4624,7 +4624,7 @@ static inline bool setJSTestObjStringAttrWithGetterExceptionFunction(ExecState&, > > bool setJSTestObjStringAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringAttrWithGetterExceptionFunction>(state, thisValue, encodedValue, "stringAttrWithGetterException"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringAttrWithGetterExceptionFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringAttrWithGetterException"); > } > > static inline bool setJSTestObjStringAttrWithGetterExceptionFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4643,7 +4643,7 @@ static inline bool setJSTestObjStringAttrWithSetterExceptionFunction(ExecState&, > > bool setJSTestObjStringAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringAttrWithSetterExceptionFunction>(state, thisValue, encodedValue, "stringAttrWithSetterException"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringAttrWithSetterExceptionFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringAttrWithSetterException"); > } > > static inline bool setJSTestObjStringAttrWithSetterExceptionFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4662,7 +4662,7 @@ static inline bool setJSTestObjCustomAttrFunction(ExecState&, JSTestObj&, JSValu > > bool setJSTestObjCustomAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjCustomAttrFunction>(state, thisValue, encodedValue, "customAttr"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjCustomAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "customAttr"); > } > > static inline bool setJSTestObjCustomAttrFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4678,7 +4678,7 @@ static inline bool setJSTestObjOnfooFunction(ExecState&, JSTestObj&, JSValue, Th > > bool setJSTestObjOnfoo(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjOnfooFunction>(state, thisValue, encodedValue, "onfoo"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjOnfooFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "onfoo"); > } > > static inline bool setJSTestObjOnfooFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4694,7 +4694,7 @@ static inline bool setJSTestObjOnwebkitfooFunction(ExecState&, JSTestObj&, JSVal > > bool setJSTestObjOnwebkitfoo(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjOnwebkitfooFunction>(state, thisValue, encodedValue, "onwebkitfoo"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjOnwebkitfooFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "onwebkitfoo"); > } > > static inline bool setJSTestObjOnwebkitfooFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4710,7 +4710,7 @@ static inline bool setJSTestObjWithScriptStateAttributeFunction(ExecState&, JSTe > > bool setJSTestObjWithScriptStateAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptStateAttributeFunction>(state, thisValue, encodedValue, "withScriptStateAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptStateAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withScriptStateAttribute"); > } > > static inline bool setJSTestObjWithScriptStateAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4729,7 +4729,7 @@ static inline bool setJSTestObjWithCallWithAndSetterCallWithAttributeFunction(Ex > > bool setJSTestObjWithCallWithAndSetterCallWithAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithCallWithAndSetterCallWithAttributeFunction>(state, thisValue, encodedValue, "withCallWithAndSetterCallWithAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithCallWithAndSetterCallWithAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withCallWithAndSetterCallWithAttribute"); > } > > static inline bool setJSTestObjWithCallWithAndSetterCallWithAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4748,7 +4748,7 @@ static inline bool setJSTestObjWithScriptExecutionContextAttributeFunction(ExecS > > bool setJSTestObjWithScriptExecutionContextAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAttributeFunction>(state, thisValue, encodedValue, "withScriptExecutionContextAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withScriptExecutionContextAttribute"); > } > > static inline bool setJSTestObjWithScriptExecutionContextAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4770,7 +4770,7 @@ static inline bool setJSTestObjWithScriptStateAttributeRaisesFunction(ExecState& > > bool setJSTestObjWithScriptStateAttributeRaises(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptStateAttributeRaisesFunction>(state, thisValue, encodedValue, "withScriptStateAttributeRaises"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptStateAttributeRaisesFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withScriptStateAttributeRaises"); > } > > static inline bool setJSTestObjWithScriptStateAttributeRaisesFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4789,7 +4789,7 @@ static inline bool setJSTestObjWithScriptExecutionContextAttributeRaisesFunction > > bool setJSTestObjWithScriptExecutionContextAttributeRaises(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAttributeRaisesFunction>(state, thisValue, encodedValue, "withScriptExecutionContextAttributeRaises"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAttributeRaisesFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withScriptExecutionContextAttributeRaises"); > } > > static inline bool setJSTestObjWithScriptExecutionContextAttributeRaisesFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4811,7 +4811,7 @@ static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateAttribute > > bool setJSTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAndScriptStateAttributeFunction>(state, thisValue, encodedValue, "withScriptExecutionContextAndScriptStateAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAndScriptStateAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withScriptExecutionContextAndScriptStateAttribute"); > } > > static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4833,7 +4833,7 @@ static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateAttribute > > bool setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaisesFunction>(state, thisValue, encodedValue, "withScriptExecutionContextAndScriptStateAttributeRaises"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaisesFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withScriptExecutionContextAndScriptStateAttributeRaises"); > } > > static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaisesFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4855,7 +4855,7 @@ static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateWithSpace > > bool setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeFunction>(state, thisValue, encodedValue, "withScriptExecutionContextAndScriptStateWithSpacesAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withScriptExecutionContextAndScriptStateWithSpacesAttribute"); > } > > static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4877,7 +4877,7 @@ static inline bool setJSTestObjWithScriptArgumentsAndCallStackAttributeFunction( > > bool setJSTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptArgumentsAndCallStackAttributeFunction>(state, thisValue, encodedValue, "withScriptArgumentsAndCallStackAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjWithScriptArgumentsAndCallStackAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "withScriptArgumentsAndCallStackAttribute"); > } > > static inline bool setJSTestObjWithScriptArgumentsAndCallStackAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4897,7 +4897,7 @@ static inline bool setJSTestObjConditionalAttr1Function(ExecState&, JSTestObj&, > > bool setJSTestObjConditionalAttr1(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjConditionalAttr1Function>(state, thisValue, encodedValue, "conditionalAttr1"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjConditionalAttr1Function, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "conditionalAttr1"); > } > > static inline bool setJSTestObjConditionalAttr1Function(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4918,7 +4918,7 @@ static inline bool setJSTestObjConditionalAttr2Function(ExecState&, JSTestObj&, > > bool setJSTestObjConditionalAttr2(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjConditionalAttr2Function>(state, thisValue, encodedValue, "conditionalAttr2"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjConditionalAttr2Function, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "conditionalAttr2"); > } > > static inline bool setJSTestObjConditionalAttr2Function(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -4939,7 +4939,7 @@ static inline bool setJSTestObjConditionalAttr3Function(ExecState&, JSTestObj&, > > bool setJSTestObjConditionalAttr3(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjConditionalAttr3Function>(state, thisValue, encodedValue, "conditionalAttr3"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjConditionalAttr3Function, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "conditionalAttr3"); > } > > static inline bool setJSTestObjConditionalAttr3Function(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5013,7 +5013,7 @@ static inline bool setJSTestObjAnyAttributeFunction(ExecState&, JSTestObj&, JSVa > > bool setJSTestObjAnyAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAnyAttributeFunction>(state, thisValue, encodedValue, "anyAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAnyAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "anyAttribute"); > } > > static inline bool setJSTestObjAnyAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5032,7 +5032,7 @@ static inline bool setJSTestObjObjectAttributeFunction(ExecState&, JSTestObj&, J > > bool setJSTestObjObjectAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjObjectAttributeFunction>(state, thisValue, encodedValue, "objectAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjObjectAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "objectAttribute"); > } > > static inline bool setJSTestObjObjectAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5051,7 +5051,7 @@ static inline bool setJSTestObjMutablePointFunction(ExecState&, JSTestObj&, JSVa > > bool setJSTestObjMutablePoint(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjMutablePointFunction>(state, thisValue, encodedValue, "mutablePoint"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjMutablePointFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "mutablePoint"); > } > > static inline bool setJSTestObjMutablePointFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5070,7 +5070,7 @@ static inline bool setJSTestObjStrawberryFunction(ExecState&, JSTestObj&, JSValu > > bool setJSTestObjStrawberry(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStrawberryFunction>(state, thisValue, encodedValue, "strawberry"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStrawberryFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "strawberry"); > } > > static inline bool setJSTestObjStrawberryFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5089,7 +5089,7 @@ static inline bool setJSTestObjIdFunction(ExecState&, JSTestObj&, JSValue, Throw > > bool setJSTestObjId(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjIdFunction>(state, thisValue, encodedValue, "id"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjIdFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "id"); > } > > static inline bool setJSTestObjIdFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5108,7 +5108,7 @@ static inline bool setJSTestObjReplaceableAttributeFunction(ExecState&, JSTestOb > > bool setJSTestObjReplaceableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReplaceableAttributeFunction>(state, thisValue, encodedValue, "replaceableAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjReplaceableAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "replaceableAttribute"); > } > > static inline bool setJSTestObjReplaceableAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5124,7 +5124,7 @@ static inline bool setJSTestObjNullableLongSettableAttributeFunction(ExecState&, > > bool setJSTestObjNullableLongSettableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableLongSettableAttributeFunction>(state, thisValue, encodedValue, "nullableLongSettableAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableLongSettableAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "nullableLongSettableAttribute"); > } > > static inline bool setJSTestObjNullableLongSettableAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5143,7 +5143,7 @@ static inline bool setJSTestObjNullableStringSettableAttributeFunction(ExecState > > bool setJSTestObjNullableStringSettableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableStringSettableAttributeFunction>(state, thisValue, encodedValue, "nullableStringSettableAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableStringSettableAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "nullableStringSettableAttribute"); > } > > static inline bool setJSTestObjNullableStringSettableAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5162,7 +5162,7 @@ static inline bool setJSTestObjNullableUSVStringSettableAttributeFunction(ExecSt > > bool setJSTestObjNullableUSVStringSettableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableUSVStringSettableAttributeFunction>(state, thisValue, encodedValue, "nullableUSVStringSettableAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableUSVStringSettableAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "nullableUSVStringSettableAttribute"); > } > > static inline bool setJSTestObjNullableUSVStringSettableAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5181,7 +5181,7 @@ static inline bool setJSTestObjNullableByteStringSettableAttributeFunction(ExecS > > bool setJSTestObjNullableByteStringSettableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableByteStringSettableAttributeFunction>(state, thisValue, encodedValue, "nullableByteStringSettableAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableByteStringSettableAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "nullableByteStringSettableAttribute"); > } > > static inline bool setJSTestObjNullableByteStringSettableAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5200,7 +5200,7 @@ static inline bool setJSTestObjNullableStringValueFunction(ExecState&, JSTestObj > > bool setJSTestObjNullableStringValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableStringValueFunction>(state, thisValue, encodedValue, "nullableStringValue"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjNullableStringValueFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "nullableStringValue"); > } > > static inline bool setJSTestObjNullableStringValueFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5219,7 +5219,7 @@ static inline bool setJSTestObjAttributeWithReservedEnumTypeFunction(ExecState&, > > bool setJSTestObjAttributeWithReservedEnumType(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAttributeWithReservedEnumTypeFunction>(state, thisValue, encodedValue, "attributeWithReservedEnumType"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjAttributeWithReservedEnumTypeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "attributeWithReservedEnumType"); > } > > static inline bool setJSTestObjAttributeWithReservedEnumTypeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5240,7 +5240,7 @@ static inline bool setJSTestObjPutForwardsAttributeFunction(ExecState&, JSTestOb > > bool setJSTestObjPutForwardsAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjPutForwardsAttributeFunction>(state, thisValue, encodedValue, "putForwardsAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjPutForwardsAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "putForwardsAttribute"); > } > > static inline bool setJSTestObjPutForwardsAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5260,7 +5260,7 @@ static inline bool setJSTestObjPutForwardsNullableAttributeFunction(ExecState&, > > bool setJSTestObjPutForwardsNullableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjPutForwardsNullableAttributeFunction>(state, thisValue, encodedValue, "putForwardsNullableAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjPutForwardsNullableAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "putForwardsNullableAttribute"); > } > > static inline bool setJSTestObjPutForwardsNullableAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >@@ -5282,7 +5282,7 @@ static inline bool setJSTestObjStringifierAttributeFunction(ExecState&, JSTestOb > > bool setJSTestObjStringifierAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringifierAttributeFunction>(state, thisValue, encodedValue, "stringifierAttribute"); >+ return BindingCaller<JSTestObj>::setAttribute<setJSTestObjStringifierAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringifierAttribute"); > } > > static inline bool setJSTestObjStringifierAttributeFunction(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp >index 908065995a63fe6ede5701a7ef75fc8eac4482f1..7e2dce328a13fb261c08f7e2665ae5a561008dd3 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..182ee977b523e719c44f4f8273dd8d9ba3469e46 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..cd17b57aca1fbf21c5466dce97782084a0152f69 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..e21273aa9876b20a3155be5e9f13d4f0791f6386 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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..9df41f8bf717af2e2ba20aa764258700685fd97a 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -285,7 +285,7 @@ static inline bool setJSTestSerializationFirstStringAttributeFunction(ExecState& > > bool setJSTestSerializationFirstStringAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationFirstStringAttributeFunction>(state, thisValue, encodedValue, "firstStringAttribute"); >+ return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationFirstStringAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "firstStringAttribute"); > } > > static inline bool setJSTestSerializationFirstStringAttributeFunction(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope) >@@ -304,7 +304,7 @@ static inline bool setJSTestSerializationSecondLongAttributeFunction(ExecState&, > > bool setJSTestSerializationSecondLongAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationSecondLongAttributeFunction>(state, thisValue, encodedValue, "secondLongAttribute"); >+ return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationSecondLongAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "secondLongAttribute"); > } > > static inline bool setJSTestSerializationSecondLongAttributeFunction(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope) >@@ -323,7 +323,7 @@ static inline bool setJSTestSerializationThirdUnserializableAttributeFunction(Ex > > bool setJSTestSerializationThirdUnserializableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationThirdUnserializableAttributeFunction>(state, thisValue, encodedValue, "thirdUnserializableAttribute"); >+ return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationThirdUnserializableAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "thirdUnserializableAttribute"); > } > > static inline bool setJSTestSerializationThirdUnserializableAttributeFunction(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope) >@@ -342,7 +342,7 @@ static inline bool setJSTestSerializationFourthUnrestrictedDoubleAttributeFuncti > > bool setJSTestSerializationFourthUnrestrictedDoubleAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationFourthUnrestrictedDoubleAttributeFunction>(state, thisValue, encodedValue, "fourthUnrestrictedDoubleAttribute"); >+ return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationFourthUnrestrictedDoubleAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "fourthUnrestrictedDoubleAttribute"); > } > > static inline bool setJSTestSerializationFourthUnrestrictedDoubleAttributeFunction(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope) >@@ -361,7 +361,7 @@ static inline bool setJSTestSerializationFifthLongAttributeFunction(ExecState&, > > bool setJSTestSerializationFifthLongAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationFifthLongAttributeFunction>(state, thisValue, encodedValue, "fifthLongAttribute"); >+ return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationFifthLongAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "fifthLongAttribute"); > } > > static inline bool setJSTestSerializationFifthLongAttributeFunction(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope) >@@ -380,7 +380,7 @@ static inline bool setJSTestSerializationSixthTypedefAttributeFunction(ExecState > > bool setJSTestSerializationSixthTypedefAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationSixthTypedefAttributeFunction>(state, thisValue, encodedValue, "sixthTypedefAttribute"); >+ return BindingCaller<JSTestSerialization>::setAttribute<setJSTestSerializationSixthTypedefAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "sixthTypedefAttribute"); > } > > static inline bool setJSTestSerializationSixthTypedefAttributeFunction(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp >index 12410f5c45c906f569790b39c89b91fb570f8bb8..654304994e00b24ed29b2421cde7eb5b5a8a8760 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -181,7 +181,7 @@ static inline bool setJSTestSerializationInheritInheritLongAttributeFunction(Exe > > bool setJSTestSerializationInheritInheritLongAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerializationInherit>::setAttribute<setJSTestSerializationInheritInheritLongAttributeFunction>(state, thisValue, encodedValue, "inheritLongAttribute"); >+ return BindingCaller<JSTestSerializationInherit>::setAttribute<setJSTestSerializationInheritInheritLongAttributeFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "inheritLongAttribute"); > } > > static inline bool setJSTestSerializationInheritInheritLongAttributeFunction(ExecState& state, JSTestSerializationInherit& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp >index e626723d36bc621b383ee2527f7701b62e92132c..e6c66c42a4ef1a52a07fc38f183870be80baa9ea 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -200,7 +200,7 @@ static inline bool setJSTestSerializationInheritFinalFinalLongAttributeFooFuncti > > bool setJSTestSerializationInheritFinalFinalLongAttributeFoo(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerializationInheritFinal>::setAttribute<setJSTestSerializationInheritFinalFinalLongAttributeFooFunction>(state, thisValue, encodedValue, "finalLongAttributeFoo"); >+ return BindingCaller<JSTestSerializationInheritFinal>::setAttribute<setJSTestSerializationInheritFinalFinalLongAttributeFooFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "finalLongAttributeFoo"); > } > > static inline bool setJSTestSerializationInheritFinalFinalLongAttributeFooFunction(ExecState& state, JSTestSerializationInheritFinal& thisObject, JSValue value, ThrowScope& throwScope) >@@ -219,7 +219,7 @@ static inline bool setJSTestSerializationInheritFinalFinalLongAttributeBarFuncti > > bool setJSTestSerializationInheritFinalFinalLongAttributeBar(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerializationInheritFinal>::setAttribute<setJSTestSerializationInheritFinalFinalLongAttributeBarFunction>(state, thisValue, encodedValue, "finalLongAttributeBar"); >+ return BindingCaller<JSTestSerializationInheritFinal>::setAttribute<setJSTestSerializationInheritFinalFinalLongAttributeBarFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "finalLongAttributeBar"); > } > > static inline bool setJSTestSerializationInheritFinalFinalLongAttributeBarFunction(ExecState& state, JSTestSerializationInheritFinal& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp >index 8a41f5ba4ade31ee92afa9c906aaa9305cb0cf8c..3d2739d36afbeb9d36716f2dbab8ebd7a6d8e145 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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -276,7 +276,7 @@ static inline bool setJSTestSerializedScriptValueInterfaceValueFunction(ExecStat > > bool setJSTestSerializedScriptValueInterfaceValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerializedScriptValueInterface>::setAttribute<setJSTestSerializedScriptValueInterfaceValueFunction>(state, thisValue, encodedValue, "value"); >+ return BindingCaller<JSTestSerializedScriptValueInterface>::setAttribute<setJSTestSerializedScriptValueInterfaceValueFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "value"); > } > > static inline bool setJSTestSerializedScriptValueInterfaceValueFunction(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, JSValue value, ThrowScope& throwScope) >@@ -295,7 +295,7 @@ static inline bool setJSTestSerializedScriptValueInterfaceCachedValueFunction(Ex > > bool setJSTestSerializedScriptValueInterfaceCachedValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestSerializedScriptValueInterface>::setAttribute<setJSTestSerializedScriptValueInterfaceCachedValueFunction>(state, thisValue, encodedValue, "cachedValue"); >+ return BindingCaller<JSTestSerializedScriptValueInterface>::setAttribute<setJSTestSerializedScriptValueInterfaceCachedValueFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "cachedValue"); > } > > static inline bool setJSTestSerializedScriptValueInterfaceCachedValueFunction(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, JSValue value, ThrowScope& throwScope) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp >index dc679bbd468d71db5ef7748ba4ae8182917de13a..30656bd94d1afc15cb717b1fb3a0963842f949ec 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp >@@ -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); >+ reifyStaticPropertiesIncludingDOMAttributes(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) >@@ -414,7 +414,7 @@ static inline bool setJSTestTypedefsUnsignedLongLongAttrFunction(ExecState&, JST > > bool setJSTestTypedefsUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsUnsignedLongLongAttrFunction>(state, thisValue, encodedValue, "unsignedLongLongAttr"); >+ return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsUnsignedLongLongAttrFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "unsignedLongLongAttr"); > } > > static inline bool setJSTestTypedefsUnsignedLongLongAttrFunction(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope) >@@ -433,7 +433,7 @@ static inline bool setJSTestTypedefsSerializedScriptValueFunction(ExecState&, JS > > bool setJSTestTypedefsSerializedScriptValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsSerializedScriptValueFunction>(state, thisValue, encodedValue, "serializedScriptValue"); >+ return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsSerializedScriptValueFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "serializedScriptValue"); > } > > static inline bool setJSTestTypedefsSerializedScriptValueFunction(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope) >@@ -452,7 +452,7 @@ static inline bool setJSTestTypedefsAttributeWithClampFunction(ExecState&, JSTes > > bool setJSTestTypedefsAttributeWithClamp(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsAttributeWithClampFunction>(state, thisValue, encodedValue, "attributeWithClamp"); >+ return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsAttributeWithClampFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "attributeWithClamp"); > } > > static inline bool setJSTestTypedefsAttributeWithClampFunction(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope) >@@ -471,7 +471,7 @@ static inline bool setJSTestTypedefsAttributeWithClampInTypedefFunction(ExecStat > > bool setJSTestTypedefsAttributeWithClampInTypedef(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsAttributeWithClampInTypedefFunction>(state, thisValue, encodedValue, "attributeWithClampInTypedef"); >+ return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsAttributeWithClampInTypedefFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "attributeWithClampInTypedef"); > } > > static inline bool setJSTestTypedefsAttributeWithClampInTypedefFunction(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope) >@@ -490,7 +490,7 @@ static inline bool setJSTestTypedefsAttrWithGetterExceptionFunction(ExecState&, > > bool setJSTestTypedefsAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsAttrWithGetterExceptionFunction>(state, thisValue, encodedValue, "attrWithGetterException"); >+ return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsAttrWithGetterExceptionFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "attrWithGetterException"); > } > > static inline bool setJSTestTypedefsAttrWithGetterExceptionFunction(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope) >@@ -509,7 +509,7 @@ static inline bool setJSTestTypedefsAttrWithSetterExceptionFunction(ExecState&, > > bool setJSTestTypedefsAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsAttrWithSetterExceptionFunction>(state, thisValue, encodedValue, "attrWithSetterException"); >+ return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsAttrWithSetterExceptionFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "attrWithSetterException"); > } > > static inline bool setJSTestTypedefsAttrWithSetterExceptionFunction(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope) >@@ -528,7 +528,7 @@ static inline bool setJSTestTypedefsStringAttrWithGetterExceptionFunction(ExecSt > > bool setJSTestTypedefsStringAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsStringAttrWithGetterExceptionFunction>(state, thisValue, encodedValue, "stringAttrWithGetterException"); >+ return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsStringAttrWithGetterExceptionFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringAttrWithGetterException"); > } > > static inline bool setJSTestTypedefsStringAttrWithGetterExceptionFunction(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope) >@@ -547,7 +547,7 @@ static inline bool setJSTestTypedefsStringAttrWithSetterExceptionFunction(ExecSt > > bool setJSTestTypedefsStringAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue) > { >- return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsStringAttrWithSetterExceptionFunction>(state, thisValue, encodedValue, "stringAttrWithSetterException"); >+ return BindingCaller<JSTestTypedefs>::setAttribute<setJSTestTypedefsStringAttrWithSetterExceptionFunction, CastedThisErrorBehavior::Assert>(state, thisValue, encodedValue, "stringAttrWithSetterException"); > } > > static inline bool setJSTestTypedefsStringAttrWithSetterExceptionFunction(ExecState& state, JSTestTypedefs& thisObject, JSValue value, 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..4b9a91e582981fd9ad4947d1371854187f80394d 100644 >--- a/JSTests/ChangeLog >+++ b/JSTests/ChangeLog >@@ -1,3 +1,16 @@ >+2017-05-14 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-complex-with-incorrect-object.js: >+ (i.shouldThrow): >+ * stress/domjit-getter-type-check.js: Copied from JSTests/stress/domjit-getter-complex-with-incorrect-object.js. >+ (shouldBe): >+ (i.shouldThrow): >+ > 2017-05-11 JF Bastien <jfbastien@apple.com> > > WebAssembly: stop supporting 0xD >diff --git a/JSTests/stress/domjit-getter-complex-with-incorrect-object.js b/JSTests/stress/domjit-getter-complex-with-incorrect-object.js >index b4b80ccd884ac38d043be6208cb98e7c20af6a30..9e6c5a6f49c4bd86ef431288d16cb90d42dda9b3 100644 >--- a/JSTests/stress/domjit-getter-complex-with-incorrect-object.js >+++ b/JSTests/stress/domjit-getter-complex-with-incorrect-object.js >@@ -24,5 +24,5 @@ function access(object) > for (var i = 0; i < 1e4; ++i) { > shouldThrow(() => { > access(object); >- }, `TypeError: Type error`); >+ }, `TypeError: The DOMJITGetterComplex.customGetter getter can only be used on instances of DOMJITGetterComplex`); > } >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