Changeset 265046 in webkit


Ignore:
Timestamp:
Jul 29, 2020 10:45:32 AM (4 years ago)
Author:
mark.lam@apple.com
Message:

CodeGeneratorJS should release the throwScope before doing a void call at end of a function.
https://bugs.webkit.org/show_bug.cgi?id=214924

Reviewed by Chris Dumez.

It is necessary to release the throwScope because the void call at the end of the
function may throw an exception. Releasing the throwScope here says that this
function is releasing the responsibility to handle the exception, and will allow
the potential exception from the trailing void call to propagate to its caller.
The responsibility to handle the exception is passed to this function's caller (or
some earlier caller in the stack). It is ok to release the throwScope here
because the trailing void call will effectively be the last thing that this
function does before returning.

Covered by existing tests.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementationFunctionCall):

  • bindings/scripts/test/JS/JSMapLike.cpp:

(WebCore::jsMapLikePrototypeFunctionClearBody):

  • bindings/scripts/test/JS/JSSetLike.cpp:

(WebCore::jsSetLikePrototypeFunctionClearBody):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunctionBody):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessageBody):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionOverloadedMethod1Body):
(WebCore::jsTestActiveDOMObjectPrototypeFunctionOverloadedMethod2Body):

  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsBody):
(WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsNotNeededBody):

  • bindings/scripts/test/JS/JSTestCallTracer.cpp:

(WebCore::jsTestCallTracerPrototypeFunctionTestOperationInterfaceBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationSpecifiedBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithArgumentsBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableArgumentBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithVariantArgumentBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableVariantArgumentBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithOptionalVariantArgumentBody):
(WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithDefaultVariantArgumentBody):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::jsTestEnabledBySettingPrototypeFunctionEnabledBySettingOperationBody):

  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::jsTestGlobalObjectInstanceFunctionRegularOperationBody):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation1Body):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation2Body):
(WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStaticBody):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldBody):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabledBody):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeaturesEnabledBody):
(WebCore::jsTestGlobalObjectInstanceFunctionTestPrivateFunctionBody):
(WebCore::jsTestGlobalObjectInstanceFunctionCalculateSecretResultBody):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:

(WebCore::jsTestIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod1Body):
(WebCore::jsTestInterfaceConstructorFunctionImplementsMethod4Body):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod1Body):
(WebCore::jsTestInterfaceConstructorFunctionSupplementalMethod4Body):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:

(WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionNamedSetterBody):
(WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:

(WebCore::jsTestNamedDeleterWithIdentifierPrototypeFunctionNamedDeleterBody):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:

(WebCore::jsTestNamedSetterWithIdentifierPrototypeFunctionNamedSetterBody):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:

(WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionNamedSetterBody):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:

(WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionNamedSetterBody):
(WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetter1Body):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:

(WebCore::jsTestNamedSetterWithUnforgablePropertiesInstanceFunctionUnforgeableOperationBody):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:

(WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsInstanceFunctionUnforgeableOperationBody):

  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::jsTestNodePrototypeFunctionTestWorkerPromiseBody):
(WebCore::jsTestNodePrototypeFunctionCalculateSecretResultBody):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::callJSTestObj1):
(WebCore::callJSTestObj3):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation1Body):
(WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation2Body):
(WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStaticBody):
(WebCore::jsTestObjPrototypeFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabledBody):
(WebCore::jsTestObjPrototypeFunctionWorldSpecificMethodBody):
(WebCore::jsTestObjPrototypeFunctionCalculateSecretResultBody):
(WebCore::jsTestObjPrototypeFunctionVoidMethodBody):
(WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgsBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameterBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithEnumArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithStandaloneEnumArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNullableByteStringArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgTreatingNullAsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionSerializedValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithRecordBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithExceptionBody):
(WebCore::jsTestObjPrototypeFunctionAddEventListenerBody):
(WebCore::jsTestObjPrototypeFunctionRemoveEventListenerBody):
(WebCore::jsTestObjPrototypeFunctionWithExecStateVoidBody):
(WebCore::jsTestObjPrototypeFunctionWithExecStateVoidExceptionBody):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextBody):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateBody):
(WebCore::jsTestObjPrototypeFunctionWithDocumentArgumentBody):
(WebCore::jsTestObjPrototypeFunctionWithCallerDocumentArgumentBody):
(WebCore::jsTestObjPrototypeFunctionWithCallerWindowArgumentBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgAndDefaultValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgsBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringAndDefaultValueBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsNullBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefinedBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsNullBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsEmptyStringBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaNBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaNBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongIsZeroBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongIsZeroBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceIsEmptyBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanIsFalseBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAnyBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalObjectBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNullBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolverBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalRecordBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalPromiseBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArgBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArgBody):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArgBody):
(WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArgBody):
(WebCore::jsTestObjPrototypeFunctionConditionalMethod2Body):
(WebCore::jsTestObjPrototypeFunctionConditionalMethod3Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod3Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod4Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod5Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod6Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod7Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod8Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod9Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod11Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod12Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod13Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion2Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter1Body):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter2Body):
(WebCore::jsTestObjConstructorFunctionClassMethodBody):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod11Body):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod12Body):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClampBody):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithClampOnOptionalBody):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeBody):
(WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeOnOptionalBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequenceBody):
(WebCore::jsTestObjPrototypeFunctionOperationWithOptionalUnionParameterBody):
(WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequenceBody):
(WebCore::jsTestObjPrototypeFunctionConvert1Body):
(WebCore::jsTestObjPrototypeFunctionConvert2Body):
(WebCore::jsTestObjPrototypeFunctionConvert3Body):
(WebCore::jsTestObjPrototypeFunctionConvert4Body):
(WebCore::jsTestObjPrototypeFunctionOrangeBody):
(WebCore::jsTestObjPrototypeFunctionVariadicStringMethodBody):
(WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethodBody):
(WebCore::jsTestObjPrototypeFunctionVariadicNodeMethodBody):
(WebCore::jsTestObjPrototypeFunctionVariadicUnionMethodBody):
(WebCore::jsTestObjPrototypeFunctionAnyBody):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionBody):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentBody):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionBody):
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentBody):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Body):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Body):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionBody):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionBody):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload1Body):
(WebCore::jsTestObjPrototypeFunctionConditionalOverload2Body):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload1Body):
(WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload2Body):
(WebCore::jsTestObjPrototypeFunctionAttachShadowRootBody):
(WebCore::jsTestObjPrototypeFunctionOperationWithExternalDictionaryParameterBody):
(WebCore::jsTestObjPrototypeFunctionBufferSourceParameterBody):
(WebCore::jsTestObjPrototypeFunctionLegacyCallerNamedBody):
(WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationBody):
(WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationWithExceptionBody):
(WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowFunctionBody):
(WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWorkerFunctionBody):
(WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowAndWorkerFunctionBody):

  • bindings/scripts/test/JS/JSTestOperationConditional.cpp:

(WebCore::jsTestOperationConditionalPrototypeFunctionNonConditionalOperationBody):
(WebCore::jsTestOperationConditionalPrototypeFunctionConditionalOperationBody):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionBody):

  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::jsTestTypedefsPrototypeFunctionFuncBody):
(WebCore::jsTestTypedefsPrototypeFunctionSetShadowBody):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionSequenceOfNullablesArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfNullablesArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfUnionsArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionUnionArgBody):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampBody):
(WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampInTypedefBody):
(WebCore::jsTestTypedefsPrototypeFunctionMethodWithExceptionBody):

