Remove the need for SetterMayThrowException
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 21 Sep 2017 23:37:08 +0000 (23:37 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 21 Sep 2017 23:37:08 +0000 (23:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=177099

Patch by Youenn Fablet <youenn@apple.com> on 2017-09-21
Reviewed by Sam Weinig.

No change of behavior.
Introducing AttributeSetter to handle exception raising attribute setters,
based on the C++ class method instead of SetterMayThrowException.
A follow-up patch should remove SetterMayThrowException from the IDLs

* bindings/js/JSDOMAttribute.h:
(WebCore::AttributeSetter<ExceptionOr<void>>::call):
(WebCore::AttributeSetter<void>::call):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateAttributeSetterBodyDefinition):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
* bindings/scripts/test/JS/JSTestNode.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestSerialization.cpp:
* bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
* bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222365 268f45cc-cd09-0410-ab3c-d52691b4dbfc

18 files changed:
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSDOMAttribute.h
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp

index 5d1132a..367efb1 100644 (file)
@@ -1,3 +1,36 @@
+2017-09-21  Youenn Fablet  <youenn@apple.com>
+
+        Remove the need for SetterMayThrowException
+        https://bugs.webkit.org/show_bug.cgi?id=177099
+
+        Reviewed by Sam Weinig.
+
+        No change of behavior.
+        Introducing AttributeSetter to handle exception raising attribute setters,
+        based on the C++ class method instead of SetterMayThrowException.
+        A follow-up patch should remove SetterMayThrowException from the IDLs
+
+        * bindings/js/JSDOMAttribute.h:
+        (WebCore::AttributeSetter<ExceptionOr<void>>::call):
+        (WebCore::AttributeSetter<void>::call):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateAttributeSetterBodyDefinition):
+        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
+        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
+        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
+        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
+        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
+        * bindings/scripts/test/JS/JSTestNode.cpp:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        * bindings/scripts/test/JS/JSTestSerialization.cpp:
+        * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
+        * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+        * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+
 2017-09-21  Ryosuke Niwa  <rniwa@webkit.org>
 
         DataTransfer.items should contain text/html and text/uri-list
index 634f442..dcfa820 100644 (file)
@@ -90,4 +90,28 @@ public:
     }
 };
 
+template<typename ReturnType>
+struct AttributeSetter;
+
+template<>
+struct AttributeSetter<ExceptionOr<void>> {
+    template<typename Functor>
+    static void call(JSC::ExecState& state, JSC::ThrowScope& throwScope, Functor&& functor)
+    {
+        auto result = functor();
+        if (!result.hasException())
+            return;
+        propagateException(state, throwScope, result.releaseException());
+    }
+};
+
+template<>
+struct AttributeSetter<void> {
+    template<typename Functor>
+    static void call(JSC::ExecState&, JSC::ThrowScope&, Functor&& functor)
+    {
+        functor();
+    }
+};
+
 } // namespace WebCore
index 5e709f1..3813951 100644 (file)
@@ -4801,7 +4801,6 @@ sub GenerateAttributeSetterBodyDefinition
     
     push(@$outputArray, "static inline bool ${attributeSetterBodyName}(" . join(", ", @signatureArguments) . ")\n");
     push(@$outputArray, "{\n");
-    push(@$outputArray, "    UNUSED_PARAM(state);\n");
     push(@$outputArray, "    UNUSED_PARAM(throwScope);\n");
     
     if ($attribute->extendedAttributes->{CEReactions}) {
@@ -4915,9 +4914,6 @@ sub GenerateAttributeSetterBodyDefinition
         unshift(@arguments, GenerateCallWithUsingReferences($attribute->extendedAttributes->{SetterCallWith}, $outputArray, "false", "thisObject"));
         unshift(@arguments, GenerateCallWithUsingReferences($attribute->extendedAttributes->{CallWith}, $outputArray, "false", "thisObject"));
 
-        my $functionString = "${functionName}(" . join(", ", @arguments) . ")";
-        $functionString = "propagateException(state, throwScope, $functionString)" if $attribute->extendedAttributes->{SetterMayThrowException};
-
         my $callTracingCallback = $attribute->extendedAttributes->{CallTracingCallback} || $interface->extendedAttributes->{CallTracingCallback};
         if ($callTracingCallback) {
             my $indent = "    ";
@@ -4926,7 +4922,10 @@ sub GenerateAttributeSetterBodyDefinition
             GenerateCallTracer($outputArray, $callTracingCallback, $attribute->name, \@callTracerArguments, $indent);
         }
 
-        push(@$outputArray, "    ${functionString};\n");
+        my $functionString = "${functionName}(" . join(", ", @arguments) . ")";
+        push(@$outputArray, "    AttributeSetter<decltype($functionString)>::call(state, throwScope, [&] {\n");
+        push(@$outputArray, "        return $functionString;\n");
+        push(@$outputArray, "    });\n");
         push(@$outputArray, "    return true;\n");
     }
     push(@$outputArray, "}\n\n");
index 70af4bc..e2f2c95 100644 (file)
@@ -201,13 +201,14 @@ EncodedJSValue jsTestCEReactionsAttributeWithCEReactions(ExecState* state, Encod
 
 static inline bool setJSTestCEReactionsAttributeWithCEReactionsSetter(ExecState& state, JSTestCEReactions& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     CustomElementReactionStack customElementReactionStack;
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithCEReactions(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithCEReactions(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithCEReactions(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -232,13 +233,14 @@ EncodedJSValue jsTestCEReactionsReflectAttributeWithCEReactions(ExecState* state
 
 static inline bool setJSTestCEReactionsReflectAttributeWithCEReactionsSetter(ExecState& state, JSTestCEReactions& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     CustomElementReactionStack customElementReactionStack;
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectattributewithcereactionsAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectattributewithcereactionsAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectattributewithcereactionsAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -263,7 +265,6 @@ EncodedJSValue jsTestCEReactionsStringifierAttribute(ExecState* state, EncodedJS
 
 static inline bool setJSTestCEReactionsStringifierAttributeSetter(ExecState& state, JSTestCEReactions& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto id = Identifier::fromString(&state.vm(), reinterpret_cast<const LChar*>("stringifierAttribute"), strlen("stringifierAttribute"));
     auto valueToForwardTo = thisObject.get(&state, id);
index c9e2915..e37a512 100644 (file)
@@ -191,13 +191,14 @@ EncodedJSValue jsTestCEReactionsStringifierValue(ExecState* state, EncodedJSValu
 
 static inline bool setJSTestCEReactionsStringifierValueSetter(ExecState& state, JSTestCEReactionsStringifier& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     CustomElementReactionStack customElementReactionStack;
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setValue(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setValue(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setValue(WTFMove(nativeValue));
+    });
     return true;
 }
 
index 4d6d953..5442107 100644 (file)
@@ -234,7 +234,6 @@ EncodedJSValue jsTestCallTracerTestAttributeInterface(ExecState* state, EncodedJ
 
 static inline bool setJSTestCallTracerTestAttributeInterfaceSetter(ExecState& state, JSTestCallTracer& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLBoolean>(state, value);
@@ -244,7 +243,9 @@ static inline bool setJSTestCallTracerTestAttributeInterfaceSetter(ExecState& st
         callTracerParameters.append(nativeValue);
         CallTracer::testCallTracerInterface(impl, ASCIILiteral("testAttributeInterface"), WTFMove(callTracerParameters));
     }
-    impl.setTestAttributeInterface(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setTestAttributeInterface(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setTestAttributeInterface(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -271,7 +272,6 @@ EncodedJSValue jsTestCallTracerTestAttributeSpecified(ExecState* state, EncodedJ
 
 static inline bool setJSTestCallTracerTestAttributeSpecifiedSetter(ExecState& state, JSTestCallTracer& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLBoolean>(state, value);
@@ -281,7 +281,9 @@ static inline bool setJSTestCallTracerTestAttributeSpecifiedSetter(ExecState& st
         callTracerParameters.append(nativeValue);
         CallTracer::testCallTracerAttribute(impl, ASCIILiteral("testAttributeSpecified"), WTFMove(callTracerParameters));
     }
-    impl.setTestAttributeSpecified(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setTestAttributeSpecified(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setTestAttributeSpecified(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -308,7 +310,6 @@ EncodedJSValue jsTestCallTracerTestAttributeWithVariant(ExecState* state, Encode
 
 static inline bool setJSTestCallTracerTestAttributeWithVariantSetter(ExecState& state, JSTestCallTracer& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnion<IDLBoolean, IDLFloat, IDLDOMString>>(state, value);
@@ -318,7 +319,9 @@ static inline bool setJSTestCallTracerTestAttributeWithVariantSetter(ExecState&
         WTF::visit([&] (auto& value) { callTracerParameters.append(value); }, nativeValue);
         CallTracer::testCallTracerInterface(impl, ASCIILiteral("testAttributeWithVariant"), WTFMove(callTracerParameters));
     }
-    impl.setTestAttributeWithVariant(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setTestAttributeWithVariant(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setTestAttributeWithVariant(WTFMove(nativeValue));
+    });
     return true;
 }
 
index 59ecc87..32c55c5 100644 (file)
@@ -225,7 +225,6 @@ EncodedJSValue jsTestEnabledBySettingTestSubObjEnabledBySettingConstructor(ExecS
 
 static inline bool setJSTestEnabledBySettingTestSubObjEnabledBySettingConstructorSetter(ExecState& state, JSTestEnabledBySetting& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     // Shadowing a built-in constructor.
     return thisObject.putDirect(state.vm(), Identifier::fromString(&state.vm(), reinterpret_cast<const LChar*>("TestSubObjEnabledBySetting"), strlen("TestSubObjEnabledBySetting")), value);
@@ -256,12 +255,13 @@ EncodedJSValue jsTestEnabledBySettingEnabledBySettingAttribute(ExecState* state,
 #if ENABLE(TEST_FEATURE)
 static inline bool setJSTestEnabledBySettingEnabledBySettingAttributeSetter(ExecState& state, JSTestEnabledBySetting& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setEnabledBySettingAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setEnabledBySettingAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setEnabledBySettingAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
index 5d08bd1..a80779b 100644 (file)
@@ -258,12 +258,13 @@ EncodedJSValue jsTestGlobalObjectRegularAttribute(ExecState* state, EncodedJSVal
 
 static inline bool setJSTestGlobalObjectRegularAttributeSetter(ExecState& state, JSTestGlobalObject& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setRegularAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setRegularAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setRegularAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -288,12 +289,13 @@ EncodedJSValue jsTestGlobalObjectPublicAndPrivateAttribute(ExecState* state, Enc
 
 static inline bool setJSTestGlobalObjectPublicAndPrivateAttributeSetter(ExecState& state, JSTestGlobalObject& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setPublicAndPrivateAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setPublicAndPrivateAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setPublicAndPrivateAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -322,12 +324,13 @@ EncodedJSValue jsTestGlobalObjectPublicAndPrivateConditionalAttribute(ExecState*
 #if ENABLE(TEST_FEATURE)
 static inline bool setJSTestGlobalObjectPublicAndPrivateConditionalAttributeSetter(ExecState& state, JSTestGlobalObject& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setPublicAndPrivateConditionalAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setPublicAndPrivateConditionalAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setPublicAndPrivateConditionalAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -358,12 +361,13 @@ EncodedJSValue jsTestGlobalObjectEnabledAtRuntimeAttribute(ExecState* state, Enc
 #if ENABLE(TEST_FEATURE)
 static inline bool setJSTestGlobalObjectEnabledAtRuntimeAttributeSetter(ExecState& state, JSTestGlobalObject& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setEnabledAtRuntimeAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setEnabledAtRuntimeAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setEnabledAtRuntimeAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
index 46b1f36..a947a27 100644 (file)
@@ -491,11 +491,12 @@ EncodedJSValue jsTestInterfaceConstructorImplementsStaticAttr(ExecState* state,
 #if ENABLE(Condition22) || ENABLE(Condition23)
 static inline bool setJSTestInterfaceConstructorImplementsStaticAttrSetter(ExecState& state, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    TestInterface::setImplementsStaticAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(TestInterface::setImplementsStaticAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return TestInterface::setImplementsStaticAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -543,12 +544,13 @@ EncodedJSValue jsTestInterfaceImplementsStr2(ExecState* state, EncodedJSValue th
 #if ENABLE(Condition22) || ENABLE(Condition23)
 static inline bool setJSTestInterfaceImplementsStr2Setter(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setImplementsStr2(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setImplementsStr2(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setImplementsStr2(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -577,7 +579,6 @@ EncodedJSValue jsTestInterfaceImplementsStr3(ExecState* state, EncodedJSValue th
 #if ENABLE(Condition22) || ENABLE(Condition23)
 static inline bool setJSTestInterfaceImplementsStr3Setter(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     thisObject.setImplementsStr3(state, value);
     return true;
@@ -610,12 +611,13 @@ EncodedJSValue jsTestInterfaceImplementsNode(ExecState* state, EncodedJSValue th
 #if ENABLE(Condition22) || ENABLE(Condition23)
 static inline bool setJSTestInterfaceImplementsNodeSetter(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<Node>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestInterface", "implementsNode", "Node"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setImplementsNode(*nativeValue);
+    AttributeSetter<decltype(impl.setImplementsNode(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setImplementsNode(*nativeValue);
+    });
     return true;
 }
 
@@ -661,11 +663,12 @@ EncodedJSValue jsTestInterfaceConstructorSupplementalStaticAttr(ExecState* state
 #if ENABLE(Condition11) || ENABLE(Condition12)
 static inline bool setJSTestInterfaceConstructorSupplementalStaticAttrSetter(ExecState& state, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    WebCore::TestSupplemental::setSupplementalStaticAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(WebCore::TestSupplemental::setSupplementalStaticAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return WebCore::TestSupplemental::setSupplementalStaticAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -713,12 +716,13 @@ EncodedJSValue jsTestInterfaceSupplementalStr2(ExecState* state, EncodedJSValue
 #if ENABLE(Condition11) || ENABLE(Condition12)
 static inline bool setJSTestInterfaceSupplementalStr2Setter(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    WebCore::TestSupplemental::setSupplementalStr2(impl, WTFMove(nativeValue));
+    AttributeSetter<decltype(WebCore::TestSupplemental::setSupplementalStr2(impl, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return WebCore::TestSupplemental::setSupplementalStr2(impl, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -747,7 +751,6 @@ EncodedJSValue jsTestInterfaceSupplementalStr3(ExecState* state, EncodedJSValue
 #if ENABLE(Condition11) || ENABLE(Condition12)
 static inline bool setJSTestInterfaceSupplementalStr3Setter(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     thisObject.setSupplementalStr3(state, value);
     return true;
@@ -780,12 +783,13 @@ EncodedJSValue jsTestInterfaceSupplementalNode(ExecState* state, EncodedJSValue
 #if ENABLE(Condition11) || ENABLE(Condition12)
 static inline bool setJSTestInterfaceSupplementalNodeSetter(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<Node>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestInterface", "supplementalNode", "Node"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    WebCore::TestSupplemental::setSupplementalNode(impl, *nativeValue);
+    AttributeSetter<decltype(WebCore::TestSupplemental::setSupplementalNode(impl, *nativeValue))>::call(state, throwScope, [&] {
+        return WebCore::TestSupplemental::setSupplementalNode(impl, *nativeValue);
+    });
     return true;
 }
 
@@ -816,12 +820,13 @@ EncodedJSValue jsTestInterfaceReflectAttribute(ExecState* state, EncodedJSValue
 #if ENABLE(Condition11) || ENABLE(Condition12)
 static inline bool setJSTestInterfaceReflectAttributeSetter(ExecState& state, JSTestInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectattributeAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectattributeAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectattributeAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
index db025dc..274c453 100644 (file)
@@ -207,7 +207,6 @@ EncodedJSValue jsTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state,
 
 static inline bool setJSTestJSBuiltinConstructorTestAttributeRWCustomSetter(ExecState& state, JSTestJSBuiltinConstructor& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     thisObject.setTestAttributeRWCustom(state, value);
     return true;
index 4da27d0..e0f6bef 100644 (file)
@@ -262,12 +262,13 @@ EncodedJSValue jsTestNodeName(ExecState* state, EncodedJSValue thisValue, Proper
 
 static inline bool setJSTestNodeNameSetter(ExecState& state, JSTestNode& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setName(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setName(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setName(WTFMove(nativeValue));
+    });
     return true;
 }
 
index e65f52a..92eb54e 100644 (file)
@@ -2233,11 +2233,12 @@ EncodedJSValue jsTestObjConstructorStaticStringAttr(ExecState* state, EncodedJSV
 
 static inline bool setJSTestObjConstructorStaticStringAttrSetter(ExecState& state, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    TestObj::setStaticStringAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(TestObj::setStaticStringAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return TestObj::setStaticStringAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2274,7 +2275,6 @@ EncodedJSValue jsTestObjEnumAttr(ExecState* state, EncodedJSValue thisValue, Pro
 
 static inline bool setJSTestObjEnumAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto optionalNativeValue = parseEnumeration<TestObj::EnumType>(state, value);
@@ -2282,7 +2282,9 @@ static inline bool setJSTestObjEnumAttrSetter(ExecState& state, JSTestObj& thisO
     if (UNLIKELY(!optionalNativeValue))
         return false;
     auto nativeValue = optionalNativeValue.value();
-    impl.setEnumAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setEnumAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setEnumAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2307,12 +2309,13 @@ EncodedJSValue jsTestObjByteAttr(ExecState* state, EncodedJSValue thisValue, Pro
 
 static inline bool setJSTestObjByteAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLByte>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setByteAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setByteAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setByteAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2337,12 +2340,13 @@ EncodedJSValue jsTestObjOctetAttr(ExecState* state, EncodedJSValue thisValue, Pr
 
 static inline bool setJSTestObjOctetAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLOctet>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setOctetAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setOctetAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setOctetAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2367,12 +2371,13 @@ EncodedJSValue jsTestObjShortAttr(ExecState* state, EncodedJSValue thisValue, Pr
 
 static inline bool setJSTestObjShortAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLShort>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setShortAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setShortAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setShortAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2397,12 +2402,13 @@ EncodedJSValue jsTestObjClampedShortAttr(ExecState* state, EncodedJSValue thisVa
 
 static inline bool setJSTestObjClampedShortAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLClampAdaptor<IDLShort>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setClampedShortAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setClampedShortAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setClampedShortAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2427,12 +2433,13 @@ EncodedJSValue jsTestObjEnforceRangeShortAttr(ExecState* state, EncodedJSValue t
 
 static inline bool setJSTestObjEnforceRangeShortAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLEnforceRangeAdaptor<IDLShort>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setEnforceRangeShortAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setEnforceRangeShortAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setEnforceRangeShortAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2457,12 +2464,13 @@ EncodedJSValue jsTestObjUnsignedShortAttr(ExecState* state, EncodedJSValue thisV
 
 static inline bool setJSTestObjUnsignedShortAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnsignedShort>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setUnsignedShortAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setUnsignedShortAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setUnsignedShortAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2487,12 +2495,13 @@ EncodedJSValue jsTestObjLongAttr(ExecState* state, EncodedJSValue thisValue, Pro
 
 static inline bool setJSTestObjLongAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setLongAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setLongAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setLongAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2517,12 +2526,13 @@ EncodedJSValue jsTestObjLongLongAttr(ExecState* state, EncodedJSValue thisValue,
 
 static inline bool setJSTestObjLongLongAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLongLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setLongLongAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setLongLongAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setLongLongAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2547,12 +2557,13 @@ EncodedJSValue jsTestObjUnsignedLongLongAttr(ExecState* state, EncodedJSValue th
 
 static inline bool setJSTestObjUnsignedLongLongAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnsignedLongLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setUnsignedLongLongAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setUnsignedLongLongAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setUnsignedLongLongAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2577,12 +2588,13 @@ EncodedJSValue jsTestObjStringAttr(ExecState* state, EncodedJSValue thisValue, P
 
 static inline bool setJSTestObjStringAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setStringAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setStringAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2607,12 +2619,13 @@ EncodedJSValue jsTestObjUsvstringAttr(ExecState* state, EncodedJSValue thisValue
 
 static inline bool setJSTestObjUsvstringAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUSVString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setUsvstringAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setUsvstringAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setUsvstringAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2637,12 +2650,13 @@ EncodedJSValue jsTestObjTestObjAttr(ExecState* state, EncodedJSValue thisValue,
 
 static inline bool setJSTestObjTestObjAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "testObjAttr", "TestObj"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setTestObjAttr(*nativeValue);
+    AttributeSetter<decltype(impl.setTestObjAttr(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setTestObjAttr(*nativeValue);
+    });
     return true;
 }
 
@@ -2667,12 +2681,13 @@ EncodedJSValue jsTestObjTestNullableObjAttr(ExecState* state, EncodedJSValue thi
 
 static inline bool setJSTestObjTestNullableObjAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLNullable<IDLInterface<TestObj>>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "testNullableObjAttr", "TestObj"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setTestNullableObjAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setTestNullableObjAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setTestNullableObjAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2697,12 +2712,13 @@ EncodedJSValue jsTestObjLenientTestObjAttr(ExecState* state, EncodedJSValue this
 
 static inline bool setJSTestObjLenientTestObjAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "lenientTestObjAttr", "TestObj"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setLenientTestObjAttr(*nativeValue);
+    AttributeSetter<decltype(impl.setLenientTestObjAttr(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setLenientTestObjAttr(*nativeValue);
+    });
     return true;
 }
 
@@ -2741,12 +2757,13 @@ EncodedJSValue jsTestObjStringAttrTreatingNullAsEmptyString(ExecState* state, En
 
 static inline bool setJSTestObjStringAttrTreatingNullAsEmptyStringSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLTreatNullAsEmptyAdaptor<IDLDOMString>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setStringAttrTreatingNullAsEmptyString(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setStringAttrTreatingNullAsEmptyString(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringAttrTreatingNullAsEmptyString(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2771,12 +2788,13 @@ EncodedJSValue jsTestObjUsvstringAttrTreatingNullAsEmptyString(ExecState* state,
 
 static inline bool setJSTestObjUsvstringAttrTreatingNullAsEmptyStringSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLTreatNullAsEmptyAdaptor<IDLUSVString>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setUsvstringAttrTreatingNullAsEmptyString(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setUsvstringAttrTreatingNullAsEmptyString(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setUsvstringAttrTreatingNullAsEmptyString(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2801,12 +2819,13 @@ EncodedJSValue jsTestObjByteStringAttrTreatingNullAsEmptyString(ExecState* state
 
 static inline bool setJSTestObjByteStringAttrTreatingNullAsEmptyStringSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLTreatNullAsEmptyAdaptor<IDLByteString>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setByteStringAttrTreatingNullAsEmptyString(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setByteStringAttrTreatingNullAsEmptyString(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setByteStringAttrTreatingNullAsEmptyString(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2831,12 +2850,13 @@ EncodedJSValue jsTestObjStringLongRecordAttr(ExecState* state, EncodedJSValue th
 
 static inline bool setJSTestObjStringLongRecordAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLRecord<IDLDOMString, IDLLong>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setStringLongRecordAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setStringLongRecordAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringLongRecordAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2861,12 +2881,13 @@ EncodedJSValue jsTestObjUsvstringLongRecordAttr(ExecState* state, EncodedJSValue
 
 static inline bool setJSTestObjUsvstringLongRecordAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLRecord<IDLUSVString, IDLLong>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setUsvstringLongRecordAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setUsvstringLongRecordAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setUsvstringLongRecordAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2891,12 +2912,13 @@ EncodedJSValue jsTestObjUsvstringLongRecordAttr(ExecState* state, EncodedJSValue
 
 static inline bool setJSTestObjUsvstringLongRecordAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLRecord<IDLByteString, IDLLong>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setUsvstringLongRecordAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setUsvstringLongRecordAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setUsvstringLongRecordAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2921,12 +2943,13 @@ EncodedJSValue jsTestObjStringObjRecordAttr(ExecState* state, EncodedJSValue thi
 
 static inline bool setJSTestObjStringObjRecordAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLRecord<IDLDOMString, IDLInterface<TestObj>>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setStringObjRecordAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setStringObjRecordAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringObjRecordAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2951,12 +2974,13 @@ EncodedJSValue jsTestObjStringNullableObjRecordAttr(ExecState* state, EncodedJSV
 
 static inline bool setJSTestObjStringNullableObjRecordAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLRecord<IDLDOMString, IDLNullable<IDLInterface<TestObj>>>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setStringNullableObjRecordAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setStringNullableObjRecordAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringNullableObjRecordAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -2981,12 +3005,13 @@ EncodedJSValue jsTestObjDictionaryAttr(ExecState* state, EncodedJSValue thisValu
 
 static inline bool setJSTestObjDictionaryAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDictionary<TestObj::Dictionary>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setDictionaryAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setDictionaryAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setDictionaryAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3011,12 +3036,13 @@ EncodedJSValue jsTestObjNullableDictionaryAttr(ExecState* state, EncodedJSValue
 
 static inline bool setJSTestObjNullableDictionaryAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLNullable<IDLDictionary<TestObj::Dictionary>>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setNullableDictionaryAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setNullableDictionaryAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setNullableDictionaryAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3041,12 +3067,13 @@ EncodedJSValue jsTestObjAnnotatedTypeInUnionAttr(ExecState* state, EncodedJSValu
 
 static inline bool setJSTestObjAnnotatedTypeInUnionAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnion<IDLDOMString, IDLClampAdaptor<IDLLong>>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAnnotatedTypeInUnionAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAnnotatedTypeInUnionAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAnnotatedTypeInUnionAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3071,12 +3098,13 @@ EncodedJSValue jsTestObjAnnotatedTypeInSequenceAttr(ExecState* state, EncodedJSV
 
 static inline bool setJSTestObjAnnotatedTypeInSequenceAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLSequence<IDLClampAdaptor<IDLLong>>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAnnotatedTypeInSequenceAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAnnotatedTypeInSequenceAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAnnotatedTypeInSequenceAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3101,7 +3129,6 @@ EncodedJSValue jsTestObjImplementationEnumAttr(ExecState* state, EncodedJSValue
 
 static inline bool setJSTestObjImplementationEnumAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto optionalNativeValue = parseEnumeration<AlternateEnumName>(state, value);
@@ -3109,7 +3136,9 @@ static inline bool setJSTestObjImplementationEnumAttrSetter(ExecState& state, JS
     if (UNLIKELY(!optionalNativeValue))
         return false;
     auto nativeValue = optionalNativeValue.value();
-    impl.setImplementationEnumAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setImplementationEnumAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setImplementationEnumAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3134,12 +3163,13 @@ EncodedJSValue jsTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, P
 
 static inline bool setJSTestObjXMLObjAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "XMLObjAttr", "TestObj"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setXMLObjAttr(*nativeValue);
+    AttributeSetter<decltype(impl.setXMLObjAttr(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setXMLObjAttr(*nativeValue);
+    });
     return true;
 }
 
@@ -3164,12 +3194,13 @@ EncodedJSValue jsTestObjCreate(ExecState* state, EncodedJSValue thisValue, Prope
 
 static inline bool setJSTestObjCreateSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLBoolean>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setCreate(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setCreate(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setCreate(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3194,12 +3225,13 @@ EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thi
 
 static inline bool setJSTestObjReflectedStringAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedstringattrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedstringattrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedstringattrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3224,12 +3256,13 @@ EncodedJSValue jsTestObjReflectedUSVStringAttr(ExecState* state, EncodedJSValue
 
 static inline bool setJSTestObjReflectedUSVStringAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUSVString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvstringattrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvstringattrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvstringattrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3254,12 +3287,13 @@ EncodedJSValue jsTestObjReflectedIntegralAttr(ExecState* state, EncodedJSValue t
 
 static inline bool setJSTestObjReflectedIntegralAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3284,12 +3318,13 @@ EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* state, EncodedJ
 
 static inline bool setJSTestObjReflectedUnsignedIntegralAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnsignedLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3314,12 +3349,13 @@ EncodedJSValue jsTestObjReflectedBooleanAttr(ExecState* state, EncodedJSValue th
 
 static inline bool setJSTestObjReflectedBooleanAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLBoolean>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3344,12 +3380,13 @@ EncodedJSValue jsTestObjReflectedURLAttr(ExecState* state, EncodedJSValue thisVa
 
 static inline bool setJSTestObjReflectedURLAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedurlattrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedurlattrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedurlattrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3374,12 +3411,13 @@ EncodedJSValue jsTestObjReflectedUSVURLAttr(ExecState* state, EncodedJSValue thi
 
 static inline bool setJSTestObjReflectedUSVURLAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUSVString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvurlattrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvurlattrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedusvurlattrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3404,12 +3442,13 @@ EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thi
 
 static inline bool setJSTestObjReflectedStringAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentStringAttrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentStringAttrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentStringAttrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3434,12 +3473,13 @@ EncodedJSValue jsTestObjReflectedCustomIntegralAttr(ExecState* state, EncodedJSV
 
 static inline bool setJSTestObjReflectedCustomIntegralAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3464,12 +3504,13 @@ EncodedJSValue jsTestObjReflectedCustomBooleanAttr(ExecState* state, EncodedJSVa
 
 static inline bool setJSTestObjReflectedCustomBooleanAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLBoolean>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3494,12 +3535,13 @@ EncodedJSValue jsTestObjReflectedCustomURLAttr(ExecState* state, EncodedJSValue
 
 static inline bool setJSTestObjReflectedCustomURLAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentURLAttrAttr, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentURLAttrAttr, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentURLAttrAttr, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3528,12 +3570,13 @@ EncodedJSValue jsTestObjEnabledAtRuntimeAttribute(ExecState* state, EncodedJSVal
 #if ENABLE(TEST_FEATURE)
 static inline bool setJSTestObjEnabledAtRuntimeAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setEnabledAtRuntimeAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setEnabledAtRuntimeAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setEnabledAtRuntimeAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3560,12 +3603,13 @@ EncodedJSValue jsTestObjTypedArrayAttr(ExecState* state, EncodedJSValue thisValu
 
 static inline bool setJSTestObjTypedArrayAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLFloat32Array>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "typedArrayAttr", "Float32Array"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setTypedArrayAttr(nativeValue.releaseNonNull());
+    AttributeSetter<decltype(impl.setTypedArrayAttr(nativeValue.releaseNonNull()))>::call(state, throwScope, [&] {
+        return impl.setTypedArrayAttr(nativeValue.releaseNonNull());
+    });
     return true;
 }
 
@@ -3590,12 +3634,13 @@ EncodedJSValue jsTestObjAttributeWithGetterException(ExecState* state, EncodedJS
 
 static inline bool setJSTestObjAttributeWithGetterExceptionSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithGetterException(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithGetterException(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithGetterException(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3620,12 +3665,13 @@ EncodedJSValue jsTestObjAttributeWithSetterException(ExecState* state, EncodedJS
 
 static inline bool setJSTestObjAttributeWithSetterExceptionSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    propagateException(state, throwScope, impl.setAttributeWithSetterException(WTFMove(nativeValue)));
+    AttributeSetter<decltype(impl.setAttributeWithSetterException(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithSetterException(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3650,12 +3696,13 @@ EncodedJSValue jsTestObjStringAttrWithGetterException(ExecState* state, EncodedJ
 
 static inline bool setJSTestObjStringAttrWithGetterExceptionSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setStringAttrWithGetterException(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setStringAttrWithGetterException(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringAttrWithGetterException(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3680,12 +3727,13 @@ EncodedJSValue jsTestObjStringAttrWithSetterException(ExecState* state, EncodedJ
 
 static inline bool setJSTestObjStringAttrWithSetterExceptionSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    propagateException(state, throwScope, impl.setStringAttrWithSetterException(WTFMove(nativeValue)));
+    AttributeSetter<decltype(impl.setStringAttrWithSetterException(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringAttrWithSetterException(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3708,7 +3756,6 @@ EncodedJSValue jsTestObjCustomAttr(ExecState* state, EncodedJSValue thisValue, P
 
 static inline bool setJSTestObjCustomAttrSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     thisObject.setCustomAttr(state, value);
     return true;
@@ -3733,7 +3780,6 @@ EncodedJSValue jsTestObjOnfoo(ExecState* state, EncodedJSValue thisValue, Proper
 
 static inline bool setJSTestObjOnfooSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     setEventHandlerAttribute(state, thisObject, thisObject.wrapped(), eventNames().fooEvent, value);
     return true;
@@ -3758,7 +3804,6 @@ EncodedJSValue jsTestObjOnwebkitfoo(ExecState* state, EncodedJSValue thisValue,
 
 static inline bool setJSTestObjOnwebkitfooSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     setEventHandlerAttribute(state, thisObject, thisObject.wrapped(), eventNames().fooEvent, value);
     return true;
@@ -3785,12 +3830,13 @@ EncodedJSValue jsTestObjWithScriptStateAttribute(ExecState* state, EncodedJSValu
 
 static inline bool setJSTestObjWithScriptStateAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setWithScriptStateAttribute(state, WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setWithScriptStateAttribute(state, WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setWithScriptStateAttribute(state, WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3815,12 +3861,13 @@ EncodedJSValue jsTestObjWithCallWithAndSetterCallWithAttribute(ExecState* state,
 
 static inline bool setJSTestObjWithCallWithAndSetterCallWithAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setWithCallWithAndSetterCallWithAttribute(state, activeDOMWindow(state), firstDOMWindow(state), WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setWithCallWithAndSetterCallWithAttribute(state, activeDOMWindow(state), firstDOMWindow(state), WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setWithCallWithAndSetterCallWithAttribute(state, activeDOMWindow(state), firstDOMWindow(state), WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -3848,7 +3895,6 @@ EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(ExecState* state, En
 
 static inline bool setJSTestObjWithScriptExecutionContextAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "withScriptExecutionContextAttribute", "TestObj"); });
@@ -3856,7 +3902,9 @@ static inline bool setJSTestObjWithScriptExecutionContextAttributeSetter(ExecSta
     auto* context = jsCast<JSDOMGlobalObject*>(state.lexicalGlobalObject())->scriptExecutionContext();
     if (UNLIKELY(!context))
         return false;
-    impl.setWithScriptExecutionContextAttribute(*context, *nativeValue);
+    AttributeSetter<decltype(impl.setWithScriptExecutionContextAttribute(*context, *nativeValue))>::call(state, throwScope, [&] {
+        return impl.setWithScriptExecutionContextAttribute(*context, *nativeValue);
+    });
     return true;
 }
 
@@ -3881,12 +3929,13 @@ EncodedJSValue jsTestObjWithScriptStateAttributeRaises(ExecState* state, Encoded
 
 static inline bool setJSTestObjWithScriptStateAttributeRaisesSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "withScriptStateAttributeRaises", "TestObj"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setWithScriptStateAttributeRaises(state, *nativeValue);
+    AttributeSetter<decltype(impl.setWithScriptStateAttributeRaises(state, *nativeValue))>::call(state, throwScope, [&] {
+        return impl.setWithScriptStateAttributeRaises(state, *nativeValue);
+    });
     return true;
 }
 
@@ -3914,7 +3963,6 @@ EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(ExecState* sta
 
 static inline bool setJSTestObjWithScriptExecutionContextAttributeRaisesSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "withScriptExecutionContextAttributeRaises", "TestObj"); });
@@ -3922,7 +3970,9 @@ static inline bool setJSTestObjWithScriptExecutionContextAttributeRaisesSetter(E
     auto* context = jsCast<JSDOMGlobalObject*>(state.lexicalGlobalObject())->scriptExecutionContext();
     if (UNLIKELY(!context))
         return false;
-    impl.setWithScriptExecutionContextAttributeRaises(*context, *nativeValue);
+    AttributeSetter<decltype(impl.setWithScriptExecutionContextAttributeRaises(*context, *nativeValue))>::call(state, throwScope, [&] {
+        return impl.setWithScriptExecutionContextAttributeRaises(*context, *nativeValue);
+    });
     return true;
 }
 
@@ -3950,7 +4000,6 @@ EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecSt
 
 static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "withScriptExecutionContextAndScriptStateAttribute", "TestObj"); });
@@ -3958,7 +4007,9 @@ static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateAttribute
     auto* context = jsCast<JSDOMGlobalObject*>(state.lexicalGlobalObject())->scriptExecutionContext();
     if (UNLIKELY(!context))
         return false;
-    impl.setWithScriptExecutionContextAndScriptStateAttribute(state, *context, *nativeValue);
+    AttributeSetter<decltype(impl.setWithScriptExecutionContextAndScriptStateAttribute(state, *context, *nativeValue))>::call(state, throwScope, [&] {
+        return impl.setWithScriptExecutionContextAndScriptStateAttribute(state, *context, *nativeValue);
+    });
     return true;
 }
 
@@ -3986,7 +4037,6 @@ EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(
 
 static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaisesSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "withScriptExecutionContextAndScriptStateAttributeRaises", "TestObj"); });
@@ -3994,7 +4044,9 @@ static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateAttribute
     auto* context = jsCast<JSDOMGlobalObject*>(state.lexicalGlobalObject())->scriptExecutionContext();
     if (UNLIKELY(!context))
         return false;
-    impl.setWithScriptExecutionContextAndScriptStateAttributeRaises(state, *context, *nativeValue);
+    AttributeSetter<decltype(impl.setWithScriptExecutionContextAndScriptStateAttributeRaises(state, *context, *nativeValue))>::call(state, throwScope, [&] {
+        return impl.setWithScriptExecutionContextAndScriptStateAttributeRaises(state, *context, *nativeValue);
+    });
     return true;
 }
 
@@ -4022,7 +4074,6 @@ EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttrib
 
 static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestObj>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "withScriptExecutionContextAndScriptStateWithSpacesAttribute", "TestObj"); });
@@ -4030,7 +4081,9 @@ static inline bool setJSTestObjWithScriptExecutionContextAndScriptStateWithSpace
     auto* context = jsCast<JSDOMGlobalObject*>(state.lexicalGlobalObject())->scriptExecutionContext();
     if (UNLIKELY(!context))
         return false;
-    impl.setWithScriptExecutionContextAndScriptStateWithSpacesAttribute(state, *context, *nativeValue);
+    AttributeSetter<decltype(impl.setWithScriptExecutionContextAndScriptStateWithSpacesAttribute(state, *context, *nativeValue))>::call(state, throwScope, [&] {
+        return impl.setWithScriptExecutionContextAndScriptStateWithSpacesAttribute(state, *context, *nativeValue);
+    });
     return true;
 }
 
@@ -4059,12 +4112,13 @@ EncodedJSValue jsTestObjConditionalAttr1(ExecState* state, EncodedJSValue thisVa
 #if ENABLE(Condition1)
 static inline bool setJSTestObjConditionalAttr1Setter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setConditionalAttr1(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setConditionalAttr1(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setConditionalAttr1(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4095,12 +4149,13 @@ EncodedJSValue jsTestObjConditionalAttr2(ExecState* state, EncodedJSValue thisVa
 #if ENABLE(Condition1) && ENABLE(Condition2)
 static inline bool setJSTestObjConditionalAttr2Setter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setConditionalAttr2(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setConditionalAttr2(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setConditionalAttr2(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4131,12 +4186,13 @@ EncodedJSValue jsTestObjConditionalAttr3(ExecState* state, EncodedJSValue thisVa
 #if ENABLE(Condition1) || ENABLE(Condition2)
 static inline bool setJSTestObjConditionalAttr3Setter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setConditionalAttr3(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setConditionalAttr3(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setConditionalAttr3(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4165,7 +4221,6 @@ EncodedJSValue jsTestObjConditionalAttr4Constructor(ExecState* state, EncodedJSV
 #if ENABLE(Condition1)
 static inline bool setJSTestObjConditionalAttr4ConstructorSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     // Shadowing a built-in constructor.
     return thisObject.putDirect(state.vm(), Identifier::fromString(&state.vm(), reinterpret_cast<const LChar*>("conditionalAttr4"), strlen("conditionalAttr4")), value);
@@ -4196,7 +4251,6 @@ EncodedJSValue jsTestObjConditionalAttr5Constructor(ExecState* state, EncodedJSV
 #if ENABLE(Condition1) && ENABLE(Condition2)
 static inline bool setJSTestObjConditionalAttr5ConstructorSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     // Shadowing a built-in constructor.
     return thisObject.putDirect(state.vm(), Identifier::fromString(&state.vm(), reinterpret_cast<const LChar*>("conditionalAttr5"), strlen("conditionalAttr5")), value);
@@ -4227,7 +4281,6 @@ EncodedJSValue jsTestObjConditionalAttr6Constructor(ExecState* state, EncodedJSV
 #if ENABLE(Condition1) || ENABLE(Condition2)
 static inline bool setJSTestObjConditionalAttr6ConstructorSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     // Shadowing a built-in constructor.
     return thisObject.putDirect(state.vm(), Identifier::fromString(&state.vm(), reinterpret_cast<const LChar*>("conditionalAttr6"), strlen("conditionalAttr6")), value);
@@ -4290,12 +4343,13 @@ EncodedJSValue jsTestObjAnyAttribute(ExecState* state, EncodedJSValue thisValue,
 
 static inline bool setJSTestObjAnyAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLAny>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAnyAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAnyAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAnyAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4320,12 +4374,13 @@ EncodedJSValue jsTestObjObjectAttribute(ExecState* state, EncodedJSValue thisVal
 
 static inline bool setJSTestObjObjectAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLObject>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setObjectAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setObjectAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setObjectAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4364,12 +4419,13 @@ EncodedJSValue jsTestObjMutablePoint(ExecState* state, EncodedJSValue thisValue,
 
 static inline bool setJSTestObjMutablePointSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<SVGPoint>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "mutablePoint", "SVGPoint"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setMutablePoint(*nativeValue);
+    AttributeSetter<decltype(impl.setMutablePoint(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setMutablePoint(*nativeValue);
+    });
     return true;
 }
 
@@ -4394,12 +4450,13 @@ EncodedJSValue jsTestObjStrawberry(ExecState* state, EncodedJSValue thisValue, P
 
 static inline bool setJSTestObjStrawberrySetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setBlueberry(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setBlueberry(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setBlueberry(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4438,12 +4495,13 @@ EncodedJSValue jsTestObjId(ExecState* state, EncodedJSValue thisValue, PropertyN
 
 static inline bool setJSTestObjIdSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setId(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setId(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setId(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4482,7 +4540,6 @@ EncodedJSValue jsTestObjReplaceableAttribute(ExecState* state, EncodedJSValue th
 
 static inline bool setJSTestObjReplaceableAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     // Shadowing a built-in property.
     return thisObject.putDirect(state.vm(), Identifier::fromString(&state.vm(), reinterpret_cast<const LChar*>("replaceableAttribute"), strlen("replaceableAttribute")), value);
@@ -4565,12 +4622,13 @@ EncodedJSValue jsTestObjNullableLongSettableAttribute(ExecState* state, EncodedJ
 
 static inline bool setJSTestObjNullableLongSettableAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLNullable<IDLLong>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setNullableLongSettableAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setNullableLongSettableAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setNullableLongSettableAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4595,12 +4653,13 @@ EncodedJSValue jsTestObjNullableStringSettableAttribute(ExecState* state, Encode
 
 static inline bool setJSTestObjNullableStringSettableAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLNullable<IDLDOMString>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setNullableStringSettableAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setNullableStringSettableAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setNullableStringSettableAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4625,12 +4684,13 @@ EncodedJSValue jsTestObjNullableUSVStringSettableAttribute(ExecState* state, Enc
 
 static inline bool setJSTestObjNullableUSVStringSettableAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLNullable<IDLUSVString>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setNullableUSVStringSettableAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setNullableUSVStringSettableAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setNullableUSVStringSettableAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4655,12 +4715,13 @@ EncodedJSValue jsTestObjNullableByteStringSettableAttribute(ExecState* state, En
 
 static inline bool setJSTestObjNullableByteStringSettableAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLNullable<IDLByteString>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setNullableByteStringSettableAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setNullableByteStringSettableAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setNullableByteStringSettableAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4685,12 +4746,13 @@ EncodedJSValue jsTestObjNullableStringValue(ExecState* state, EncodedJSValue thi
 
 static inline bool setJSTestObjNullableStringValueSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLNullable<IDLLong>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setNullableStringValue(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setNullableStringValue(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setNullableStringValue(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4729,7 +4791,6 @@ EncodedJSValue jsTestObjAttributeWithReservedEnumType(ExecState* state, EncodedJ
 
 static inline bool setJSTestObjAttributeWithReservedEnumTypeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto optionalNativeValue = parseEnumeration<TestObj::Optional>(state, value);
@@ -4737,7 +4798,9 @@ static inline bool setJSTestObjAttributeWithReservedEnumTypeSetter(ExecState& st
     if (UNLIKELY(!optionalNativeValue))
         return false;
     auto nativeValue = optionalNativeValue.value();
-    impl.setAttributeWithReservedEnumType(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithReservedEnumType(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithReservedEnumType(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4790,7 +4853,6 @@ EncodedJSValue jsTestObjPutForwardsAttribute(ExecState* state, EncodedJSValue th
 
 static inline bool setJSTestObjPutForwardsAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto id = Identifier::fromString(&state.vm(), reinterpret_cast<const LChar*>("putForwardsAttribute"), strlen("putForwardsAttribute"));
     auto valueToForwardTo = thisObject.get(&state, id);
@@ -4827,7 +4889,6 @@ EncodedJSValue jsTestObjPutForwardsNullableAttribute(ExecState* state, EncodedJS
 
 static inline bool setJSTestObjPutForwardsNullableAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto id = Identifier::fromString(&state.vm(), reinterpret_cast<const LChar*>("putForwardsNullableAttribute"), strlen("putForwardsNullableAttribute"));
     auto valueToForwardTo = thisObject.get(&state, id);
@@ -4864,12 +4925,13 @@ EncodedJSValue jsTestObjStringifierAttribute(ExecState* state, EncodedJSValue th
 
 static inline bool setJSTestObjStringifierAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUSVString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setStringifierAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setStringifierAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringifierAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4895,12 +4957,13 @@ EncodedJSValue jsTestObjConditionallyReadWriteAttribute(ExecState* state, Encode
 #if ENABLE(CONDITION)
 static inline bool setJSTestObjConditionallyReadWriteAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<Node>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "conditionallyReadWriteAttribute", "Node"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setConditionallyReadWriteAttribute(*nativeValue);
+    AttributeSetter<decltype(impl.setConditionallyReadWriteAttribute(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setConditionallyReadWriteAttribute(*nativeValue);
+    });
     return true;
 }
 
@@ -4932,12 +4995,13 @@ EncodedJSValue jsTestObjConditionalAndConditionallyReadWriteAttribute(ExecState*
 #if ENABLE(CONDITION)
 static inline bool setJSTestObjConditionalAndConditionallyReadWriteAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<Node>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestObject", "conditionalAndConditionallyReadWriteAttribute", "Node"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setConditionalAndConditionallyReadWriteAttribute(*nativeValue);
+    AttributeSetter<decltype(impl.setConditionalAndConditionallyReadWriteAttribute(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setConditionalAndConditionallyReadWriteAttribute(*nativeValue);
+    });
     return true;
 }
 
@@ -4966,12 +5030,13 @@ EncodedJSValue jsTestObjConditionallyExposedToWindowAttribute(ExecState* state,
 
 static inline bool setJSTestObjConditionallyExposedToWindowAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setConditionallyExposedToWindowAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setConditionallyExposedToWindowAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setConditionallyExposedToWindowAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -4996,12 +5061,13 @@ EncodedJSValue jsTestObjConditionallyExposedToWorkerAttribute(ExecState* state,
 
 static inline bool setJSTestObjConditionallyExposedToWorkerAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setConditionallyExposedToWorkerAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setConditionallyExposedToWorkerAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setConditionallyExposedToWorkerAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -5026,12 +5092,13 @@ EncodedJSValue jsTestObjConditionallyExposedToWindowAndWorkerAttribute(ExecState
 
 static inline bool setJSTestObjConditionallyExposedToWindowAndWorkerAttributeSetter(ExecState& state, JSTestObj& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setConditionallyExposedToWindowAndWorkerAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setConditionallyExposedToWindowAndWorkerAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setConditionallyExposedToWindowAndWorkerAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
index c0b1b46..8c81faa 100644 (file)
@@ -218,12 +218,13 @@ EncodedJSValue jsTestSerializationFirstStringAttribute(ExecState* state, Encoded
 
 static inline bool setJSTestSerializationFirstStringAttributeSetter(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setFirstStringAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setFirstStringAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setFirstStringAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -248,12 +249,13 @@ EncodedJSValue jsTestSerializationSecondLongAttribute(ExecState* state, EncodedJ
 
 static inline bool setJSTestSerializationSecondLongAttributeSetter(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setSecondLongAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setSecondLongAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setSecondLongAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -278,12 +280,13 @@ EncodedJSValue jsTestSerializationThirdUnserializableAttribute(ExecState* state,
 
 static inline bool setJSTestSerializationThirdUnserializableAttributeSetter(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestException>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestSerialization", "thirdUnserializableAttribute", "TestException"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setThirdUnserializableAttribute(*nativeValue);
+    AttributeSetter<decltype(impl.setThirdUnserializableAttribute(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setThirdUnserializableAttribute(*nativeValue);
+    });
     return true;
 }
 
@@ -308,12 +311,13 @@ EncodedJSValue jsTestSerializationFourthUnrestrictedDoubleAttribute(ExecState* s
 
 static inline bool setJSTestSerializationFourthUnrestrictedDoubleAttributeSetter(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnrestrictedDouble>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setFourthUnrestrictedDoubleAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setFourthUnrestrictedDoubleAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setFourthUnrestrictedDoubleAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -338,12 +342,13 @@ EncodedJSValue jsTestSerializationFifthLongAttribute(ExecState* state, EncodedJS
 
 static inline bool setJSTestSerializationFifthLongAttributeSetter(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setFifthLongAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setFifthLongAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setFifthLongAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -368,12 +373,13 @@ EncodedJSValue jsTestSerializationSixthTypedefAttribute(ExecState* state, Encode
 
 static inline bool setJSTestSerializationSixthTypedefAttributeSetter(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDouble>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setSixthTypedefAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setSixthTypedefAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setSixthTypedefAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -398,12 +404,13 @@ EncodedJSValue jsTestSerializationSeventhDirectlySerializableAttribute(ExecState
 
 static inline bool setJSTestSerializationSeventhDirectlySerializableAttributeSetter(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestSerializationInheritFinal>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestSerialization", "seventhDirectlySerializableAttribute", "TestSerializationInheritFinal"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setSeventhDirectlySerializableAttribute(*nativeValue);
+    AttributeSetter<decltype(impl.setSeventhDirectlySerializableAttribute(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setSeventhDirectlySerializableAttribute(*nativeValue);
+    });
     return true;
 }
 
@@ -428,12 +435,13 @@ EncodedJSValue jsTestSerializationEighthIndirectlyAttribute(ExecState* state, En
 
 static inline bool setJSTestSerializationEighthIndirectlyAttributeSetter(ExecState& state, JSTestSerialization& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLInterface<TestSerializationIndirectInheritance>>(state, value, [](JSC::ExecState& state, JSC::ThrowScope& scope) { throwAttributeTypeError(state, scope, "TestSerialization", "eighthIndirectlyAttribute", "TestSerializationIndirectInheritance"); });
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setEighthIndirectlyAttribute(*nativeValue);
+    AttributeSetter<decltype(impl.setEighthIndirectlyAttribute(*nativeValue))>::call(state, throwScope, [&] {
+        return impl.setEighthIndirectlyAttribute(*nativeValue);
+    });
     return true;
 }
 
index e229376..ec45b55 100644 (file)
@@ -183,12 +183,13 @@ EncodedJSValue jsTestSerializationInheritInheritLongAttribute(ExecState* state,
 
 static inline bool setJSTestSerializationInheritInheritLongAttributeSetter(ExecState& state, JSTestSerializationInherit& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setInheritLongAttribute(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setInheritLongAttribute(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setInheritLongAttribute(WTFMove(nativeValue));
+    });
     return true;
 }
 
index 80e0f62..01e60c3 100644 (file)
@@ -186,12 +186,13 @@ EncodedJSValue jsTestSerializationInheritFinalFinalLongAttributeFoo(ExecState* s
 
 static inline bool setJSTestSerializationInheritFinalFinalLongAttributeFooSetter(ExecState& state, JSTestSerializationInheritFinal& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setFinalLongAttributeFoo(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setFinalLongAttributeFoo(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setFinalLongAttributeFoo(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -216,12 +217,13 @@ EncodedJSValue jsTestSerializationInheritFinalFinalLongAttributeBar(ExecState* s
 
 static inline bool setJSTestSerializationInheritFinalFinalLongAttributeBarSetter(ExecState& state, JSTestSerializationInheritFinal& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setFinalLongAttributeBar(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setFinalLongAttributeBar(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setFinalLongAttributeBar(WTFMove(nativeValue));
+    });
     return true;
 }
 
index b321bae..be29637 100644 (file)
@@ -210,12 +210,13 @@ EncodedJSValue jsTestSerializedScriptValueInterfaceValue(ExecState* state, Encod
 
 static inline bool setJSTestSerializedScriptValueInterfaceValueSetter(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLSerializedScriptValue<SerializedScriptValue>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setValue(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setValue(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setValue(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -257,12 +258,13 @@ EncodedJSValue jsTestSerializedScriptValueInterfaceCachedValue(ExecState* state,
 
 static inline bool setJSTestSerializedScriptValueInterfaceCachedValueSetter(ExecState& state, JSTestSerializedScriptValueInterface& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLSerializedScriptValue<SerializedScriptValue>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setCachedValue(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setCachedValue(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setCachedValue(WTFMove(nativeValue));
+    });
     return true;
 }
 
index bd84dd6..8016d45 100644 (file)
@@ -190,12 +190,13 @@ EncodedJSValue jsTestStringifierReadWriteAttributeIdentifier(ExecState* state, E
 
 static inline bool setJSTestStringifierReadWriteAttributeIdentifierSetter(ExecState& state, JSTestStringifierReadWriteAttribute& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setIdentifier(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setIdentifier(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setIdentifier(WTFMove(nativeValue));
+    });
     return true;
 }
 
index 715c79f..ea56ce8 100644 (file)
@@ -305,12 +305,13 @@ EncodedJSValue jsTestTypedefsUnsignedLongLongAttr(ExecState* state, EncodedJSVal
 
 static inline bool setJSTestTypedefsUnsignedLongLongAttrSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnsignedLongLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setUnsignedLongLongAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setUnsignedLongLongAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setUnsignedLongLongAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -335,12 +336,13 @@ EncodedJSValue jsTestTypedefsSerializedScriptValue(ExecState* state, EncodedJSVa
 
 static inline bool setJSTestTypedefsSerializedScriptValueSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLSerializedScriptValue<SerializedScriptValue>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setSerializedScriptValue(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setSerializedScriptValue(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setSerializedScriptValue(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -377,12 +379,13 @@ EncodedJSValue jsTestTypedefsAttributeWithClamp(ExecState* state, EncodedJSValue
 
 static inline bool setJSTestTypedefsAttributeWithClampSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLClampAdaptor<IDLUnsignedLongLong>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithClamp(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithClamp(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithClamp(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -407,12 +410,13 @@ EncodedJSValue jsTestTypedefsAttributeWithClampInTypedef(ExecState* state, Encod
 
 static inline bool setJSTestTypedefsAttributeWithClampInTypedefSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLClampAdaptor<IDLLong>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttributeWithClampInTypedef(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttributeWithClampInTypedef(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttributeWithClampInTypedef(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -437,12 +441,13 @@ EncodedJSValue jsTestTypedefsAttrWithGetterException(ExecState* state, EncodedJS
 
 static inline bool setJSTestTypedefsAttrWithGetterExceptionSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setAttrWithGetterException(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setAttrWithGetterException(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttrWithGetterException(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -467,12 +472,13 @@ EncodedJSValue jsTestTypedefsAttrWithSetterException(ExecState* state, EncodedJS
 
 static inline bool setJSTestTypedefsAttrWithSetterExceptionSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    propagateException(state, throwScope, impl.setAttrWithSetterException(WTFMove(nativeValue)));
+    AttributeSetter<decltype(impl.setAttrWithSetterException(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setAttrWithSetterException(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -497,12 +503,13 @@ EncodedJSValue jsTestTypedefsStringAttrWithGetterException(ExecState* state, Enc
 
 static inline bool setJSTestTypedefsStringAttrWithGetterExceptionSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setStringAttrWithGetterException(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setStringAttrWithGetterException(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringAttrWithGetterException(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -527,12 +534,13 @@ EncodedJSValue jsTestTypedefsStringAttrWithSetterException(ExecState* state, Enc
 
 static inline bool setJSTestTypedefsStringAttrWithSetterExceptionSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLDOMString>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    propagateException(state, throwScope, impl.setStringAttrWithSetterException(WTFMove(nativeValue)));
+    AttributeSetter<decltype(impl.setStringAttrWithSetterException(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setStringAttrWithSetterException(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -557,12 +565,13 @@ EncodedJSValue jsTestTypedefsBufferSourceAttr(ExecState* state, EncodedJSValue t
 
 static inline bool setJSTestTypedefsBufferSourceAttrSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnion<IDLArrayBufferView, IDLArrayBuffer>>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setBufferSourceAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setBufferSourceAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setBufferSourceAttr(WTFMove(nativeValue));
+    });
     return true;
 }
 
@@ -587,12 +596,13 @@ EncodedJSValue jsTestTypedefsDomTimeStampAttr(ExecState* state, EncodedJSValue t
 
 static inline bool setJSTestTypedefsDomTimeStampAttrSetter(ExecState& state, JSTestTypedefs& thisObject, JSValue value, ThrowScope& throwScope)
 {
-    UNUSED_PARAM(state);
     UNUSED_PARAM(throwScope);
     auto& impl = thisObject.wrapped();
     auto nativeValue = convert<IDLUnsignedLongLong>(state, value);
     RETURN_IF_EXCEPTION(throwScope, false);
-    impl.setDomTimeStampAttr(WTFMove(nativeValue));
+    AttributeSetter<decltype(impl.setDomTimeStampAttr(WTFMove(nativeValue)))>::call(state, throwScope, [&] {
+        return impl.setDomTimeStampAttr(WTFMove(nativeValue));
+    });
     return true;
 }