Location:
trunk/Source/WebCore
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r265044 r265046  
     12020-07-29  Mark Lam  <mark.lam@apple.com>
     2
     3        CodeGeneratorJS should release the throwScope before doing a void call at end of a function.
     4        https://bugs.webkit.org/show_bug.cgi?id=214924
     5
     6        Reviewed by Chris Dumez.
     7
     8        It is necessary to release the throwScope because the void call at the end of the
     9        function may throw an exception.  Releasing the throwScope here says that this
     10        function is releasing the responsibility to handle the exception, and will allow
     11        the potential exception from the trailing void call to propagate to its caller.
     12        The responsibility to handle the exception is passed to this function's caller (or
     13        some earlier caller in the stack).  It is ok to release the throwScope here
     14        because the trailing void call will effectively be the last thing that this
     15        function does before returning.
     16
     17        Covered by existing tests.
     18
     19        * bindings/scripts/CodeGeneratorJS.pm:
     20        (GenerateImplementationFunctionCall):
     21        * bindings/scripts/test/JS/JSMapLike.cpp:
     22        (WebCore::jsMapLikePrototypeFunctionClearBody):
     23        * bindings/scripts/test/JS/JSSetLike.cpp:
     24        (WebCore::jsSetLikePrototypeFunctionClearBody):
     25        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
     26        (WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunctionBody):
     27        (WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessageBody):
     28        (WebCore::jsTestActiveDOMObjectPrototypeFunctionOverloadedMethod1Body):
     29        (WebCore::jsTestActiveDOMObjectPrototypeFunctionOverloadedMethod2Body):
     30        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
     31        (WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsBody):
     32        (WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsNotNeededBody):
     33        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
     34        (WebCore::jsTestCallTracerPrototypeFunctionTestOperationInterfaceBody):
     35        (WebCore::jsTestCallTracerPrototypeFunctionTestOperationSpecifiedBody):
     36        (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithArgumentsBody):
     37        (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableArgumentBody):
     38        (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithVariantArgumentBody):
     39        (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableVariantArgumentBody):
     40        (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithOptionalVariantArgumentBody):
     41        (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithDefaultVariantArgumentBody):
     42        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
     43        (WebCore::jsTestEnabledBySettingPrototypeFunctionEnabledBySettingOperationBody):
     44        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
     45        (WebCore::jsTestGlobalObjectInstanceFunctionRegularOperationBody):
     46        (WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation1Body):
     47        (WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation2Body):
     48        (WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStaticBody):
     49        (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldBody):
     50        (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabledBody):
     51        (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeaturesEnabledBody):
     52        (WebCore::jsTestGlobalObjectInstanceFunctionTestPrivateFunctionBody):
     53        (WebCore::jsTestGlobalObjectInstanceFunctionCalculateSecretResultBody):
     54        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
     55        (WebCore::jsTestIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody):
     56        * bindings/scripts/test/JS/JSTestInterface.cpp:
     57        (WebCore::jsTestInterfacePrototypeFunctionImplementsMethod1Body):
     58        (WebCore::jsTestInterfaceConstructorFunctionImplementsMethod4Body):
     59        (WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod1Body):
     60        (WebCore::jsTestInterfaceConstructorFunctionSupplementalMethod4Body):
     61        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
     62        (WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionNamedSetterBody):
     63        (WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody):
     64        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
     65        (WebCore::jsTestNamedDeleterWithIdentifierPrototypeFunctionNamedDeleterBody):
     66        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
     67        (WebCore::jsTestNamedSetterWithIdentifierPrototypeFunctionNamedSetterBody):
     68        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
     69        (WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionNamedSetterBody):
     70        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
     71        (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionNamedSetterBody):
     72        (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetter1Body):
     73        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
     74        (WebCore::jsTestNamedSetterWithUnforgablePropertiesInstanceFunctionUnforgeableOperationBody):
     75        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
     76        (WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsInstanceFunctionUnforgeableOperationBody):
     77        * bindings/scripts/test/JS/JSTestNode.cpp:
     78        (WebCore::jsTestNodePrototypeFunctionTestWorkerPromiseBody):
     79        (WebCore::jsTestNodePrototypeFunctionCalculateSecretResultBody):
     80        * bindings/scripts/test/JS/JSTestObj.cpp:
     81        (WebCore::callJSTestObj1):
     82        (WebCore::callJSTestObj3):
     83        (WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation1Body):
     84        (WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation2Body):
     85        (WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStaticBody):
     86        (WebCore::jsTestObjPrototypeFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabledBody):
     87        (WebCore::jsTestObjPrototypeFunctionWorldSpecificMethodBody):
     88        (WebCore::jsTestObjPrototypeFunctionCalculateSecretResultBody):
     89        (WebCore::jsTestObjPrototypeFunctionVoidMethodBody):
     90        (WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgsBody):
     91        (WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyStringBody):
     92        (WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameterBody):
     93        (WebCore::jsTestObjPrototypeFunctionMethodWithEnumArgBody):
     94        (WebCore::jsTestObjPrototypeFunctionMethodWithStandaloneEnumArgBody):
     95        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgBody):
     96        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValueBody):
     97        (WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgBody):
     98        (WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArgBody):
     99        (WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyStringBody):
     100        (WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgBody):
     101        (WebCore::jsTestObjPrototypeFunctionMethodWithNullableByteStringArgBody):
     102        (WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgTreatingNullAsEmptyStringBody):
     103        (WebCore::jsTestObjPrototypeFunctionSerializedValueBody):
     104        (WebCore::jsTestObjPrototypeFunctionMethodWithRecordBody):
     105        (WebCore::jsTestObjPrototypeFunctionMethodWithExceptionBody):
     106        (WebCore::jsTestObjPrototypeFunctionAddEventListenerBody):
     107        (WebCore::jsTestObjPrototypeFunctionRemoveEventListenerBody):
     108        (WebCore::jsTestObjPrototypeFunctionWithExecStateVoidBody):
     109        (WebCore::jsTestObjPrototypeFunctionWithExecStateVoidExceptionBody):
     110        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextBody):
     111        (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateBody):
     112        (WebCore::jsTestObjPrototypeFunctionWithDocumentArgumentBody):
     113        (WebCore::jsTestObjPrototypeFunctionWithCallerDocumentArgumentBody):
     114        (WebCore::jsTestObjPrototypeFunctionWithCallerWindowArgumentBody):
     115        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgBody):
     116        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgAndDefaultValueBody):
     117        (WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArgBody):
     118        (WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgsBody):
     119        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringBody):
     120        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringBody):
     121        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringBody):
     122        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValueBody):
     123        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringAndDefaultValueBody):
     124        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsNullBody):
     125        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefinedBody):
     126        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsNullBody):
     127        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyStringBody):
     128        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyStringBody):
     129        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsEmptyStringBody):
     130        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaNBody):
     131        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaNBody):
     132        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongBody):
     133        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongIsZeroBody):
     134        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongBody):
     135        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongIsZeroBody):
     136        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceBody):
     137        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceIsEmptyBody):
     138        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanBody):
     139        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanIsFalseBody):
     140        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAnyBody):
     141        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalObjectBody):
     142        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperBody):
     143        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNullBody):
     144        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolverBody):
     145        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalRecordBody):
     146        (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalPromiseBody):
     147        (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArgBody):
     148        (WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArgBody):
     149        (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArgBody):
     150        (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArgBody):
     151        (WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArgBody):
     152        (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArgBody):
     153        (WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArgBody):
     154        (WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArgBody):
     155        (WebCore::jsTestObjPrototypeFunctionConditionalMethod2Body):
     156        (WebCore::jsTestObjPrototypeFunctionConditionalMethod3Body):
     157        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod1Body):
     158        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod2Body):
     159        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod3Body):
     160        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod4Body):
     161        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod5Body):
     162        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod6Body):
     163        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod7Body):
     164        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod8Body):
     165        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod9Body):
     166        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod10Body):
     167        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod11Body):
     168        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod12Body):
     169        (WebCore::jsTestObjPrototypeFunctionOverloadedMethod13Body):
     170        (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1Body):
     171        (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2Body):
     172        (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion1Body):
     173        (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion2Body):
     174        (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions1Body):
     175        (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions2Body):
     176        (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion1Body):
     177        (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion2Body):
     178        (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion1Body):
     179        (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion2Body):
     180        (WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion1Body):
     181        (WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion2Body):
     182        (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter1Body):
     183        (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter2Body):
     184        (WebCore::jsTestObjConstructorFunctionClassMethodBody):
     185        (WebCore::jsTestObjConstructorFunctionOverloadedMethod11Body):
     186        (WebCore::jsTestObjConstructorFunctionOverloadedMethod12Body):
     187        (WebCore::jsTestObjPrototypeFunctionClassMethodWithClampBody):
     188        (WebCore::jsTestObjPrototypeFunctionClassMethodWithClampOnOptionalBody):
     189        (WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeBody):
     190        (WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeOnOptionalBody):
     191        (WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequenceBody):
     192        (WebCore::jsTestObjPrototypeFunctionOperationWithOptionalUnionParameterBody):
     193        (WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequenceBody):
     194        (WebCore::jsTestObjPrototypeFunctionConvert1Body):
     195        (WebCore::jsTestObjPrototypeFunctionConvert2Body):
     196        (WebCore::jsTestObjPrototypeFunctionConvert3Body):
     197        (WebCore::jsTestObjPrototypeFunctionConvert4Body):
     198        (WebCore::jsTestObjPrototypeFunctionOrangeBody):
     199        (WebCore::jsTestObjPrototypeFunctionVariadicStringMethodBody):
     200        (WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethodBody):
     201        (WebCore::jsTestObjPrototypeFunctionVariadicNodeMethodBody):
     202        (WebCore::jsTestObjPrototypeFunctionVariadicUnionMethodBody):
     203        (WebCore::jsTestObjPrototypeFunctionAnyBody):
     204        (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionBody):
     205        (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentBody):
     206        (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionBody):
     207        (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentBody):
     208        (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Body):
     209        (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Body):
     210        (WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionBody):
     211        (WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionBody):
     212        (WebCore::jsTestObjPrototypeFunctionConditionalOverload1Body):
     213        (WebCore::jsTestObjPrototypeFunctionConditionalOverload2Body):
     214        (WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload1Body):
     215        (WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload2Body):
     216        (WebCore::jsTestObjPrototypeFunctionAttachShadowRootBody):
     217        (WebCore::jsTestObjPrototypeFunctionOperationWithExternalDictionaryParameterBody):
     218        (WebCore::jsTestObjPrototypeFunctionBufferSourceParameterBody):
     219        (WebCore::jsTestObjPrototypeFunctionLegacyCallerNamedBody):
     220        (WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationBody):
     221        (WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationWithExceptionBody):
     222        (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowFunctionBody):
     223        (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWorkerFunctionBody):
     224        (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowAndWorkerFunctionBody):
     225        * bindings/scripts/test/JS/JSTestOperationConditional.cpp:
     226        (WebCore::jsTestOperationConditionalPrototypeFunctionNonConditionalOperationBody):
     227        (WebCore::jsTestOperationConditionalPrototypeFunctionConditionalOperationBody):
     228        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
     229        (WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionBody):
     230        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
     231        (WebCore::jsTestTypedefsPrototypeFunctionFuncBody):
     232        (WebCore::jsTestTypedefsPrototypeFunctionSetShadowBody):
     233        (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArgBody):
     234        (WebCore::jsTestTypedefsPrototypeFunctionSequenceOfNullablesArgBody):
     235        (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfNullablesArgBody):
     236        (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfUnionsArgBody):
     237        (WebCore::jsTestTypedefsPrototypeFunctionUnionArgBody):
     238        (WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampBody):
     239        (WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampInTypedefBody):
     240        (WebCore::jsTestTypedefsPrototypeFunctionMethodWithExceptionBody):
     241
    12422020-07-29  Darin Adler  <darin@apple.com>
    2243
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r264988 r265046  
    64826482    my $returnArgumentName = GetOperationReturnedArgumentName($operation);
    64836483    if ($returnArgumentName) {
     6484        push(@$outputArray, $indent . "throwScope.release();\n") if ($hasThrowScope);
    64846485        push(@$outputArray, $indent . "$functionString;\n");
    64856486        GenerateWriteBarriersForArguments($outputArray, $operation, $indent);
    64866487        push(@$outputArray, $indent . "return JSValue::encode($returnArgumentName.value());\n");
    64876488    } elsif ($operation->type->name eq "void" || ($codeGenerator->IsPromiseType($operation->type) && !$operation->extendedAttributes->{PromiseProxy})) {
     6489        push(@$outputArray, $indent . "throwScope.release();\n") if ($hasThrowScope);
    64886490        push(@$outputArray, $indent . "$functionString;\n");
    64896491        GenerateWriteBarriersForArguments($outputArray, $operation, $indent);
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp

    r264855 r265046  
    352352    UNUSED_PARAM(throwScope);
    353353    UNUSED_PARAM(callFrame);
     354    throwScope.release();
    354355    forwardClearToMapLike(*lexicalGlobalObject, *callFrame, *castedThis);
    355356    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSSetLike.cpp

    r264855 r265046  
    328328    UNUSED_PARAM(throwScope);
    329329    UNUSED_PARAM(callFrame);
     330    throwScope.release();
    330331    forwardClearToSetLike(*lexicalGlobalObject, *callFrame, *castedThis);
    331332    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp

    r264855 r265046  
    248248    auto nextChild = convert<IDLInterface<Node>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "nextChild", "TestActiveDOMObject", "excitingFunction", "Node"); });
    249249    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     250    throwScope.release();
    250251    impl.excitingFunction(*nextChild);
    251252    return JSValue::encode(jsUndefined());
     
    269270    auto message = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    270271    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     272    throwScope.release();
    271273    impl.postMessage(WTFMove(message));
    272274    return JSValue::encode(jsUndefined());
     
    289291    auto param = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    290292    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     293    throwScope.release();
    291294    impl.overloadedMethod(WTFMove(param));
    292295    return JSValue::encode(jsUndefined());
     
    306309    auto param2 = convert<IDLInterface<Node>>(*lexicalGlobalObject, argument1.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 1, "param2", "TestActiveDOMObject", "overloadedMethod", "Node"); });
    307310    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     311    throwScope.release();
    308312    impl.overloadedMethod(*param1, *param2);
    309313    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp

    r264855 r265046  
    424424    CustomElementReactionStack customElementReactionStack(*lexicalGlobalObject);
    425425    auto& impl = castedThis->wrapped();
     426    throwScope.release();
    426427    impl.methodWithCEReactions();
    427428    return JSValue::encode(jsUndefined());
     
    441442    CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
    442443    auto& impl = castedThis->wrapped();
     444    throwScope.release();
    443445    impl.methodWithCEReactionsNotNeeded();
    444446    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp

    r264855 r265046  
    363363    if (UNLIKELY(impl.callTracingActive()))
    364364        CallTracer::testCallTracerInterface(impl, "testOperationInterface"_s);
     365    throwScope.release();
    365366    impl.testOperationInterface();
    366367    return JSValue::encode(jsUndefined());
     
    381382    if (UNLIKELY(impl.callTracingActive()))
    382383        CallTracer::testCallTracerOperation(impl, "testOperationSpecified"_s);
     384    throwScope.release();
    383385    impl.testOperationSpecified();
    384386    return JSValue::encode(jsUndefined());
     
    410412    if (UNLIKELY(impl.callTracingActive()))
    411413        CallTracer::testCallTracerInterface(impl, "testOperationWithArguments"_s, { a, b, c });
     414    throwScope.release();
    412415    impl.testOperationWithArguments(WTFMove(a), WTFMove(b), WTFMove(c));
    413416    return JSValue::encode(jsUndefined());
     
    433436    if (UNLIKELY(impl.callTracingActive()))
    434437        CallTracer::testCallTracerInterface(impl, "testOperationWithNullableArgument"_s, { nodeNullableArg });
     438    throwScope.release();
    435439    impl.testOperationWithNullableArgument(WTFMove(nodeNullableArg));
    436440    return JSValue::encode(jsUndefined());
     
    456460    if (UNLIKELY(impl.callTracingActive()))
    457461        CallTracer::testCallTracerInterface(impl, "testOperationWithVariantArgument"_s, { variantArg });
     462    throwScope.release();
    458463    impl.testOperationWithVariantArgument(WTFMove(variantArg));
    459464    return JSValue::encode(jsUndefined());
     
    479484    if (UNLIKELY(impl.callTracingActive()))
    480485        CallTracer::testCallTracerInterface(impl, "testOperationWithNullableVariantArgument"_s, { variantNullableArg });
     486    throwScope.release();
    481487    impl.testOperationWithNullableVariantArgument(WTFMove(variantNullableArg));
    482488    return JSValue::encode(jsUndefined());
     
    500506    if (UNLIKELY(impl.callTracingActive()))
    501507        CallTracer::testCallTracerInterface(impl, "testOperationWithOptionalVariantArgument"_s, { variantOptionalArg });
     508    throwScope.release();
    502509    impl.testOperationWithOptionalVariantArgument(WTFMove(variantOptionalArg));
    503510    return JSValue::encode(jsUndefined());
     
    521528    if (UNLIKELY(impl.callTracingActive()))
    522529        CallTracer::testCallTracerInterface(impl, "testOperationWithDefaultVariantArgument"_s, { variantDefaultArg });
     530    throwScope.release();
    523531    impl.testOperationWithDefaultVariantArgument(WTFMove(variantDefaultArg));
    524532    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp

    r264855 r265046  
    310310    auto testParam = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    311311    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     312    throwScope.release();
    312313    impl.enabledBySettingOperation(WTFMove(testParam));
    313314    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp

    r264855 r265046  
    24622462    auto testParam = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    24632463    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     2464    throwScope.release();
    24642465    impl.regularOperation(WTFMove(testParam));
    24652466    return JSValue::encode(jsUndefined());
     
    24822483    auto testParam = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    24832484    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     2485    throwScope.release();
    24842486    impl.enabledAtRuntimeOperation(WTFMove(testParam));
    24852487    return JSValue::encode(jsUndefined());
     
    24992501    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    25002502    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     2503    throwScope.release();
    25012504    impl.enabledAtRuntimeOperation(WTFMove(testParam));
    25022505    return JSValue::encode(jsUndefined());
     
    25462549    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    25472550    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     2551    throwScope.release();
    25482552    TestGlobalObject::enabledAtRuntimeOperationStatic(WTFMove(testParam));
    25492553    return JSValue::encode(jsUndefined());
     
    25692573    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    25702574    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     2575    throwScope.release();
    25712576    impl.enabledInSpecificWorld(WTFMove(testParam));
    25722577    return JSValue::encode(jsUndefined());
     
    25902595    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    25912596    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     2597    throwScope.release();
    25922598    impl.enabledInSpecificWorldWhenRuntimeFeatureEnabled(WTFMove(testParam));
    25932599    return JSValue::encode(jsUndefined());
     
    26112617    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    26122618    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     2619    throwScope.release();
    26132620    impl.enabledInSpecificWorldWhenRuntimeFeaturesEnabled(WTFMove(testParam));
    26142621    return JSValue::encode(jsUndefined());
     
    26282635    UNUSED_PARAM(callFrame);
    26292636    auto& impl = castedThis->wrapped();
     2637    throwScope.release();
    26302638    impl.testPrivateFunction();
    26312639    return JSValue::encode(jsUndefined());
     
    26462654    UNUSED_PARAM(callFrame);
    26472655    auto& impl = castedThis->wrapped();
     2656    throwScope.release();
    26482657    impl.calculateSecretResult(WTFMove(promise));
    26492658    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp

    r264855 r265046  
    292292    auto value = convert<IDLDOMString>(*lexicalGlobalObject, argument1.value());
    293293    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     294    throwScope.release();
    294295    impl.indexedSetter(WTFMove(index), WTFMove(value));
    295296    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp

    r264855 r265046  
    889889    UNUSED_PARAM(callFrame);
    890890    auto& impl = castedThis->wrapped();
     891    throwScope.release();
    891892    impl.implementsMethod1();
    892893    return JSValue::encode(jsUndefined());
     
    953954    UNUSED_PARAM(throwScope);
    954955    UNUSED_PARAM(callFrame);
     956    throwScope.release();
    955957    TestInterface::implementsMethod4();
    956958    return JSValue::encode(jsUndefined());
     
    991993    UNUSED_PARAM(callFrame);
    992994    auto& impl = castedThis->wrapped();
     995    throwScope.release();
    993996    WebCore::TestSupplemental::supplementalMethod1(impl);
    994997    return JSValue::encode(jsUndefined());
     
    10551058    UNUSED_PARAM(throwScope);
    10561059    UNUSED_PARAM(callFrame);
     1060    throwScope.release();
    10571061    WebCore::TestSupplemental::supplementalMethod4();
    10581062    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp

    r264855 r265046  
    368368    auto value = convert<IDLDOMString>(*lexicalGlobalObject, argument1.value());
    369369    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     370    throwScope.release();
    370371    impl.namedSetter(WTFMove(name), WTFMove(value));
    371372    return JSValue::encode(jsUndefined());
     
    392393    auto value = convert<IDLDOMString>(*lexicalGlobalObject, argument1.value());
    393394    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     395    throwScope.release();
    394396    impl.indexedSetter(WTFMove(index), WTFMove(value));
    395397    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp

    r264855 r265046  
    272272    auto name = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    273273    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     274    throwScope.release();
    274275    impl.namedDeleter(WTFMove(name));
    275276    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp

    r264855 r265046  
    320320    auto value = convert<IDLDOMString>(*lexicalGlobalObject, argument1.value());
    321321    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     322    throwScope.release();
    322323    impl.namedSetter(WTFMove(name), WTFMove(value));
    323324    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp

    r264855 r265046  
    345345    auto value = convert<IDLDOMString>(*lexicalGlobalObject, argument1.value());
    346346    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     347    throwScope.release();
    347348    impl.namedSetter(WTFMove(name), WTFMove(value));
    348349    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp

    r264855 r265046  
    368368    auto value = convert<IDLDOMString>(*lexicalGlobalObject, argument1.value());
    369369    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     370    throwScope.release();
    370371    impl.namedSetter(WTFMove(name), WTFMove(value));
    371372    return JSValue::encode(jsUndefined());
     
    390391    auto value = convert<IDLDOMString>(*lexicalGlobalObject, argument1.value());
    391392    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     393    throwScope.release();
    392394    impl.indexedSetter(WTFMove(index), WTFMove(value));
    393395    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp

    r264855 r265046  
    355355    UNUSED_PARAM(callFrame);
    356356    auto& impl = castedThis->wrapped();
     357    throwScope.release();
    357358    impl.unforgeableOperation();
    358359    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp

    r264855 r265046  
    336336    UNUSED_PARAM(callFrame);
    337337    auto& impl = castedThis->wrapped();
     338    throwScope.release();
    338339    impl.unforgeableOperation();
    339340    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp

    r264855 r265046  
    324324    UNUSED_PARAM(callFrame);
    325325    auto& impl = castedThis->wrapped();
     326    throwScope.release();
    326327    impl.testWorkerPromise(WTFMove(promise));
    327328    return JSValue::encode(jsUndefined());
     
    340341    UNUSED_PARAM(callFrame);
    341342    auto& impl = castedThis->wrapped();
     343    throwScope.release();
    342344    impl.calculateSecretResult(WTFMove(promise));
    343345    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp

    r264988 r265046  
    25722572    auto param = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    25732573    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     2574    throwScope.release();
    25742575    impl.legacyCallerNamed(WTFMove(param));
    25752576    return JSValue::encode(jsUndefined());
     
    25982599    ASSERT(castedThis);
    25992600    auto& impl = castedThis->wrapped();
     2601    throwScope.release();
    26002602    impl.legacyCallerOperationFromBindings();
    26012603    return JSValue::encode(jsUndefined());
     
    55825584    auto testParam = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    55835585    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     5586    throwScope.release();
    55845587    impl.enabledAtRuntimeOperation(WTFMove(testParam));
    55855588    return JSValue::encode(jsUndefined());
     
    55995602    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    56005603    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     5604    throwScope.release();
    56015605    impl.enabledAtRuntimeOperation(WTFMove(testParam));
    56025606    return JSValue::encode(jsUndefined());
     
    56465650    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    56475651    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     5652    throwScope.release();
    56485653    TestObj::enabledAtRuntimeOperationStatic(WTFMove(testParam));
    56495654    return JSValue::encode(jsUndefined());
     
    56695674    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    56705675    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     5676    throwScope.release();
    56715677    impl.enabledInSpecificWorldWhenRuntimeFeatureEnabled(WTFMove(testParam));
    56725678    return JSValue::encode(jsUndefined());
     
    56905696    auto testParam = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    56915697    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     5698    throwScope.release();
    56925699    impl.worldSpecificMethod(WTFMove(testParam));
    56935700    return JSValue::encode(jsUndefined());
     
    57065713    UNUSED_PARAM(callFrame);
    57075714    auto& impl = castedThis->wrapped();
     5715    throwScope.release();
    57085716    impl.calculateSecretResult(WTFMove(promise));
    57095717    return JSValue::encode(jsUndefined());
     
    57555763    UNUSED_PARAM(callFrame);
    57565764    auto& impl = castedThis->wrapped();
     5765    throwScope.release();
    57575766    impl.voidMethod();
    57585767    return JSValue::encode(jsUndefined());
     
    57825791    auto objArg = convert<IDLInterface<TestObj>>(*lexicalGlobalObject, argument2.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 2, "objArg", "TestObject", "voidMethodWithArgs", "TestObj"); });
    57835792    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     5793    throwScope.release();
    57845794    impl.voidMethodWithArgs(WTFMove(longArg), WTFMove(strArg), *objArg);
    57855795    return JSValue::encode(jsUndefined());
     
    59825992    auto arg = convert<IDLTreatNullAsEmptyAdaptor<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    59835993    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     5994    throwScope.release();
    59845995    impl.methodWithArgTreatingNullAsEmptyString(WTFMove(arg));
    59855996    return JSValue::encode(jsUndefined());
     
    60036014    auto resolver = convert<IDLXPathNSResolver<XPathNSResolver>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "resolver", "TestObject", "methodWithXPathNSResolverParameter", "XPathNSResolver"); });
    60046015    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6016    throwScope.release();
    60056017    impl.methodWithXPathNSResolverParameter(*resolver);
    60066018    return JSValue::encode(jsUndefined());
     
    60736085    auto enumArg = convert<IDLEnumeration<TestObj::EnumType>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeEnumError(lexicalGlobalObject, scope, 0, "enumArg", "TestObject", "methodWithEnumArg", expectedEnumerationValues<TestObj::EnumType>()); });
    60746086    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6087    throwScope.release();
    60756088    impl.methodWithEnumArg(WTFMove(enumArg));
    60766089    return JSValue::encode(jsUndefined());
     
    60946107    auto enumArg = convert<IDLEnumeration<TestStandaloneEnumeration>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeEnumError(lexicalGlobalObject, scope, 0, "enumArg", "TestObject", "methodWithStandaloneEnumArg", expectedEnumerationValues<TestStandaloneEnumeration>()); });
    60956108    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6109    throwScope.release();
    60966110    impl.methodWithStandaloneEnumArg(WTFMove(enumArg));
    60976111    return JSValue::encode(jsUndefined());
     
    61136127    auto enumArg = argument0.value().isUndefined() ? Optional<Converter<IDLEnumeration<TestObj::EnumType>>::ReturnType>() : Optional<Converter<IDLEnumeration<TestObj::EnumType>>::ReturnType>(convert<IDLEnumeration<TestObj::EnumType>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeEnumError(lexicalGlobalObject, scope, 0, "enumArg", "TestObject", "methodWithOptionalEnumArg", expectedEnumerationValues<TestObj::EnumType>()); }));
    61146128    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6129    throwScope.release();
    61156130    impl.methodWithOptionalEnumArg(WTFMove(enumArg));
    61166131    return JSValue::encode(jsUndefined());
     
    61326147    auto enumArg = argument0.value().isUndefined() ? TestObj::EnumType::EnumValue1 : convert<IDLEnumeration<TestObj::EnumType>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeEnumError(lexicalGlobalObject, scope, 0, "enumArg", "TestObject", "methodWithOptionalEnumArgAndDefaultValue", expectedEnumerationValues<TestObj::EnumType>()); });
    61336148    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6149    throwScope.release();
    61346150    impl.methodWithOptionalEnumArgAndDefaultValue(WTFMove(enumArg));
    61356151    return JSValue::encode(jsUndefined());
     
    61766192    auto str = convert<IDLUSVString>(*lexicalGlobalObject, argument0.value());
    61776193    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6194    throwScope.release();
    61786195    impl.methodWithUSVStringArg(WTFMove(str));
    61796196    return JSValue::encode(jsUndefined());
     
    61976214    auto str = convert<IDLNullable<IDLUSVString>>(*lexicalGlobalObject, argument0.value());
    61986215    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6216    throwScope.release();
    61996217    impl.methodWithNullableUSVStringArg(WTFMove(str));
    62006218    return JSValue::encode(jsUndefined());
     
    62186236    auto str = convert<IDLTreatNullAsEmptyAdaptor<IDLUSVString>>(*lexicalGlobalObject, argument0.value());
    62196237    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6238    throwScope.release();
    62206239    impl.methodWithUSVStringArgTreatingNullAsEmptyString(WTFMove(str));
    62216240    return JSValue::encode(jsUndefined());
     
    62396258    auto str = convert<IDLByteString>(*lexicalGlobalObject, argument0.value());
    62406259    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6260    throwScope.release();
    62416261    impl.methodWithByteStringArg(WTFMove(str));
    62426262    return JSValue::encode(jsUndefined());
     
    62606280    auto str = convert<IDLNullable<IDLByteString>>(*lexicalGlobalObject, argument0.value());
    62616281    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6282    throwScope.release();
    62626283    impl.methodWithNullableByteStringArg(WTFMove(str));
    62636284    return JSValue::encode(jsUndefined());
     
    62816302    auto str = convert<IDLTreatNullAsEmptyAdaptor<IDLByteString>>(*lexicalGlobalObject, argument0.value());
    62826303    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6304    throwScope.release();
    62836305    impl.methodWithByteStringArgTreatingNullAsEmptyString(WTFMove(str));
    62846306    return JSValue::encode(jsUndefined());
     
    63026324    auto serializedArg = convert<IDLSerializedScriptValue<SerializedScriptValue>>(*lexicalGlobalObject, argument0.value());
    63036325    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6326    throwScope.release();
    63046327    impl.serializedValue(WTFMove(serializedArg));
    63056328    return JSValue::encode(jsUndefined());
     
    63236346    auto recordParameter = convert<IDLRecord<IDLDOMString, IDLLong>>(*lexicalGlobalObject, argument0.value());
    63246347    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6348    throwScope.release();
    63256349    impl.methodWithRecord(WTFMove(recordParameter));
    63266350    return JSValue::encode(jsUndefined());
     
    63396363    UNUSED_PARAM(callFrame);
    63406364    auto& impl = castedThis->wrapped();
     6365    throwScope.release();
    63416366    propagateException(*lexicalGlobalObject, throwScope, impl.methodWithException());
    63426367    return JSValue::encode(jsUndefined());
     
    64646489    auto useCapture = convert<IDLBoolean>(*lexicalGlobalObject, argument2.value());
    64656490    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6491    throwScope.release();
    64666492    impl.addEventListener(WTFMove(type), WTFMove(listener), WTFMove(useCapture));
    64676493    vm.heap.writeBarrier(&static_cast<JSObject&>(*castedThis), argument1.value());
     
    64926518    auto useCapture = convert<IDLBoolean>(*lexicalGlobalObject, argument2.value());
    64936519    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6520    throwScope.release();
    64946521    impl.removeEventListener(WTFMove(type), WTFMove(listener), WTFMove(useCapture));
    64956522    vm.heap.writeBarrier(&static_cast<JSObject&>(*castedThis), argument1.value());
     
    65096536    UNUSED_PARAM(callFrame);
    65106537    auto& impl = castedThis->wrapped();
     6538    throwScope.release();
    65116539    impl.withExecStateVoid(*jsCast<JSDOMGlobalObject*>(lexicalGlobalObject));
    65126540    return JSValue::encode(jsUndefined());
     
    65406568    UNUSED_PARAM(callFrame);
    65416569    auto& impl = castedThis->wrapped();
     6570    throwScope.release();
    65426571    propagateException(*lexicalGlobalObject, throwScope, impl.withExecStateVoidException(*jsCast<JSDOMGlobalObject*>(lexicalGlobalObject)));
    65436572    return JSValue::encode(jsUndefined());
     
    65746603    if (UNLIKELY(!context))
    65756604        return JSValue::encode(jsUndefined());
     6605    throwScope.release();
    65766606    impl.withScriptExecutionContext(*context);
    65776607    return JSValue::encode(jsUndefined());
     
    65936623    if (UNLIKELY(!context))
    65946624        return JSValue::encode(jsUndefined());
     6625    throwScope.release();
    65956626    impl.withScriptExecutionContextAndExecState(*jsCast<JSDOMGlobalObject*>(lexicalGlobalObject), *callFrame, *context);
    65966627    return JSValue::encode(jsUndefined());
     
    66506681    ASSERT(context->isDocument());
    66516682    auto& document = downcast<Document>(*context);
     6683    throwScope.release();
    66526684    impl.withDocumentArgument(document);
    66536685    return JSValue::encode(jsUndefined());
     
    66696701    if (!incumbentDocument)
    66706702        return JSValue::encode(jsUndefined());
     6703    throwScope.release();
    66716704    impl.withCallerDocumentArgument(*incumbentDocument);
    66726705    return JSValue::encode(jsUndefined());
     
    66856718    UNUSED_PARAM(callFrame);
    66866719    auto& impl = castedThis->wrapped();
     6720    throwScope.release();
    66876721    impl.withCallerWindowArgument(incumbentDOMWindow(*jsCast<JSDOMGlobalObject*>(lexicalGlobalObject), *callFrame));
    66886722    return JSValue::encode(jsUndefined());
     
    67046738    auto opt = argument0.value().isUndefined() ? Optional<Converter<IDLLong>::ReturnType>() : Optional<Converter<IDLLong>::ReturnType>(convert<IDLLong>(*lexicalGlobalObject, argument0.value()));
    67056739    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6740    throwScope.release();
    67066741    impl.methodWithOptionalArg(WTFMove(opt));
    67076742    return JSValue::encode(jsUndefined());
     
    67236758    auto opt = argument0.value().isUndefined() ? 666 : convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    67246759    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6760    throwScope.release();
    67256761    impl.methodWithOptionalArgAndDefaultValue(WTFMove(opt));
    67266762    return JSValue::encode(jsUndefined());
     
    67476783    auto opt = argument1.value().isUndefined() ? Optional<Converter<IDLLong>::ReturnType>() : Optional<Converter<IDLLong>::ReturnType>(convert<IDLLong>(*lexicalGlobalObject, argument1.value()));
    67486784    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6785    throwScope.release();
    67496786    impl.methodWithNonOptionalArgAndOptionalArg(WTFMove(nonOpt), WTFMove(opt));
    67506787    return JSValue::encode(jsUndefined());
     
    67746811    auto opt2 = argument2.value().isUndefined() ? Optional<Converter<IDLLong>::ReturnType>() : Optional<Converter<IDLLong>::ReturnType>(convert<IDLLong>(*lexicalGlobalObject, argument2.value()));
    67756812    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6813    throwScope.release();
    67766814    impl.methodWithNonOptionalArgAndTwoOptionalArgs(WTFMove(nonOpt), WTFMove(opt1), WTFMove(opt2));
    67776815    return JSValue::encode(jsUndefined());
     
    67936831    auto str = argument0.value().isUndefined() ? String() : convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    67946832    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6833    throwScope.release();
    67956834    impl.methodWithOptionalString(WTFMove(str));
    67966835    return JSValue::encode(jsUndefined());
     
    68126851    auto str = argument0.value().isUndefined() ? String() : convert<IDLUSVString>(*lexicalGlobalObject, argument0.value());
    68136852    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6853    throwScope.release();
    68146854    impl.methodWithOptionalUSVString(WTFMove(str));
    68156855    return JSValue::encode(jsUndefined());
     
    68316871    auto str = argument0.value().isUndefined() ? nullAtom() : convert<IDLAtomStringAdaptor<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    68326872    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6873    throwScope.release();
    68336874    impl.methodWithOptionalAtomString(WTFMove(str));
    68346875    return JSValue::encode(jsUndefined());
     
    68506891    auto str = argument0.value().isUndefined() ? "foo"_s : convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    68516892    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6893    throwScope.release();
    68526894    impl.methodWithOptionalStringAndDefaultValue(WTFMove(str));
    68536895    return JSValue::encode(jsUndefined());
     
    68696911    auto str = argument0.value().isUndefined() ? AtomString("foo", AtomString::ConstructFromLiteral) : convert<IDLAtomStringAdaptor<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    68706912    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6913    throwScope.release();
    68716914    impl.methodWithOptionalAtomStringAndDefaultValue(WTFMove(str));
    68726915    return JSValue::encode(jsUndefined());
     
    68886931    auto str = argument0.value().isUndefined() ? String() : convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    68896932    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6933    throwScope.release();
    68906934    impl.methodWithOptionalStringIsNull(WTFMove(str));
    68916935    return JSValue::encode(jsUndefined());
     
    69076951    auto str = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    69086952    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6953    throwScope.release();
    69096954    impl.methodWithOptionalStringIsUndefined(WTFMove(str));
    69106955    return JSValue::encode(jsUndefined());
     
    69266971    auto str = argument0.value().isUndefined() ? nullAtom() : convert<IDLAtomStringAdaptor<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    69276972    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6973    throwScope.release();
    69286974    impl.methodWithOptionalAtomStringIsNull(WTFMove(str));
    69296975    return JSValue::encode(jsUndefined());
     
    69456991    auto str = argument0.value().isUndefined() ? emptyString() : convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    69466992    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     6993    throwScope.release();
    69476994    impl.methodWithOptionalStringIsEmptyString(WTFMove(str));
    69486995    return JSValue::encode(jsUndefined());
     
    69647011    auto str = argument0.value().isUndefined() ? emptyString() : convert<IDLUSVString>(*lexicalGlobalObject, argument0.value());
    69657012    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7013    throwScope.release();
    69667014    impl.methodWithOptionalUSVStringIsEmptyString(WTFMove(str));
    69677015    return JSValue::encode(jsUndefined());
     
    69837031    auto str = argument0.value().isUndefined() ? emptyAtom() : convert<IDLAtomStringAdaptor<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    69847032    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7033    throwScope.release();
    69857034    impl.methodWithOptionalAtomStringIsEmptyString(WTFMove(str));
    69867035    return JSValue::encode(jsUndefined());
     
    70027051    auto number = convert<IDLUnrestrictedDouble>(*lexicalGlobalObject, argument0.value());
    70037052    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7053    throwScope.release();
    70047054    impl.methodWithOptionalDoubleIsNaN(WTFMove(number));
    70057055    return JSValue::encode(jsUndefined());
     
    70217071    auto number = convert<IDLUnrestrictedFloat>(*lexicalGlobalObject, argument0.value());
    70227072    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7073    throwScope.release();
    70237074    impl.methodWithOptionalFloatIsNaN(WTFMove(number));
    70247075    return JSValue::encode(jsUndefined());
     
    70407091    auto number = argument0.value().isUndefined() ? Optional<Converter<IDLLongLong>::ReturnType>() : Optional<Converter<IDLLongLong>::ReturnType>(convert<IDLLongLong>(*lexicalGlobalObject, argument0.value()));
    70417092    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7093    throwScope.release();
    70427094    impl.methodWithOptionalLongLong(WTFMove(number));
    70437095    return JSValue::encode(jsUndefined());
     
    70597111    auto number = convert<IDLLongLong>(*lexicalGlobalObject, argument0.value());
    70607112    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7113    throwScope.release();
    70617114    impl.methodWithOptionalLongLongIsZero(WTFMove(number));
    70627115    return JSValue::encode(jsUndefined());
     
    70787131    auto number = argument0.value().isUndefined() ? Optional<Converter<IDLUnsignedLongLong>::ReturnType>() : Optional<Converter<IDLUnsignedLongLong>::ReturnType>(convert<IDLUnsignedLongLong>(*lexicalGlobalObject, argument0.value()));
    70797132    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7133    throwScope.release();
    70807134    impl.methodWithOptionalUnsignedLongLong(WTFMove(number));
    70817135    return JSValue::encode(jsUndefined());
     
    70977151    auto number = convert<IDLUnsignedLongLong>(*lexicalGlobalObject, argument0.value());
    70987152    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7153    throwScope.release();
    70997154    impl.methodWithOptionalUnsignedLongLongIsZero(WTFMove(number));
    71007155    return JSValue::encode(jsUndefined());
     
    71167171    auto array = argument0.value().isUndefined() ? Converter<IDLSequence<IDLDOMString>>::ReturnType{ } : convert<IDLSequence<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    71177172    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7173    throwScope.release();
    71187174    impl.methodWithOptionalSequence(WTFMove(array));
    71197175    return JSValue::encode(jsUndefined());
     
    71357191    auto array = argument0.value().isUndefined() ? Converter<IDLSequence<IDLDOMString>>::ReturnType{ } : convert<IDLSequence<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    71367192    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7193    throwScope.release();
    71377194    impl.methodWithOptionalSequenceIsEmpty(WTFMove(array));
    71387195    return JSValue::encode(jsUndefined());
     
    71547211    auto b = argument0.value().isUndefined() ? Optional<Converter<IDLBoolean>::ReturnType>() : Optional<Converter<IDLBoolean>::ReturnType>(convert<IDLBoolean>(*lexicalGlobalObject, argument0.value()));
    71557212    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7213    throwScope.release();
    71567214    impl.methodWithOptionalBoolean(WTFMove(b));
    71577215    return JSValue::encode(jsUndefined());
     
    71737231    auto b = convert<IDLBoolean>(*lexicalGlobalObject, argument0.value());
    71747232    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7233    throwScope.release();
    71757234    impl.methodWithOptionalBooleanIsFalse(WTFMove(b));
    71767235    return JSValue::encode(jsUndefined());
     
    71927251    auto a = convert<IDLAny>(*lexicalGlobalObject, argument0.value());
    71937252    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7253    throwScope.release();
    71947254    impl.methodWithOptionalAny(WTFMove(a));
    71957255    return JSValue::encode(jsUndefined());
     
    72117271    auto a = argument0.value().isUndefined() ? Optional<Converter<IDLObject>::ReturnType>() : Optional<Converter<IDLObject>::ReturnType>(convert<IDLObject>(*lexicalGlobalObject, argument0.value()));
    72127272    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7273    throwScope.release();
    72137274    impl.methodWithOptionalObject(WTFMove(a));
    72147275    return JSValue::encode(jsUndefined());
     
    72307291    auto obj = convert<IDLNullable<IDLInterface<TestObj>>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "obj", "TestObject", "methodWithOptionalNullableWrapper", "TestObj"); });
    72317292    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7293    throwScope.release();
    72327294    impl.methodWithOptionalNullableWrapper(WTFMove(obj));
    72337295    return JSValue::encode(jsUndefined());
     
    72497311    auto obj = convert<IDLNullable<IDLInterface<TestObj>>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "obj", "TestObject", "methodWithOptionalNullableWrapperIsNull", "TestObj"); });
    72507312    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7313    throwScope.release();
    72517314    impl.methodWithOptionalNullableWrapperIsNull(WTFMove(obj));
    72527315    return JSValue::encode(jsUndefined());
     
    72687331    auto resolver = convert<IDLNullable<IDLXPathNSResolver<XPathNSResolver>>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "resolver", "TestObject", "methodWithOptionalXPathNSResolver", "XPathNSResolver"); });
    72697332    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7333    throwScope.release();
    72707334    impl.methodWithOptionalXPathNSResolver(WTFMove(resolver));
    72717335    return JSValue::encode(jsUndefined());
     
    72877351    auto record = argument0.value().isUndefined() ? WTF::nullopt : convert<IDLNullable<IDLRecord<IDLDOMString, IDLLong>>>(*lexicalGlobalObject, argument0.value());
    72887352    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7353    throwScope.release();
    72897354    impl.methodWithOptionalRecord(WTFMove(record));
    72907355    return JSValue::encode(jsUndefined());
     
    73067371    auto promise = argument0.value().isUndefined() ? nullptr : convert<IDLPromise<IDLVoid>>(*lexicalGlobalObject, argument0.value());
    73077372    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7373    throwScope.release();
    73087374    impl.methodWithOptionalPromise(WTFMove(promise));
    73097375    return JSValue::encode(jsUndefined());
     
    73277393    auto callback = convert<IDLCallbackInterface<JSTestCallbackInterface>>(*lexicalGlobalObject, argument0.value(), *castedThis->globalObject(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 0, "callback", "TestObject", "methodWithCallbackArg"); });
    73287394    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7395    throwScope.release();
    73297396    impl.methodWithCallbackArg(callback.releaseNonNull());
    73307397    return JSValue::encode(jsUndefined());
     
    73517418    auto callback = convert<IDLCallbackInterface<JSTestCallbackInterface>>(*lexicalGlobalObject, argument1.value(), *castedThis->globalObject(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 1, "callback", "TestObject", "methodWithNonCallbackArgAndCallbackArg"); });
    73527419    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7420    throwScope.release();
    73537421    impl.methodWithNonCallbackArgAndCallbackArg(WTFMove(nonCallback), callback.releaseNonNull());
    73547422    return JSValue::encode(jsUndefined());
     
    73707438    auto callback = convert<IDLNullable<IDLCallbackInterface<JSTestCallbackInterface>>>(*lexicalGlobalObject, argument0.value(), *castedThis->globalObject(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 0, "callback", "TestObject", "methodWithCallbackAndOptionalArg"); });
    73717439    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7440    throwScope.release();
    73727441    impl.methodWithCallbackAndOptionalArg(WTFMove(callback));
    73737442    return JSValue::encode(jsUndefined());
     
    73917460    auto callback = convert<IDLCallbackFunction<JSTestCallbackFunction>>(*lexicalGlobalObject, argument0.value(), *castedThis->globalObject(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeFunctionError(lexicalGlobalObject, scope, 0, "callback", "TestObject", "methodWithCallbackFunctionArg"); });
    73927461    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7462    throwScope.release();
    73937463    impl.methodWithCallbackFunctionArg(callback.releaseNonNull());
    73947464    return JSValue::encode(jsUndefined());
     
    74157485    auto callback = convert<IDLCallbackFunction<JSTestCallbackFunction>>(*lexicalGlobalObject, argument1.value(), *castedThis->globalObject(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeFunctionError(lexicalGlobalObject, scope, 1, "callback", "TestObject", "methodWithNonCallbackArgAndCallbackFunctionArg"); });
    74167486    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7487    throwScope.release();
    74177488    impl.methodWithNonCallbackArgAndCallbackFunctionArg(WTFMove(nonCallback), callback.releaseNonNull());
    74187489    return JSValue::encode(jsUndefined());
     
    74347505    auto callback = convert<IDLNullable<IDLCallbackFunction<JSTestCallbackFunction>>>(*lexicalGlobalObject, argument0.value(), *castedThis->globalObject(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeFunctionError(lexicalGlobalObject, scope, 0, "callback", "TestObject", "methodWithCallbackFunctionAndOptionalArg"); });
    74357506    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7507    throwScope.release();
    74367508    impl.methodWithCallbackFunctionAndOptionalArg(WTFMove(callback));
    74377509    return JSValue::encode(jsUndefined());
     
    74527524    auto callback = convert<IDLNullable<IDLCallbackInterface<JSTestCallbackInterface>>>(*lexicalGlobalObject, argument0.value(), *jsCast<JSDOMGlobalObject*>(lexicalGlobalObject), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 0, "callback", "TestObject", "staticMethodWithCallbackAndOptionalArg"); });
    74537525    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7526    throwScope.release();
    74547527    TestObj::staticMethodWithCallbackAndOptionalArg(WTFMove(callback));
    74557528    return JSValue::encode(jsUndefined());
     
    74727545    auto callback = convert<IDLCallbackInterface<JSTestCallbackInterface>>(*lexicalGlobalObject, argument0.value(), *jsCast<JSDOMGlobalObject*>(lexicalGlobalObject), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 0, "callback", "TestObject", "staticMethodWithCallbackArg"); });
    74737546    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7547    throwScope.release();
    74747548    TestObj::staticMethodWithCallbackArg(callback.releaseNonNull());
    74757549    return JSValue::encode(jsUndefined());
     
    75077581    UNUSED_PARAM(callFrame);
    75087582    auto& impl = castedThis->wrapped();
     7583    throwScope.release();
    75097584    impl.conditionalMethod2();
    75107585    return JSValue::encode(jsUndefined());
     
    75267601    UNUSED_PARAM(callFrame);
    75277602    auto& impl = castedThis->wrapped();
     7603    throwScope.release();
    75287604    impl.conditionalMethod3();
    75297605    return JSValue::encode(jsUndefined());
     
    75507626    auto strArg = convert<IDLDOMString>(*lexicalGlobalObject, argument1.value());
    75517627    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7628    throwScope.release();
    75527629    impl.overloadedMethod(WTFMove(objArg), WTFMove(strArg));
    75537630    return JSValue::encode(jsUndefined());
     
    75677644    auto longArg = argument1.value().isUndefined() ? Optional<Converter<IDLLong>::ReturnType>() : Optional<Converter<IDLLong>::ReturnType>(convert<IDLLong>(*lexicalGlobalObject, argument1.value()));
    75687645    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7646    throwScope.release();
    75697647    impl.overloadedMethod(WTFMove(objArg), WTFMove(longArg));
    75707648    return JSValue::encode(jsUndefined());
     
    75817659    auto strArg = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    75827660    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7661    throwScope.release();
    75837662    impl.overloadedMethod(WTFMove(strArg));
    75847663    return JSValue::encode(jsUndefined());
     
    75957674    auto longArg = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    75967675    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7676    throwScope.release();
    75977677    impl.overloadedMethod(WTFMove(longArg));
    75987678    return JSValue::encode(jsUndefined());
     
    76097689    auto callback = convert<IDLCallbackInterface<JSTestCallbackInterface>>(*lexicalGlobalObject, argument0.value(), *castedThis->globalObject(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentMustBeObjectError(lexicalGlobalObject, scope, 0, "callback", "TestObject", "overloadedMethod"); });
    76107690    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7691    throwScope.release();
    76117692    impl.overloadedMethod(callback.releaseNonNull());
    76127693    return JSValue::encode(jsUndefined());
     
    76237704    auto listArg = convert<IDLNullable<IDLInterface<DOMStringList>>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "listArg", "TestObject", "overloadedMethod", "DOMStringList"); });
    76247705    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7706    throwScope.release();
    76257707    impl.overloadedMethod(WTFMove(listArg));
    76267708    return JSValue::encode(jsUndefined());
     
    76377719    auto arrayArg = convert<IDLNullable<IDLSequence<IDLDOMString>>>(*lexicalGlobalObject, argument0.value());
    76387720    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7721    throwScope.release();
    76397722    impl.overloadedMethod(WTFMove(arrayArg));
    76407723    return JSValue::encode(jsUndefined());
     
    76517734    auto objArg = convert<IDLInterface<TestObj>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "objArg", "TestObject", "overloadedMethod", "TestObj"); });
    76527735    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7736    throwScope.release();
    76537737    impl.overloadedMethod(*objArg);
    76547738    return JSValue::encode(jsUndefined());
     
    76657749    auto window = convert<IDLInterface<WindowProxy>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "window", "TestObject", "overloadedMethod", "WindowProxy"); });
    76667750    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7751    throwScope.release();
    76677752    impl.overloadedMethod(*window);
    76687753    return JSValue::encode(jsUndefined());
     
    76797764    auto arrayArg = convert<IDLSequence<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    76807765    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7766    throwScope.release();
    76817767    impl.overloadedMethod(WTFMove(arrayArg));
    76827768    return JSValue::encode(jsUndefined());
     
    76937779    auto arrayArg = convert<IDLSequence<IDLUnsignedLong>>(*lexicalGlobalObject, argument0.value());
    76947780    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7781    throwScope.release();
    76957782    impl.overloadedMethod(WTFMove(arrayArg));
    76967783    return JSValue::encode(jsUndefined());
     
    77077794    auto strArg = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    77087795    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7796    throwScope.release();
    77097797    impl.overloadedMethod(WTFMove(strArg));
    77107798    return JSValue::encode(jsUndefined());
     
    77207808    auto blobArgs = convertVariadicArguments<IDLInterface<Blob>>(*lexicalGlobalObject, *callFrame, 0);
    77217809    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7810    throwScope.release();
    77227811    impl.overloadedMethod(WTFMove(blobArgs));
    77237812    return JSValue::encode(jsUndefined());
     
    77897878    auto objArg = convert<IDLNullable<IDLInterface<TestObj>>>(*lexicalGlobalObject, argument1.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 1, "objArg", "TestObject", "overloadedMethodWithOptionalParameter", "TestObj"); });
    77907879    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7880    throwScope.release();
    77917881    impl.overloadedMethodWithOptionalParameter(WTFMove(strArg), WTFMove(objArg));
    77927882    return JSValue::encode(jsUndefined());
     
    78067896    auto longArg = argument1.value().isUndefined() ? Optional<Converter<IDLLong>::ReturnType>() : Optional<Converter<IDLLong>::ReturnType>(convert<IDLLong>(*lexicalGlobalObject, argument1.value()));
    78077897    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7898    throwScope.release();
    78087899    impl.overloadedMethodWithOptionalParameter(WTFMove(objArg), WTFMove(longArg));
    78097900    return JSValue::encode(jsUndefined());
     
    78517942    auto objectOrNode = convert<IDLUnion<IDLInterface<TestObj>, IDLInterface<TestNode>>>(*lexicalGlobalObject, argument0.value());
    78527943    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7944    throwScope.release();
    78537945    impl.overloadedMethodWithDistinguishingUnion(WTFMove(objectOrNode));
    78547946    return JSValue::encode(jsUndefined());
     
    78657957    auto value = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    78667958    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7959    throwScope.release();
    78677960    impl.overloadedMethodWithDistinguishingUnion(WTFMove(value));
    78687961    return JSValue::encode(jsUndefined());
     
    79047997    auto objectOrNode = convert<IDLUnion<IDLInterface<TestObj>, IDLInterface<TestNode>>>(*lexicalGlobalObject, argument0.value());
    79057998    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     7999    throwScope.release();
    79068000    impl.overloadedMethodWith2DistinguishingUnions(WTFMove(objectOrNode));
    79078001    return JSValue::encode(jsUndefined());
     
    79188012    auto value = convert<IDLUnion<IDLInterface<TestInterface>, IDLDOMString, IDLLong>>(*lexicalGlobalObject, argument0.value());
    79198013    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8014    throwScope.release();
    79208015    impl.overloadedMethodWith2DistinguishingUnions(WTFMove(value));
    79218016    return JSValue::encode(jsUndefined());
     
    79628057    auto object = convert<IDLInterface<TestObj>>(*lexicalGlobalObject, argument1.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 1, "object", "TestObject", "overloadedMethodWithNonDistinguishingUnion", "TestObj"); });
    79638058    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8059    throwScope.release();
    79648060    impl.overloadedMethodWithNonDistinguishingUnion(WTFMove(objectOrNode), *object);
    79658061    return JSValue::encode(jsUndefined());
     
    79798075    auto node = convert<IDLInterface<TestNode>>(*lexicalGlobalObject, argument1.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 1, "node", "TestObject", "overloadedMethodWithNonDistinguishingUnion", "TestNode"); });
    79808076    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8077    throwScope.release();
    79818078    impl.overloadedMethodWithNonDistinguishingUnion(WTFMove(objectOrNode), *node);
    79828079    return JSValue::encode(jsUndefined());
     
    80158112    auto objectOrNode = convert<IDLNullable<IDLUnion<IDLInterface<TestObj>, IDLInterface<TestNode>>>>(*lexicalGlobalObject, argument0.value());
    80168113    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8114    throwScope.release();
    80178115    impl.overloadWithNullableUnion(WTFMove(objectOrNode));
    80188116    return JSValue::encode(jsUndefined());
     
    80298127    auto index = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    80308128    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8129    throwScope.release();
    80318130    impl.overloadWithNullableUnion(WTFMove(index));
    80328131    return JSValue::encode(jsUndefined());
     
    80708169    auto objectOrNode = argument0.value().isUndefined() ? true : convert<IDLUnion<IDLDOMString, IDLBoolean>>(*lexicalGlobalObject, argument0.value());
    80718170    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8171    throwScope.release();
    80728172    impl.overloadWithOptionalUnion(WTFMove(objectOrNode));
    80738173    return JSValue::encode(jsUndefined());
     
    80848184    auto index = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    80858185    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8186    throwScope.release();
    80868187    impl.overloadWithOptionalUnion(WTFMove(index));
    80878188    return JSValue::encode(jsUndefined());
     
    81298230    auto node = convert<IDLInterface<TestNode>>(*lexicalGlobalObject, argument1.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 1, "node", "TestObject", "overloadWithNullableNonDistinguishingParameter", "TestNode"); });
    81308231    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8232    throwScope.release();
    81318233    impl.overloadWithNullableNonDistinguishingParameter(WTFMove(obj), *node);
    81328234    return JSValue::encode(jsUndefined());
     
    81468248    auto index = convert<IDLLong>(*lexicalGlobalObject, argument1.value());
    81478249    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8250    throwScope.release();
    81488251    impl.overloadWithNullableNonDistinguishingParameter(WTFMove(node), WTFMove(index));
    81498252    return JSValue::encode(jsUndefined());
     
    81798282    UNUSED_PARAM(throwScope);
    81808283    UNUSED_PARAM(callFrame);
     8284    throwScope.release();
    81818285    TestObj::classMethod();
    81828286    return JSValue::encode(jsUndefined());
     
    82298333    auto arg = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    82308334    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8335    throwScope.release();
    82318336    TestObj::overloadedMethod1(WTFMove(arg));
    82328337    return JSValue::encode(jsUndefined());
     
    82458350    auto type = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    82468351    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8352    throwScope.release();
    82478353    TestObj::overloadedMethod1(WTFMove(type));
    82488354    return JSValue::encode(jsUndefined());
     
    82958401    auto objArgsLong = convert<IDLClampAdaptor<IDLUnsignedLong>>(*lexicalGlobalObject, argument1.value());
    82968402    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8403    throwScope.release();
    82978404    impl.classMethodWithClamp(WTFMove(objArgsShort), WTFMove(objArgsLong));
    82988405    return JSValue::encode(jsUndefined());
     
    83148421    auto objArgsLong = convert<IDLClampAdaptor<IDLLong>>(*lexicalGlobalObject, argument0.value());
    83158422    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8423    throwScope.release();
    83168424    impl.classMethodWithClampOnOptional(WTFMove(objArgsLong));
    83178425    return JSValue::encode(jsUndefined());
     
    83388446    auto objArgsLong = convert<IDLEnforceRangeAdaptor<IDLUnsignedLong>>(*lexicalGlobalObject, argument1.value());
    83398447    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8448    throwScope.release();
    83408449    impl.classMethodWithEnforceRange(WTFMove(objArgsShort), WTFMove(objArgsLong));
    83418450    return JSValue::encode(jsUndefined());
     
    83578466    auto objArgsLong = convert<IDLEnforceRangeAdaptor<IDLLong>>(*lexicalGlobalObject, argument0.value());
    83588467    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8468    throwScope.release();
    83598469    impl.classMethodWithEnforceRangeOnOptional(WTFMove(objArgsLong));
    83608470    return JSValue::encode(jsUndefined());
     
    83788488    auto unsignedLongSequence = convert<IDLSequence<IDLUnsignedLong>>(*lexicalGlobalObject, argument0.value());
    83798489    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8490    throwScope.release();
    83808491    impl.methodWithUnsignedLongSequence(WTFMove(unsignedLongSequence));
    83818492    return JSValue::encode(jsUndefined());
     
    84378548    auto optionalUnion = argument0.value().isUndefined() ? Optional<Converter<IDLUnion<IDLDOMString, IDLSequence<IDLUnrestrictedDouble>>>::ReturnType>() : Optional<Converter<IDLUnion<IDLDOMString, IDLSequence<IDLUnrestrictedDouble>>>::ReturnType>(convert<IDLUnion<IDLDOMString, IDLSequence<IDLUnrestrictedDouble>>>(*lexicalGlobalObject, argument0.value()));
    84388549    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8550    throwScope.release();
    84398551    impl.operationWithOptionalUnionParameter(WTFMove(optionalUnion));
    84408552    return JSValue::encode(jsUndefined());
     
    84618573    auto nullableArrayArg = convert<IDLNullable<IDLSequence<IDLUnsignedLong>>>(*lexicalGlobalObject, argument1.value());
    84628574    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8575    throwScope.release();
    84638576    impl.methodWithAndWithoutNullableSequence(WTFMove(arrayArg), WTFMove(nullableArrayArg));
    84648577    return JSValue::encode(jsUndefined());
     
    85178630    auto value = convert<IDLInterface<TestNode>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "value", "TestObject", "convert1", "TestNode"); });
    85188631    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8632    throwScope.release();
    85198633    impl.convert1(*value);
    85208634    return JSValue::encode(jsUndefined());
     
    85388652    auto value = convert<IDLNullable<IDLInterface<TestNode>>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "value", "TestObject", "convert2", "TestNode"); });
    85398653    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8654    throwScope.release();
    85408655    impl.convert2(WTFMove(value));
    85418656    return JSValue::encode(jsUndefined());
     
    85598674    auto value = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    85608675    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8676    throwScope.release();
    85618677    impl.convert3(WTFMove(value));
    85628678    return JSValue::encode(jsUndefined());
     
    85808696    auto value = convert<IDLNullable<IDLDOMString>>(*lexicalGlobalObject, argument0.value());
    85818697    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8698    throwScope.release();
    85828699    impl.convert4(WTFMove(value));
    85838700    return JSValue::encode(jsUndefined());
     
    86118728    UNUSED_PARAM(callFrame);
    86128729    auto& impl = castedThis->wrapped();
     8730    throwScope.release();
    86138731    impl.banana();
    86148732    return JSValue::encode(jsUndefined());
     
    86348752    auto tail = convertVariadicArguments<IDLDOMString>(*lexicalGlobalObject, *callFrame, 1);
    86358753    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8754    throwScope.release();
    86368755    impl.variadicStringMethod(WTFMove(head), WTFMove(tail));
    86378756    return JSValue::encode(jsUndefined());
     
    86578776    auto tail = convertVariadicArguments<IDLUnrestrictedDouble>(*lexicalGlobalObject, *callFrame, 1);
    86588777    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8778    throwScope.release();
    86598779    impl.variadicDoubleMethod(WTFMove(head), WTFMove(tail));
    86608780    return JSValue::encode(jsUndefined());
     
    86808800    auto tail = convertVariadicArguments<IDLInterface<Node>>(*lexicalGlobalObject, *callFrame, 1);
    86818801    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8802    throwScope.release();
    86828803    impl.variadicNodeMethod(*head, WTFMove(tail));
    86838804    return JSValue::encode(jsUndefined());
     
    87038824    auto tail = convertVariadicArguments<IDLUnion<IDLInterface<Node>, IDLDOMString>>(*lexicalGlobalObject, *callFrame, 1);
    87048825    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8826    throwScope.release();
    87058827    impl.variadicUnionMethod(WTFMove(head), WTFMove(tail));
    87068828    return JSValue::encode(jsUndefined());
     
    87278849    auto b = convert<IDLLong>(*lexicalGlobalObject, argument1.value());
    87288850    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8851    throwScope.release();
    87298852    impl.any(WTFMove(a), WTFMove(b));
    87308853    return JSValue::encode(jsUndefined());
     
    87438866    UNUSED_PARAM(callFrame);
    87448867    auto& impl = castedThis->wrapped();
     8868    throwScope.release();
    87458869    impl.testPromiseFunction(WTFMove(promise));
    87468870    return JSValue::encode(jsUndefined());
     
    87648888    auto a = convert<IDLFloat>(*lexicalGlobalObject, argument0.value());
    87658889    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8890    throwScope.release();
    87668891    impl.testPromiseFunctionWithFloatArgument(WTFMove(a), WTFMove(promise));
    87678892    return JSValue::encode(jsUndefined());
     
    87808905    UNUSED_PARAM(callFrame);
    87818906    auto& impl = castedThis->wrapped();
     8907    throwScope.release();
    87828908    propagateException(*lexicalGlobalObject, throwScope, impl.testPromiseFunctionWithException(WTFMove(promise)));
    87838909    return JSValue::encode(jsUndefined());
     
    87998925    auto a = argument0.value().isUndefined() ? Optional<Converter<IDLLong>::ReturnType>() : Optional<Converter<IDLLong>::ReturnType>(convert<IDLLong>(*lexicalGlobalObject, argument0.value()));
    88008926    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8927    throwScope.release();
    88018928    impl.testPromiseFunctionWithOptionalIntArgument(WTFMove(a), WTFMove(promise));
    88028929    return JSValue::encode(jsUndefined());
     
    88188945    auto a = convert<IDLFloat>(*lexicalGlobalObject, argument0.value());
    88198946    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8947    throwScope.release();
    88208948    impl.testPromiseOverloadedFunction(WTFMove(a), WTFMove(promise));
    88218949    return JSValue::encode(jsUndefined());
     
    88328960    auto request = convert<IDLInterface<FetchRequest>>(*lexicalGlobalObject, argument0.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 0, "request", "TestObject", "testPromiseOverloadedFunction", "FetchRequest"); });
    88338961    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     8962    throwScope.release();
    88348963    impl.testPromiseOverloadedFunction(*request, WTFMove(promise));
    88358964    return JSValue::encode(jsUndefined());
     
    88658994    UNUSED_PARAM(throwScope);
    88668995    UNUSED_PARAM(callFrame);
     8996    throwScope.release();
    88678997    TestObj::testStaticPromiseFunction(WTFMove(promise));
    88688998    return JSValue::encode(jsUndefined());
     
    88809010    UNUSED_PARAM(throwScope);
    88819011    UNUSED_PARAM(callFrame);
     9012    throwScope.release();
    88829013    propagateException(*lexicalGlobalObject, throwScope, TestObj::testStaticPromiseFunctionWithException(WTFMove(promise)));
    88839014    return JSValue::encode(jsUndefined());
     
    89579088    auto str = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    89589089    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9090    throwScope.release();
    89599091    impl.conditionalOverload(WTFMove(str));
    89609092    return JSValue::encode(jsUndefined());
     
    89749106    auto a = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    89759107    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9108    throwScope.release();
    89769109    impl.conditionalOverload(WTFMove(a));
    89779110    return JSValue::encode(jsUndefined());
     
    90199152    auto str = convert<IDLDOMString>(*lexicalGlobalObject, argument0.value());
    90209153    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9154    throwScope.release();
    90219155    impl.singleConditionalOverload(WTFMove(str));
    90229156    return JSValue::encode(jsUndefined());
     
    90349168    auto a = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    90359169    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9170    throwScope.release();
    90369171    impl.singleConditionalOverload(WTFMove(a));
    90379172    return JSValue::encode(jsUndefined());
     
    90759210    auto init = convert<IDLDictionary<TestObj::Dictionary>>(*lexicalGlobalObject, argument0.value());
    90769211    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9212    throwScope.release();
    90779213    impl.attachShadowRoot(WTFMove(init));
    90789214    return JSValue::encode(jsUndefined());
     
    90969232    auto dict = convert<IDLDictionary<DictionaryImplName>>(*lexicalGlobalObject, argument0.value());
    90979233    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9234    throwScope.release();
    90989235    impl.operationWithExternalDictionaryParameter(WTFMove(dict));
    90999236    return JSValue::encode(jsUndefined());
     
    91179254    auto data = convert<IDLUnion<IDLArrayBufferView, IDLArrayBuffer>>(*lexicalGlobalObject, argument0.value());
    91189255    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9256    throwScope.release();
    91199257    impl.bufferSourceParameter(WTFMove(data));
    91209258    return JSValue::encode(jsUndefined());
     
    91389276    auto param = convert<IDLLong>(*lexicalGlobalObject, argument0.value());
    91399277    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9278    throwScope.release();
    91409279    impl.legacyCallerNamed(WTFMove(param));
    91419280    return JSValue::encode(jsUndefined());
     
    91629301    auto b = convert<IDLInterface<Node>>(*lexicalGlobalObject, argument1.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 1, "b", "TestObject", "testReturnValueOptimization", "Node"); });
    91639302    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9303    throwScope.release();
    91649304    impl.testReturnValueOptimization(*a, *b);
    91659305    return JSValue::encode(argument0.value());
     
    91869326    auto b = convert<IDLInterface<Node>>(*lexicalGlobalObject, argument1.value(), [](JSC::JSGlobalObject& lexicalGlobalObject, JSC::ThrowScope& scope) { throwArgumentTypeError(lexicalGlobalObject, scope, 1, "b", "TestObject", "testReturnValueOptimizationWithException", "Node"); });
    91879327    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     9328    throwScope.release();
    91889329    propagateException(*lexicalGlobalObject, throwScope, impl.testReturnValueOptimizationWithException(*a, *b));
    91899330    return JSValue::encode(argument0.value());
     
    92029343    UNUSED_PARAM(callFrame);
    92039344    auto& impl = castedThis->wrapped();
     9345    throwScope.release();
    92049346    impl.conditionallyExposedToWindowFunction();
    92059347    return JSValue::encode(jsUndefined());
     
    92189360    UNUSED_PARAM(callFrame);
    92199361    auto& impl = castedThis->wrapped();
     9362    throwScope.release();
    92209363    impl.conditionallyExposedToWorkerFunction();
    92219364    return JSValue::encode(jsUndefined());
     
    92349377    UNUSED_PARAM(callFrame);
    92359378    auto& impl = castedThis->wrapped();
     9379    throwScope.release();
    92369380    impl.conditionallyExposedToWindowAndWorkerFunction();
    92379381    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.cpp

    r264855 r265046  
    209209    UNUSED_PARAM(callFrame);
    210210    auto& impl = castedThis->wrapped();
     211    throwScope.release();
    211212    impl.nonConditionalOperation();
    212213    return JSValue::encode(jsUndefined());
     
    228229    UNUSED_PARAM(callFrame);
    229230    auto& impl = castedThis->wrapped();
     231    throwScope.release();
    230232    impl.conditionalOperation();
    231233    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp

    r264855 r265046  
    337337    auto value = convert<IDLSerializedScriptValue<SerializedScriptValue>>(*lexicalGlobalObject, argument0.value());
    338338    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     339    throwScope.release();
    339340    impl.function(WTFMove(value));
    340341    return JSValue::encode(jsUndefined());
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp

    r264855 r265046  
    510510    auto x = argument0.value().isUndefined() ? Converter<IDLSequence<IDLLong>>::ReturnType{ } : convert<IDLSequence<IDLLong>>(*lexicalGlobalObject, argument0.value());
    511511    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     512    throwScope.release();
    512513    impl.func(WTFMove(x));
    513514    return JSValue::encode(jsUndefined());
     
    543544    auto alpha = argument4.value().isUndefined() ? Optional<Converter<IDLUnrestrictedFloat>::ReturnType>() : Optional<Converter<IDLUnrestrictedFloat>::ReturnType>(convert<IDLUnrestrictedFloat>(*lexicalGlobalObject, argument4.value()));
    544545    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     546    throwScope.release();
    545547    impl.setShadow(WTFMove(width), WTFMove(height), WTFMove(blur), WTFMove(color), WTFMove(alpha));
    546548    return JSValue::encode(jsUndefined());
     
    584586    auto sequenceArg = convert<IDLNullable<IDLSequence<IDLDOMString>>>(*lexicalGlobalObject, argument0.value());
    585587    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     588    throwScope.release();
    586589    impl.nullableSequenceArg(WTFMove(sequenceArg));
    587590    return JSValue::encode(jsUndefined());
     
    605608    auto sequenceArg = convert<IDLSequence<IDLNullable<IDLDOMString>>>(*lexicalGlobalObject, argument0.value());
    606609    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     610    throwScope.release();
    607611    impl.sequenceOfNullablesArg(WTFMove(sequenceArg));
    608612    return JSValue::encode(jsUndefined());
     
    626630    auto sequenceArg = convert<IDLNullable<IDLSequence<IDLNullable<IDLDOMString>>>>(*lexicalGlobalObject, argument0.value());
    627631    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     632    throwScope.release();
    628633    impl.nullableSequenceOfNullablesArg(WTFMove(sequenceArg));
    629634    return JSValue::encode(jsUndefined());
     
    647652    auto sequenceArg = convert<IDLNullable<IDLSequence<IDLUnion<IDLDOMString, IDLSequence<IDLDOMString>>>>>(*lexicalGlobalObject, argument0.value());
    648653    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     654    throwScope.release();
    649655    impl.nullableSequenceOfUnionsArg(WTFMove(sequenceArg));
    650656    return JSValue::encode(jsUndefined());
     
    668674    auto unionArg = convert<IDLUnion<IDLDOMString, IDLLong>>(*lexicalGlobalObject, argument0.value());
    669675    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     676    throwScope.release();
    670677    impl.unionArg(WTFMove(unionArg));
    671678    return JSValue::encode(jsUndefined());
     
    692699    auto arg2 = argument1.value().isUndefined() ? Optional<Converter<IDLClampAdaptor<IDLUnsignedLongLong>>::ReturnType>() : Optional<Converter<IDLClampAdaptor<IDLUnsignedLongLong>>::ReturnType>(convert<IDLClampAdaptor<IDLUnsignedLongLong>>(*lexicalGlobalObject, argument1.value()));
    693700    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     701    throwScope.release();
    694702    impl.funcWithClamp(WTFMove(arg1), WTFMove(arg2));
    695703    return JSValue::encode(jsUndefined());
     
    713721    auto arg = convert<IDLClampAdaptor<IDLLong>>(*lexicalGlobalObject, argument0.value());
    714722    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
     723    throwScope.release();
    715724    impl.funcWithClampInTypedef(WTFMove(arg));
    716725    return JSValue::encode(jsUndefined());
     
    804813    UNUSED_PARAM(callFrame);
    805814    auto& impl = castedThis->wrapped();
     815    throwScope.release();
    806816    propagateException(*lexicalGlobalObject, throwScope, impl.methodWithException());
    807817    return JSValue::encode(jsUndefined());
Note: See TracChangeset for help on using the changeset viewer.