Generate Element casting helper functions
[WebKit.git] / Source / WebCore / bindings / scripts / test / JS / JSTestObj.cpp
1 /*
2     This file is part of the WebKit open source project.
3     This file has been generated by generate-bindings.pl. DO NOT MODIFY!
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20
21 #include "config.h"
22 #include "JSTestObj.h"
23
24 #include "CallbackFunction.h"
25 #include "DOMStringList.h"
26 #include "Dictionary.h"
27 #include "Document.h"
28 #include "ExceptionCode.h"
29 #include "Frame.h"
30 #include "HTMLNames.h"
31 #include "JSDOMBinding.h"
32 #include "JSDOMStringList.h"
33 #include "JSDocument.h"
34 #include "JSEventListener.h"
35 #include "JSNode.h"
36 #include "JSSVGDocument.h"
37 #include "JSSVGPoint.h"
38 #include "JSScriptProfile.h"
39 #include "JSTestCallback.h"
40 #include "JSTestNode.h"
41 #include "JSTestObj.h"
42 #include "JSTestSubObj.h"
43 #include "JSbool.h"
44 #include "SVGDocument.h"
45 #include "SVGPoint.h"
46 #include "SVGStaticPropertyTearOff.h"
47 #include "ScriptExecutionContext.h"
48 #include "ScriptProfile.h"
49 #include "SerializedScriptValue.h"
50 #include "Settings.h"
51 #include "TestObj.h"
52 #include "URL.h"
53 #include "bool.h"
54 #include <inspector/ScriptArguments.h>
55 #include <inspector/ScriptCallStackFactory.h>
56 #include <runtime/Error.h>
57 #include <runtime/JSArray.h>
58 #include <runtime/JSString.h>
59 #include <wtf/GetPtr.h>
60
61 #if ENABLE(Condition1)
62 #include "JSTestObjectA.h"
63 #endif
64
65 #if ENABLE(Condition1) && ENABLE(Condition2)
66 #include "JSTestObjectB.h"
67 #endif
68
69 #if ENABLE(Condition1) || ENABLE(Condition2)
70 #include "JSTestObjectC.h"
71 #endif
72
73 using namespace JSC;
74
75 namespace WebCore {
76
77 // Functions
78
79 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethod(JSC::ExecState*);
80 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethodWithArgs(JSC::ExecState*);
81 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionByteMethod(JSC::ExecState*);
82 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionByteMethodWithArgs(JSC::ExecState*);
83 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOctetMethod(JSC::ExecState*);
84 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOctetMethodWithArgs(JSC::ExecState*);
85 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionLongMethod(JSC::ExecState*);
86 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionLongMethodWithArgs(JSC::ExecState*);
87 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(JSC::ExecState*);
88 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(JSC::ExecState*);
89 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithSequenceArg(JSC::ExecState*);
90 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodReturningSequence(JSC::ExecState*);
91 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithEnumArg(JSC::ExecState*);
92 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(JSC::ExecState*);
93 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(JSC::ExecState*);
94 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(JSC::ExecState*);
95 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(JSC::ExecState*);
96 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(JSC::ExecState*);
97 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(JSC::ExecState*);
98 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(JSC::ExecState*);
99 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionRemoveEventListener(JSC::ExecState*);
100 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoid(JSC::ExecState*);
101 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObj(JSC::ExecState*);
102 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoidException(JSC::ExecState*);
103 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObjException(JSC::ExecState*);
104 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContext(JSC::ExecState*);
105 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptState(JSC::ExecState*);
106 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException(JSC::ExecState*);
107 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpaces(JSC::ExecState*);
108 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptArgumentsAndCallStack(JSC::ExecState*);
109 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalArg(JSC::ExecState*);
110 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg(JSC::ExecState*);
111 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs(JSC::ExecState*);
112 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalString(JSC::ExecState*);
113 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined(JSC::ExecState*);
114 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringIsNullString(JSC::ExecState*);
115 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(JSC::ExecState*);
116 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(JSC::ExecState*);
117 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(JSC::ExecState*);
118 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg(JSC::ExecState*);
119 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionStaticMethodWithCallbackArg(JSC::ExecState*);
120 #if ENABLE(Condition1)
121 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod1(JSC::ExecState*);
122 #endif
123 #if ENABLE(Condition1) && ENABLE(Condition2)
124 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod2(JSC::ExecState*);
125 #endif
126 #if ENABLE(Condition1) || ENABLE(Condition2)
127 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod3(JSC::ExecState*);
128 #endif
129 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod(JSC::ExecState*);
130 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionClassMethod(JSC::ExecState*);
131 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionClassMethodWithOptional(JSC::ExecState*);
132 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionClassMethod2(JSC::ExecState*);
133 #if ENABLE(Condition1)
134 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjConstructorFunctionOverloadedMethod1(JSC::ExecState*);
135 #endif
136 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethodWithClamp(JSC::ExecState*);
137 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence(JSC::ExecState*);
138 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStringArrayFunction(JSC::ExecState*);
139 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionDomStringListFunction(JSC::ExecState*);
140 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence(JSC::ExecState*);
141 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence2(JSC::ExecState*);
142 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionGetSVGDocument(JSC::ExecState*);
143 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert1(JSC::ExecState*);
144 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert2(JSC::ExecState*);
145 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert4(JSC::ExecState*);
146 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert5(JSC::ExecState*);
147 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMutablePointFunction(JSC::ExecState*);
148 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionImmutablePointFunction(JSC::ExecState*);
149 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOrange(JSC::ExecState*);
150 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunction(JSC::ExecState*);
151 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunctionWithSequence(JSC::ExecState*);
152 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunctionWithArray(JSC::ExecState*);
153 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicStringMethod(JSC::ExecState*);
154 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicDoubleMethod(JSC::ExecState*);
155 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicNodeMethod(JSC::ExecState*);
156 JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAny(JSC::ExecState*);
157
158 // Attributes
159
160 JSC::EncodedJSValue jsTestObjReadOnlyLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
161 JSC::EncodedJSValue jsTestObjReadOnlyStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
162 JSC::EncodedJSValue jsTestObjReadOnlyTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
163 JSC::EncodedJSValue jsTestObjConstructorStaticReadOnlyLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
164 JSC::EncodedJSValue jsTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
165 void setJSTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
166 JSC::EncodedJSValue jsTestObjConstructorTestSubObj(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
167 JSC::EncodedJSValue jsTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
168 void setJSTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
169 JSC::EncodedJSValue jsTestObjEnumAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
170 void setJSTestObjEnumAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
171 JSC::EncodedJSValue jsTestObjByteAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
172 void setJSTestObjByteAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
173 JSC::EncodedJSValue jsTestObjOctetAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
174 void setJSTestObjOctetAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
175 JSC::EncodedJSValue jsTestObjShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
176 void setJSTestObjShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
177 JSC::EncodedJSValue jsTestObjUnsignedShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
178 void setJSTestObjUnsignedShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
179 JSC::EncodedJSValue jsTestObjLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
180 void setJSTestObjLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
181 JSC::EncodedJSValue jsTestObjLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
182 void setJSTestObjLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
183 JSC::EncodedJSValue jsTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
184 void setJSTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
185 JSC::EncodedJSValue jsTestObjStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
186 void setJSTestObjStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
187 JSC::EncodedJSValue jsTestObjTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
188 void setJSTestObjTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
189 JSC::EncodedJSValue jsTestObjXMLObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
190 void setJSTestObjXMLObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
191 JSC::EncodedJSValue jsTestObjCreate(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
192 void setJSTestObjCreate(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
193 JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
194 void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
195 JSC::EncodedJSValue jsTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
196 void setJSTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
197 JSC::EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
198 void setJSTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
199 JSC::EncodedJSValue jsTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
200 void setJSTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
201 JSC::EncodedJSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
202 void setJSTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
203 JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
204 void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
205 JSC::EncodedJSValue jsTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
206 void setJSTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
207 JSC::EncodedJSValue jsTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
208 void setJSTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
209 JSC::EncodedJSValue jsTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
210 void setJSTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
211 JSC::EncodedJSValue jsTestObjTypedArrayAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
212 void setJSTestObjTypedArrayAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
213 JSC::EncodedJSValue jsTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
214 void setJSTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
215 JSC::EncodedJSValue jsTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
216 void setJSTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
217 JSC::EncodedJSValue jsTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
218 void setJSTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
219 JSC::EncodedJSValue jsTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
220 void setJSTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
221 JSC::EncodedJSValue jsTestObjCustomAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
222 void setJSTestObjCustomAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
223 JSC::EncodedJSValue jsTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
224 void setJSTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
225 JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
226 void setJSTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
227 JSC::EncodedJSValue jsTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
228 void setJSTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
229 JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
230 void setJSTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
231 JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
232 void setJSTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
233 JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
234 void setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
235 JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
236 void setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
237 JSC::EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
238 void setJSTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
239 #if ENABLE(Condition1)
240 JSC::EncodedJSValue jsTestObjConditionalAttr1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
241 void setJSTestObjConditionalAttr1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
242 #endif
243 #if ENABLE(Condition1) && ENABLE(Condition2)
244 JSC::EncodedJSValue jsTestObjConditionalAttr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
245 void setJSTestObjConditionalAttr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
246 #endif
247 #if ENABLE(Condition1) || ENABLE(Condition2)
248 JSC::EncodedJSValue jsTestObjConditionalAttr3(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
249 void setJSTestObjConditionalAttr3(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
250 #endif
251 #if ENABLE(Condition1)
252 JSC::EncodedJSValue jsTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
253 void setJSTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
254 #endif
255 #if ENABLE(Condition1) && ENABLE(Condition2)
256 JSC::EncodedJSValue jsTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
257 void setJSTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
258 #endif
259 #if ENABLE(Condition1) || ENABLE(Condition2)
260 JSC::EncodedJSValue jsTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
261 void setJSTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
262 #endif
263 JSC::EncodedJSValue jsTestObjCachedAttribute1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
264 JSC::EncodedJSValue jsTestObjCachedAttribute2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
265 JSC::EncodedJSValue jsTestObjAnyAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
266 void setJSTestObjAnyAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
267 JSC::EncodedJSValue jsTestObjContentDocument(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
268 JSC::EncodedJSValue jsTestObjMutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
269 void setJSTestObjMutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
270 JSC::EncodedJSValue jsTestObjImmutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
271 void setJSTestObjImmutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
272 JSC::EncodedJSValue jsTestObjStrawberry(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
273 void setJSTestObjStrawberry(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
274 JSC::EncodedJSValue jsTestObjStrictFloat(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
275 void setJSTestObjStrictFloat(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
276 JSC::EncodedJSValue jsTestObjDescription(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
277 JSC::EncodedJSValue jsTestObjId(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
278 void setJSTestObjId(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
279 JSC::EncodedJSValue jsTestObjHash(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
280 JSC::EncodedJSValue jsTestObjReplaceableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
281 void setJSTestObjReplaceableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
282 JSC::EncodedJSValue jsTestObjNullableDoubleAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
283 JSC::EncodedJSValue jsTestObjNullableLongAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
284 JSC::EncodedJSValue jsTestObjNullableBooleanAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
285 JSC::EncodedJSValue jsTestObjNullableStringAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
286 JSC::EncodedJSValue jsTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
287 void setJSTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
288 JSC::EncodedJSValue jsTestObjNullableStringValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
289 void setJSTestObjNullableStringValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
290 JSC::EncodedJSValue jsTestObjAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
291 JSC::EncodedJSValue jsTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
292 void setJSTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
293 JSC::EncodedJSValue jsTestObjConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
294
295 class JSTestObjPrototype : public JSC::JSNonFinalObject {
296 public:
297     typedef JSC::JSNonFinalObject Base;
298     static JSTestObjPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
299     {
300         JSTestObjPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestObjPrototype>(vm.heap)) JSTestObjPrototype(vm, globalObject, structure);
301         ptr->finishCreation(vm);
302         return ptr;
303     }
304
305     DECLARE_INFO;
306     static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
307     {
308         return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
309     }
310
311 private:
312     JSTestObjPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
313         : JSC::JSNonFinalObject(vm, structure)
314     {
315     }
316
317     void finishCreation(JSC::VM&);
318 };
319
320 class JSTestObjConstructor : public DOMConstructorObject {
321 private:
322     JSTestObjConstructor(JSC::Structure*, JSDOMGlobalObject*);
323     void finishCreation(JSC::VM&, JSDOMGlobalObject*);
324
325 public:
326     typedef DOMConstructorObject Base;
327     static JSTestObjConstructor* create(JSC::VM& vm, JSC::Structure* structure, JSDOMGlobalObject* globalObject)
328     {
329         JSTestObjConstructor* ptr = new (NotNull, JSC::allocateCell<JSTestObjConstructor>(vm.heap)) JSTestObjConstructor(structure, globalObject);
330         ptr->finishCreation(vm, globalObject);
331         return ptr;
332     }
333
334     DECLARE_INFO;
335     static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
336     {
337         return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
338     }
339 protected:
340     static JSC::EncodedJSValue JSC_HOST_CALL constructJSTestObj(JSC::ExecState*);
341     static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);
342 };
343
344 /* Hash table */
345
346 static const struct CompactHashIndex JSTestObjTableIndex[17] = {
347     { 5, -1 },
348     { -1, -1 },
349     { -1, -1 },
350     { -1, -1 },
351     { -1, -1 },
352     { -1, -1 },
353     { 4, -1 },
354     { -1, -1 },
355     { -1, -1 },
356     { 2, -1 },
357     { 0, 16 },
358     { -1, -1 },
359     { 1, -1 },
360     { -1, -1 },
361     { -1, -1 },
362     { -1, -1 },
363     { 3, -1 },
364 };
365
366
367 static const HashTableValue JSTestObjTableValues[] =
368 {
369     { "TestSubObjEnabledBySetting", DontEnum, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestSubObjEnabledBySettingConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTestSubObjEnabledBySettingConstructor) },
370     { "customAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCustomAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjCustomAttr) },
371 #if ENABLE(Condition1)
372     { "conditionalAttr4", DontEnum, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr4Constructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr4Constructor) },
373 #else
374     { 0, 0, NoIntrinsic, 0, 0 },
375 #endif
376 #if ENABLE(Condition1) && ENABLE(Condition2)
377     { "conditionalAttr5", DontEnum, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr5Constructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr5Constructor) },
378 #else
379     { 0, 0, NoIntrinsic, 0, 0 },
380 #endif
381 #if ENABLE(Condition1) || ENABLE(Condition2)
382     { "conditionalAttr6", DontEnum, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr6Constructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr6Constructor) },
383 #else
384     { 0, 0, NoIntrinsic, 0, 0 },
385 #endif
386     { "contentDocument", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjContentDocument), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
387 };
388
389 static const HashTable JSTestObjTable = { 6, 15, true, JSTestObjTableValues, 0, JSTestObjTableIndex };
390 /* Hash table for constructor */
391
392 static const HashTableValue JSTestObjConstructorTableValues[] =
393 {
394 #if ENABLE(Condition1)
395     { "CONDITIONAL_CONST", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
396 #else
397     { 0, 0, NoIntrinsic, 0, 0 },
398 #endif
399     { "CONST_VALUE_0", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
400     { "CONST_VALUE_1", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(1), (intptr_t) (0) },
401     { "CONST_VALUE_2", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(2), (intptr_t) (0) },
402     { "CONST_VALUE_4", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(4), (intptr_t) (0) },
403     { "CONST_VALUE_8", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(8), (intptr_t) (0) },
404     { "CONST_VALUE_9", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(-1), (intptr_t) (0) },
405     { "CONST_VALUE_11", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0xffffffff), (intptr_t) (0) },
406     { "CONST_VALUE_12", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0x01), (intptr_t) (0) },
407     { "CONST_VALUE_13", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0X20), (intptr_t) (0) },
408     { "CONST_VALUE_14", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0x1abc), (intptr_t) (0) },
409     { "CONST_JAVASCRIPT", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(15), (intptr_t) (0) },
410     { "readonly", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
411     { "staticReadOnlyLongAttr", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructorStaticReadOnlyLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
412     { "staticStringAttr", DontDelete, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructorStaticStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConstructorStaticStringAttr) },
413     { "TestSubObj", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructorTestSubObj), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
414     { "staticMethodWithCallbackAndOptionalArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg), (intptr_t) (0) },
415     { "staticMethodWithCallbackArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionStaticMethodWithCallbackArg), (intptr_t) (1) },
416     { "classMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionClassMethod), (intptr_t) (0) },
417     { "classMethodWithOptional", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionClassMethodWithOptional), (intptr_t) (0) },
418     { "classMethod2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionClassMethod2), (intptr_t) (1) },
419 #if ENABLE(Condition1)
420     { "overloadedMethod1", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionOverloadedMethod1), (intptr_t) (1) },
421 #else
422     { 0, 0, NoIntrinsic, 0, 0 },
423 #endif
424 };
425
426
427 #if ENABLE(Condition1)
428 COMPILE_ASSERT(0 == TestObj::CONDITIONAL_CONST, TestObjEnumCONDITIONAL_CONSTIsWrongUseDoNotCheckConstants);
429 #endif
430 COMPILE_ASSERT(0 == TestObj::CONST_VALUE_0, TestObjEnumCONST_VALUE_0IsWrongUseDoNotCheckConstants);
431 COMPILE_ASSERT(1 == TestObj::CONST_VALUE_1, TestObjEnumCONST_VALUE_1IsWrongUseDoNotCheckConstants);
432 COMPILE_ASSERT(2 == TestObj::CONST_VALUE_2, TestObjEnumCONST_VALUE_2IsWrongUseDoNotCheckConstants);
433 COMPILE_ASSERT(4 == TestObj::CONST_VALUE_4, TestObjEnumCONST_VALUE_4IsWrongUseDoNotCheckConstants);
434 COMPILE_ASSERT(8 == TestObj::CONST_VALUE_8, TestObjEnumCONST_VALUE_8IsWrongUseDoNotCheckConstants);
435 COMPILE_ASSERT(-1 == TestObj::CONST_VALUE_9, TestObjEnumCONST_VALUE_9IsWrongUseDoNotCheckConstants);
436 COMPILE_ASSERT(0xffffffff == TestObj::CONST_VALUE_11, TestObjEnumCONST_VALUE_11IsWrongUseDoNotCheckConstants);
437 COMPILE_ASSERT(0x01 == TestObj::CONST_VALUE_12, TestObjEnumCONST_VALUE_12IsWrongUseDoNotCheckConstants);
438 COMPILE_ASSERT(0X20 == TestObj::CONST_VALUE_13, TestObjEnumCONST_VALUE_13IsWrongUseDoNotCheckConstants);
439 COMPILE_ASSERT(0x1abc == TestObj::CONST_VALUE_14, TestObjEnumCONST_VALUE_14IsWrongUseDoNotCheckConstants);
440 COMPILE_ASSERT(15 == TestObj::CONST_IMPL, TestObjEnumCONST_IMPLIsWrongUseDoNotCheckConstants);
441 COMPILE_ASSERT(0 == TestObj::readonly, TestObjEnumreadonlyIsWrongUseDoNotCheckConstants);
442
443 EncodedJSValue JSC_HOST_CALL JSTestObjConstructor::constructJSTestObj(ExecState* exec)
444 {
445     JSTestObjConstructor* castedThis = jsCast<JSTestObjConstructor*>(exec->callee());
446     if (exec->argumentCount() < 1)
447         return throwVMError(exec, createNotEnoughArgumentsError(exec));
448     if (!exec->argument(0).isFunction())
449         return throwArgumentMustBeFunctionError(*exec, 0, "testCallback", "TestObj", nullptr);
450     RefPtr<TestCallback> testCallback = JSTestCallback::create(asObject(exec->uncheckedArgument(0)), castedThis->globalObject());
451     RefPtr<TestObj> object = TestObj::create(testCallback);
452     return JSValue::encode(asObject(toJS(exec, castedThis->globalObject(), object.get())));
453 }
454
455 const ClassInfo JSTestObjConstructor::s_info = { "TestObjectConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestObjConstructor) };
456
457 JSTestObjConstructor::JSTestObjConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
458     : DOMConstructorObject(structure, globalObject)
459 {
460 }
461
462 void JSTestObjConstructor::finishCreation(VM& vm, JSDOMGlobalObject* globalObject)
463 {
464     Base::finishCreation(vm);
465     ASSERT(inherits(info()));
466     putDirect(vm, vm.propertyNames->prototype, JSTestObj::getPrototype(vm, globalObject), DontDelete | ReadOnly);
467     putDirect(vm, vm.propertyNames->length, jsNumber(1), ReadOnly | DontDelete | DontEnum);
468     reifyStaticProperties(vm, JSTestObjConstructorTableValues, *this);
469 }
470
471 ConstructType JSTestObjConstructor::getConstructData(JSCell*, ConstructData& constructData)
472 {
473     constructData.native.function = constructJSTestObj;
474     return ConstructTypeHost;
475 }
476
477 /* Hash table for prototype */
478
479 static const HashTableValue JSTestObjPrototypeTableValues[] =
480 {
481     { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
482     { "readOnlyLongAttr", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
483     { "readOnlyStringAttr", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
484     { "readOnlyTestObjAttr", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyTestObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
485     { "enumAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjEnumAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjEnumAttr) },
486     { "byteAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjByteAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjByteAttr) },
487     { "octetAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjOctetAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjOctetAttr) },
488     { "shortAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjShortAttr) },
489     { "unsignedShortAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedShortAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUnsignedShortAttr) },
490     { "longAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjLongAttr) },
491     { "longLongAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjLongLongAttr) },
492     { "unsignedLongLongAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjUnsignedLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjUnsignedLongLongAttr) },
493     { "stringAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttr) },
494     { "testObjAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTestObjAttr) },
495     { "XMLObjAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjXMLObjAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjXMLObjAttr) },
496     { "create", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCreate), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjCreate) },
497     { "reflectedStringAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedStringAttr) },
498     { "reflectedIntegralAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedIntegralAttr) },
499     { "reflectedUnsignedIntegralAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedUnsignedIntegralAttr) },
500     { "reflectedBooleanAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedBooleanAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedBooleanAttr) },
501     { "reflectedURLAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedURLAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedURLAttr) },
502     { "reflectedStringAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedStringAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedStringAttr) },
503     { "reflectedCustomIntegralAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomIntegralAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomIntegralAttr) },
504     { "reflectedCustomBooleanAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomBooleanAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomBooleanAttr) },
505     { "reflectedCustomURLAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReflectedCustomURLAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReflectedCustomURLAttr) },
506     { "typedArrayAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTypedArrayAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTypedArrayAttr) },
507     { "attrWithGetterException", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttrWithGetterException) },
508     { "attrWithSetterException", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttrWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttrWithSetterException) },
509     { "stringAttrWithGetterException", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithGetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrWithGetterException) },
510     { "stringAttrWithSetterException", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStringAttrWithSetterException), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStringAttrWithSetterException) },
511     { "withScriptStateAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptStateAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptStateAttribute) },
512     { "withScriptExecutionContextAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAttribute) },
513     { "withScriptStateAttributeRaises", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptStateAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptStateAttributeRaises) },
514     { "withScriptExecutionContextAttributeRaises", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAttributeRaises) },
515     { "withScriptExecutionContextAndScriptStateAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateAttribute) },
516     { "withScriptExecutionContextAndScriptStateAttributeRaises", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises) },
517     { "withScriptExecutionContextAndScriptStateWithSpacesAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute) },
518     { "withScriptArgumentsAndCallStackAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptArgumentsAndCallStackAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptArgumentsAndCallStackAttribute) },
519 #if ENABLE(Condition1)
520     { "conditionalAttr1", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr1) },
521 #else
522     { 0, 0, NoIntrinsic, 0, 0 },
523 #endif
524 #if ENABLE(Condition1) && ENABLE(Condition2)
525     { "conditionalAttr2", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr2) },
526 #else
527     { 0, 0, NoIntrinsic, 0, 0 },
528 #endif
529 #if ENABLE(Condition1) || ENABLE(Condition2)
530     { "conditionalAttr3", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr3) },
531 #else
532     { 0, 0, NoIntrinsic, 0, 0 },
533 #endif
534     { "cachedAttribute1", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
535     { "cachedAttribute2", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
536     { "anyAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAnyAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAnyAttribute) },
537     { "mutablePoint", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjMutablePoint), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjMutablePoint) },
538     { "immutablePoint", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjImmutablePoint), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjImmutablePoint) },
539     { "strawberry", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStrawberry), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStrawberry) },
540     { "strictFloat", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjStrictFloat), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjStrictFloat) },
541     { "description", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDescription), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
542     { "id", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjId), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjId) },
543     { "hash", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjHash), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
544     { "replaceableAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReplaceableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjReplaceableAttribute) },
545     { "nullableDoubleAttribute", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableDoubleAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
546     { "nullableLongAttribute", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableLongAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
547     { "nullableBooleanAttribute", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableBooleanAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
548     { "nullableStringAttribute", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
549     { "nullableLongSettableAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableLongSettableAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableLongSettableAttribute) },
550     { "nullableStringValue", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjNullableStringValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjNullableStringValue) },
551     { "attribute", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
552     { "attributeWithReservedEnumType", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithReservedEnumType) },
553 #if ENABLE(Condition1)
554     { "CONDITIONAL_CONST", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
555 #else
556     { 0, 0, NoIntrinsic, 0, 0 },
557 #endif
558     { "CONST_VALUE_0", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
559     { "CONST_VALUE_1", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(1), (intptr_t) (0) },
560     { "CONST_VALUE_2", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(2), (intptr_t) (0) },
561     { "CONST_VALUE_4", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(4), (intptr_t) (0) },
562     { "CONST_VALUE_8", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(8), (intptr_t) (0) },
563     { "CONST_VALUE_9", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(-1), (intptr_t) (0) },
564     { "CONST_VALUE_11", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0xffffffff), (intptr_t) (0) },
565     { "CONST_VALUE_12", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0x01), (intptr_t) (0) },
566     { "CONST_VALUE_13", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0X20), (intptr_t) (0) },
567     { "CONST_VALUE_14", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0x1abc), (intptr_t) (0) },
568     { "CONST_JAVASCRIPT", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(15), (intptr_t) (0) },
569     { "readonly", DontDelete | ReadOnly | ConstantInteger, NoIntrinsic, (intptr_t)(0), (intptr_t) (0) },
570     { "voidMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVoidMethod), (intptr_t) (0) },
571     { "voidMethodWithArgs", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVoidMethodWithArgs), (intptr_t) (3) },
572     { "byteMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionByteMethod), (intptr_t) (0) },
573     { "byteMethodWithArgs", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionByteMethodWithArgs), (intptr_t) (3) },
574     { "octetMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOctetMethod), (intptr_t) (0) },
575     { "octetMethodWithArgs", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOctetMethodWithArgs), (intptr_t) (3) },
576     { "longMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionLongMethod), (intptr_t) (0) },
577     { "longMethodWithArgs", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionLongMethodWithArgs), (intptr_t) (3) },
578     { "objMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionObjMethod), (intptr_t) (0) },
579     { "objMethodWithArgs", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionObjMethodWithArgs), (intptr_t) (3) },
580     { "methodWithSequenceArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithSequenceArg), (intptr_t) (1) },
581     { "methodReturningSequence", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodReturningSequence), (intptr_t) (1) },
582     { "methodWithEnumArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithEnumArg), (intptr_t) (1) },
583     { "methodThatRequiresAllArgsAndThrows", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows), (intptr_t) (2) },
584     { "serializedValue", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionSerializedValue), (intptr_t) (1) },
585     { "optionsObject", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOptionsObject), (intptr_t) (1) },
586     { "methodWithException", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithException), (intptr_t) (0) },
587     { "customMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethod), (intptr_t) (0) },
588     { "customMethodWithArgs", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionCustomMethodWithArgs), (intptr_t) (3) },
589     { "addEventListener", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionAddEventListener), (intptr_t) (2) },
590     { "removeEventListener", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionRemoveEventListener), (intptr_t) (2) },
591     { "withScriptStateVoid", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateVoid), (intptr_t) (0) },
592     { "withScriptStateObj", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateObj), (intptr_t) (0) },
593     { "withScriptStateVoidException", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateVoidException), (intptr_t) (0) },
594     { "withScriptStateObjException", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptStateObjException), (intptr_t) (0) },
595     { "withScriptExecutionContext", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptExecutionContext), (intptr_t) (0) },
596     { "withScriptExecutionContextAndScriptState", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptState), (intptr_t) (0) },
597     { "withScriptExecutionContextAndScriptStateObjException", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException), (intptr_t) (0) },
598     { "withScriptExecutionContextAndScriptStateWithSpaces", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpaces), (intptr_t) (0) },
599     { "withScriptArgumentsAndCallStack", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionWithScriptArgumentsAndCallStack), (intptr_t) (0) },
600     { "methodWithOptionalArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithOptionalArg), (intptr_t) (0) },
601     { "methodWithNonOptionalArgAndOptionalArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg), (intptr_t) (1) },
602     { "methodWithNonOptionalArgAndTwoOptionalArgs", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs), (intptr_t) (1) },
603     { "methodWithOptionalString", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithOptionalString), (intptr_t) (0) },
604     { "methodWithOptionalStringIsUndefined", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined), (intptr_t) (0) },
605     { "methodWithOptionalStringIsNullString", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithOptionalStringIsNullString), (intptr_t) (0) },
606     { "methodWithCallbackArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackArg), (intptr_t) (1) },
607     { "methodWithNonCallbackArgAndCallbackArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg), (intptr_t) (2) },
608     { "methodWithCallbackAndOptionalArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg), (intptr_t) (0) },
609 #if ENABLE(Condition1)
610     { "conditionalMethod1", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConditionalMethod1), (intptr_t) (0) },
611 #else
612     { 0, 0, NoIntrinsic, 0, 0 },
613 #endif
614 #if ENABLE(Condition1) && ENABLE(Condition2)
615     { "conditionalMethod2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConditionalMethod2), (intptr_t) (0) },
616 #else
617     { 0, 0, NoIntrinsic, 0, 0 },
618 #endif
619 #if ENABLE(Condition1) || ENABLE(Condition2)
620     { "conditionalMethod3", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConditionalMethod3), (intptr_t) (0) },
621 #else
622     { 0, 0, NoIntrinsic, 0, 0 },
623 #endif
624     { "overloadedMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOverloadedMethod), (intptr_t) (2) },
625     { "classMethodWithClamp", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionClassMethodWithClamp), (intptr_t) (2) },
626     { "methodWithUnsignedLongSequence", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence), (intptr_t) (1) },
627     { "stringArrayFunction", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionStringArrayFunction), (intptr_t) (1) },
628     { "domStringListFunction", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionDomStringListFunction), (intptr_t) (1) },
629     { "methodWithAndWithoutNullableSequence", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence), (intptr_t) (2) },
630     { "methodWithAndWithoutNullableSequence2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence2), (intptr_t) (2) },
631     { "getSVGDocument", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionGetSVGDocument), (intptr_t) (0) },
632     { "convert1", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConvert1), (intptr_t) (1) },
633     { "convert2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConvert2), (intptr_t) (1) },
634     { "convert4", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConvert4), (intptr_t) (1) },
635     { "convert5", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConvert5), (intptr_t) (1) },
636     { "mutablePointFunction", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMutablePointFunction), (intptr_t) (0) },
637     { "immutablePointFunction", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionImmutablePointFunction), (intptr_t) (0) },
638     { "orange", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOrange), (intptr_t) (0) },
639     { "strictFunction", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionStrictFunction), (intptr_t) (3) },
640     { "strictFunctionWithSequence", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionStrictFunctionWithSequence), (intptr_t) (2) },
641     { "strictFunctionWithArray", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionStrictFunctionWithArray), (intptr_t) (2) },
642     { "variadicStringMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVariadicStringMethod), (intptr_t) (2) },
643     { "variadicDoubleMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVariadicDoubleMethod), (intptr_t) (2) },
644     { "variadicNodeMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVariadicNodeMethod), (intptr_t) (2) },
645     { "any", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionAny), (intptr_t) (2) },
646 };
647
648 WEBCORE_EXPORT const ClassInfo JSTestObjPrototype::s_info = { "TestObjectPrototype", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestObjPrototype) };
649
650 void JSTestObjPrototype::finishCreation(VM& vm)
651 {
652     Base::finishCreation(vm);
653     reifyStaticProperties(vm, JSTestObjPrototypeTableValues, *this);
654 }
655
656 WEBCORE_EXPORT const ClassInfo JSTestObj::s_info = { "TestObject", &Base::s_info, &JSTestObjTable, CREATE_METHOD_TABLE(JSTestObj) };
657
658 JSTestObj::JSTestObj(Structure* structure, JSDOMGlobalObject* globalObject, PassRefPtr<TestObj> impl)
659     : JSDOMWrapper(structure, globalObject)
660     , m_impl(impl.leakRef())
661 {
662 }
663
664 JSObject* JSTestObj::createPrototype(VM& vm, JSGlobalObject* globalObject)
665 {
666     return JSTestObjPrototype::create(vm, globalObject, JSTestObjPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));
667 }
668
669 JSObject* JSTestObj::getPrototype(VM& vm, JSGlobalObject* globalObject)
670 {
671     return getDOMPrototype<JSTestObj>(vm, globalObject);
672 }
673
674 void JSTestObj::destroy(JSC::JSCell* cell)
675 {
676     JSTestObj* thisObject = static_cast<JSTestObj*>(cell);
677     thisObject->JSTestObj::~JSTestObj();
678 }
679
680 JSTestObj::~JSTestObj()
681 {
682     releaseImplIfNotNull();
683 }
684
685 bool JSTestObj::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot& slot)
686 {
687     JSTestObj* thisObject = jsCast<JSTestObj*>(object);
688     ASSERT_GC_OBJECT_INHERITS(thisObject, info());
689     return getStaticValueSlot<JSTestObj, Base>(exec, JSTestObjTable, thisObject, propertyName, slot);
690 }
691
692 EncodedJSValue jsTestObjReadOnlyLongAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
693 {
694     UNUSED_PARAM(exec);
695     UNUSED_PARAM(slotBase);
696     UNUSED_PARAM(thisValue);
697     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
698     if (UNLIKELY(!castedThis)) {
699         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
700             return reportDeprecatedGetterError(*exec, "TestObj", "readOnlyLongAttr");
701         return throwGetterTypeError(*exec, "TestObj", "readOnlyLongAttr");
702     }
703     TestObj& impl = castedThis->impl();
704     JSValue result = jsNumber(impl.readOnlyLongAttr());
705     return JSValue::encode(result);
706 }
707
708
709 EncodedJSValue jsTestObjReadOnlyStringAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
710 {
711     UNUSED_PARAM(exec);
712     UNUSED_PARAM(slotBase);
713     UNUSED_PARAM(thisValue);
714     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
715     if (UNLIKELY(!castedThis)) {
716         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
717             return reportDeprecatedGetterError(*exec, "TestObj", "readOnlyStringAttr");
718         return throwGetterTypeError(*exec, "TestObj", "readOnlyStringAttr");
719     }
720     TestObj& impl = castedThis->impl();
721     JSValue result = jsStringWithCache(exec, impl.readOnlyStringAttr());
722     return JSValue::encode(result);
723 }
724
725
726 EncodedJSValue jsTestObjReadOnlyTestObjAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
727 {
728     UNUSED_PARAM(exec);
729     UNUSED_PARAM(slotBase);
730     UNUSED_PARAM(thisValue);
731     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
732     if (UNLIKELY(!castedThis)) {
733         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
734             return reportDeprecatedGetterError(*exec, "TestObj", "readOnlyTestObjAttr");
735         return throwGetterTypeError(*exec, "TestObj", "readOnlyTestObjAttr");
736     }
737     TestObj& impl = castedThis->impl();
738     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.readOnlyTestObjAttr()));
739     return JSValue::encode(result);
740 }
741
742
743 EncodedJSValue jsTestObjConstructorStaticReadOnlyLongAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
744 {
745     UNUSED_PARAM(exec);
746     UNUSED_PARAM(slotBase);
747     UNUSED_PARAM(thisValue);
748     JSValue result = jsNumber(TestObj::staticReadOnlyLongAttr());
749     return JSValue::encode(result);
750 }
751
752
753 EncodedJSValue jsTestObjConstructorStaticStringAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
754 {
755     UNUSED_PARAM(exec);
756     UNUSED_PARAM(slotBase);
757     UNUSED_PARAM(thisValue);
758     JSValue result = jsStringWithCache(exec, TestObj::staticStringAttr());
759     return JSValue::encode(result);
760 }
761
762
763 EncodedJSValue jsTestObjConstructorTestSubObj(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
764 {
765     UNUSED_PARAM(exec);
766     UNUSED_PARAM(slotBase);
767     UNUSED_PARAM(thisValue);
768     JSTestObj* castedThis = jsCast<JSTestObj*>(slotBase);
769     return JSValue::encode(JSTestSubObj::getConstructor(exec->vm(), castedThis->globalObject()));
770 }
771
772
773 EncodedJSValue jsTestObjTestSubObjEnabledBySettingConstructor(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
774 {
775     UNUSED_PARAM(exec);
776     UNUSED_PARAM(slotBase);
777     UNUSED_PARAM(thisValue);
778     JSTestObj* castedThis = jsCast<JSTestObj*>(slotBase);
779     if (!castedThis->impl().frame())
780         return JSValue::encode(jsUndefined());
781     Settings& settings = castedThis->impl().frame()->settings();
782     if (!settings.testSettingEnabled())
783         return JSValue::encode(jsUndefined());
784     return JSValue::encode(JSTestSubObj::getConstructor(exec->vm(), castedThis->globalObject()));
785 }
786
787
788 EncodedJSValue jsTestObjEnumAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
789 {
790     UNUSED_PARAM(exec);
791     UNUSED_PARAM(slotBase);
792     UNUSED_PARAM(thisValue);
793     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
794     if (UNLIKELY(!castedThis)) {
795         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
796             return reportDeprecatedGetterError(*exec, "TestObj", "enumAttr");
797         return throwGetterTypeError(*exec, "TestObj", "enumAttr");
798     }
799     TestObj& impl = castedThis->impl();
800     JSValue result = jsStringWithCache(exec, impl.enumAttr());
801     return JSValue::encode(result);
802 }
803
804
805 EncodedJSValue jsTestObjByteAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
806 {
807     UNUSED_PARAM(exec);
808     UNUSED_PARAM(slotBase);
809     UNUSED_PARAM(thisValue);
810     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
811     if (UNLIKELY(!castedThis)) {
812         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
813             return reportDeprecatedGetterError(*exec, "TestObj", "byteAttr");
814         return throwGetterTypeError(*exec, "TestObj", "byteAttr");
815     }
816     TestObj& impl = castedThis->impl();
817     JSValue result = jsNumber(impl.byteAttr());
818     return JSValue::encode(result);
819 }
820
821
822 EncodedJSValue jsTestObjOctetAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
823 {
824     UNUSED_PARAM(exec);
825     UNUSED_PARAM(slotBase);
826     UNUSED_PARAM(thisValue);
827     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
828     if (UNLIKELY(!castedThis)) {
829         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
830             return reportDeprecatedGetterError(*exec, "TestObj", "octetAttr");
831         return throwGetterTypeError(*exec, "TestObj", "octetAttr");
832     }
833     TestObj& impl = castedThis->impl();
834     JSValue result = jsNumber(impl.octetAttr());
835     return JSValue::encode(result);
836 }
837
838
839 EncodedJSValue jsTestObjShortAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
840 {
841     UNUSED_PARAM(exec);
842     UNUSED_PARAM(slotBase);
843     UNUSED_PARAM(thisValue);
844     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
845     if (UNLIKELY(!castedThis)) {
846         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
847             return reportDeprecatedGetterError(*exec, "TestObj", "shortAttr");
848         return throwGetterTypeError(*exec, "TestObj", "shortAttr");
849     }
850     TestObj& impl = castedThis->impl();
851     JSValue result = jsNumber(impl.shortAttr());
852     return JSValue::encode(result);
853 }
854
855
856 EncodedJSValue jsTestObjUnsignedShortAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
857 {
858     UNUSED_PARAM(exec);
859     UNUSED_PARAM(slotBase);
860     UNUSED_PARAM(thisValue);
861     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
862     if (UNLIKELY(!castedThis)) {
863         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
864             return reportDeprecatedGetterError(*exec, "TestObj", "unsignedShortAttr");
865         return throwGetterTypeError(*exec, "TestObj", "unsignedShortAttr");
866     }
867     TestObj& impl = castedThis->impl();
868     JSValue result = jsNumber(impl.unsignedShortAttr());
869     return JSValue::encode(result);
870 }
871
872
873 EncodedJSValue jsTestObjLongAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
874 {
875     UNUSED_PARAM(exec);
876     UNUSED_PARAM(slotBase);
877     UNUSED_PARAM(thisValue);
878     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
879     if (UNLIKELY(!castedThis)) {
880         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
881             return reportDeprecatedGetterError(*exec, "TestObj", "longAttr");
882         return throwGetterTypeError(*exec, "TestObj", "longAttr");
883     }
884     TestObj& impl = castedThis->impl();
885     JSValue result = jsNumber(impl.longAttr());
886     return JSValue::encode(result);
887 }
888
889
890 EncodedJSValue jsTestObjLongLongAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
891 {
892     UNUSED_PARAM(exec);
893     UNUSED_PARAM(slotBase);
894     UNUSED_PARAM(thisValue);
895     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
896     if (UNLIKELY(!castedThis)) {
897         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
898             return reportDeprecatedGetterError(*exec, "TestObj", "longLongAttr");
899         return throwGetterTypeError(*exec, "TestObj", "longLongAttr");
900     }
901     TestObj& impl = castedThis->impl();
902     JSValue result = jsNumber(impl.longLongAttr());
903     return JSValue::encode(result);
904 }
905
906
907 EncodedJSValue jsTestObjUnsignedLongLongAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
908 {
909     UNUSED_PARAM(exec);
910     UNUSED_PARAM(slotBase);
911     UNUSED_PARAM(thisValue);
912     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
913     if (UNLIKELY(!castedThis)) {
914         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
915             return reportDeprecatedGetterError(*exec, "TestObj", "unsignedLongLongAttr");
916         return throwGetterTypeError(*exec, "TestObj", "unsignedLongLongAttr");
917     }
918     TestObj& impl = castedThis->impl();
919     JSValue result = jsNumber(impl.unsignedLongLongAttr());
920     return JSValue::encode(result);
921 }
922
923
924 EncodedJSValue jsTestObjStringAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
925 {
926     UNUSED_PARAM(exec);
927     UNUSED_PARAM(slotBase);
928     UNUSED_PARAM(thisValue);
929     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
930     if (UNLIKELY(!castedThis)) {
931         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
932             return reportDeprecatedGetterError(*exec, "TestObj", "stringAttr");
933         return throwGetterTypeError(*exec, "TestObj", "stringAttr");
934     }
935     TestObj& impl = castedThis->impl();
936     JSValue result = jsStringWithCache(exec, impl.stringAttr());
937     return JSValue::encode(result);
938 }
939
940
941 EncodedJSValue jsTestObjTestObjAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
942 {
943     UNUSED_PARAM(exec);
944     UNUSED_PARAM(slotBase);
945     UNUSED_PARAM(thisValue);
946     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
947     if (UNLIKELY(!castedThis)) {
948         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
949             return reportDeprecatedGetterError(*exec, "TestObj", "testObjAttr");
950         return throwGetterTypeError(*exec, "TestObj", "testObjAttr");
951     }
952     TestObj& impl = castedThis->impl();
953     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.testObjAttr()));
954     return JSValue::encode(result);
955 }
956
957
958 EncodedJSValue jsTestObjXMLObjAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
959 {
960     UNUSED_PARAM(exec);
961     UNUSED_PARAM(slotBase);
962     UNUSED_PARAM(thisValue);
963     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
964     if (UNLIKELY(!castedThis)) {
965         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
966             return reportDeprecatedGetterError(*exec, "TestObj", "XMLObjAttr");
967         return throwGetterTypeError(*exec, "TestObj", "XMLObjAttr");
968     }
969     TestObj& impl = castedThis->impl();
970     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.xmlObjAttr()));
971     return JSValue::encode(result);
972 }
973
974
975 EncodedJSValue jsTestObjCreate(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
976 {
977     UNUSED_PARAM(exec);
978     UNUSED_PARAM(slotBase);
979     UNUSED_PARAM(thisValue);
980     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
981     if (UNLIKELY(!castedThis)) {
982         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
983             return reportDeprecatedGetterError(*exec, "TestObj", "create");
984         return throwGetterTypeError(*exec, "TestObj", "create");
985     }
986     TestObj& impl = castedThis->impl();
987     JSValue result = jsBoolean(impl.isCreate());
988     return JSValue::encode(result);
989 }
990
991
992 EncodedJSValue jsTestObjReflectedStringAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
993 {
994     UNUSED_PARAM(exec);
995     UNUSED_PARAM(slotBase);
996     UNUSED_PARAM(thisValue);
997     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
998     if (UNLIKELY(!castedThis)) {
999         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1000             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedStringAttr");
1001         return throwGetterTypeError(*exec, "TestObj", "reflectedStringAttr");
1002     }
1003     TestObj& impl = castedThis->impl();
1004     JSValue result = jsStringWithCache(exec, impl.fastGetAttribute(WebCore::HTMLNames::reflectedstringattrAttr));
1005     return JSValue::encode(result);
1006 }
1007
1008
1009 EncodedJSValue jsTestObjReflectedIntegralAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1010 {
1011     UNUSED_PARAM(exec);
1012     UNUSED_PARAM(slotBase);
1013     UNUSED_PARAM(thisValue);
1014     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1015     if (UNLIKELY(!castedThis)) {
1016         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1017             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedIntegralAttr");
1018         return throwGetterTypeError(*exec, "TestObj", "reflectedIntegralAttr");
1019     }
1020     TestObj& impl = castedThis->impl();
1021     JSValue result = jsNumber(impl.getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr));
1022     return JSValue::encode(result);
1023 }
1024
1025
1026 EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1027 {
1028     UNUSED_PARAM(exec);
1029     UNUSED_PARAM(slotBase);
1030     UNUSED_PARAM(thisValue);
1031     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1032     if (UNLIKELY(!castedThis)) {
1033         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1034             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedUnsignedIntegralAttr");
1035         return throwGetterTypeError(*exec, "TestObj", "reflectedUnsignedIntegralAttr");
1036     }
1037     TestObj& impl = castedThis->impl();
1038     JSValue result = jsNumber(std::max(0, impl.getIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr)));
1039     return JSValue::encode(result);
1040 }
1041
1042
1043 EncodedJSValue jsTestObjReflectedBooleanAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1044 {
1045     UNUSED_PARAM(exec);
1046     UNUSED_PARAM(slotBase);
1047     UNUSED_PARAM(thisValue);
1048     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1049     if (UNLIKELY(!castedThis)) {
1050         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1051             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedBooleanAttr");
1052         return throwGetterTypeError(*exec, "TestObj", "reflectedBooleanAttr");
1053     }
1054     TestObj& impl = castedThis->impl();
1055     JSValue result = jsBoolean(impl.fastHasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr));
1056     return JSValue::encode(result);
1057 }
1058
1059
1060 EncodedJSValue jsTestObjReflectedURLAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1061 {
1062     UNUSED_PARAM(exec);
1063     UNUSED_PARAM(slotBase);
1064     UNUSED_PARAM(thisValue);
1065     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1066     if (UNLIKELY(!castedThis)) {
1067         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1068             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedURLAttr");
1069         return throwGetterTypeError(*exec, "TestObj", "reflectedURLAttr");
1070     }
1071     TestObj& impl = castedThis->impl();
1072     JSValue result = jsStringWithCache(exec, impl.getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr));
1073     return JSValue::encode(result);
1074 }
1075
1076
1077 EncodedJSValue jsTestObjReflectedStringAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1078 {
1079     UNUSED_PARAM(exec);
1080     UNUSED_PARAM(slotBase);
1081     UNUSED_PARAM(thisValue);
1082     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1083     if (UNLIKELY(!castedThis)) {
1084         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1085             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedStringAttr");
1086         return throwGetterTypeError(*exec, "TestObj", "reflectedStringAttr");
1087     }
1088     TestObj& impl = castedThis->impl();
1089     JSValue result = jsStringWithCache(exec, impl.fastGetAttribute(WebCore::HTMLNames::customContentStringAttrAttr));
1090     return JSValue::encode(result);
1091 }
1092
1093
1094 EncodedJSValue jsTestObjReflectedCustomIntegralAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1095 {
1096     UNUSED_PARAM(exec);
1097     UNUSED_PARAM(slotBase);
1098     UNUSED_PARAM(thisValue);
1099     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1100     if (UNLIKELY(!castedThis)) {
1101         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1102             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedCustomIntegralAttr");
1103         return throwGetterTypeError(*exec, "TestObj", "reflectedCustomIntegralAttr");
1104     }
1105     TestObj& impl = castedThis->impl();
1106     JSValue result = jsNumber(impl.getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr));
1107     return JSValue::encode(result);
1108 }
1109
1110
1111 EncodedJSValue jsTestObjReflectedCustomBooleanAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1112 {
1113     UNUSED_PARAM(exec);
1114     UNUSED_PARAM(slotBase);
1115     UNUSED_PARAM(thisValue);
1116     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1117     if (UNLIKELY(!castedThis)) {
1118         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1119             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedCustomBooleanAttr");
1120         return throwGetterTypeError(*exec, "TestObj", "reflectedCustomBooleanAttr");
1121     }
1122     TestObj& impl = castedThis->impl();
1123     JSValue result = jsBoolean(impl.fastHasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr));
1124     return JSValue::encode(result);
1125 }
1126
1127
1128 EncodedJSValue jsTestObjReflectedCustomURLAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1129 {
1130     UNUSED_PARAM(exec);
1131     UNUSED_PARAM(slotBase);
1132     UNUSED_PARAM(thisValue);
1133     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1134     if (UNLIKELY(!castedThis)) {
1135         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1136             return reportDeprecatedGetterError(*exec, "TestObj", "reflectedCustomURLAttr");
1137         return throwGetterTypeError(*exec, "TestObj", "reflectedCustomURLAttr");
1138     }
1139     TestObj& impl = castedThis->impl();
1140     JSValue result = jsStringWithCache(exec, impl.getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr));
1141     return JSValue::encode(result);
1142 }
1143
1144
1145 EncodedJSValue jsTestObjTypedArrayAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1146 {
1147     UNUSED_PARAM(exec);
1148     UNUSED_PARAM(slotBase);
1149     UNUSED_PARAM(thisValue);
1150     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1151     if (UNLIKELY(!castedThis)) {
1152         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1153             return reportDeprecatedGetterError(*exec, "TestObj", "typedArrayAttr");
1154         return throwGetterTypeError(*exec, "TestObj", "typedArrayAttr");
1155     }
1156     TestObj& impl = castedThis->impl();
1157     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.typedArrayAttr()));
1158     return JSValue::encode(result);
1159 }
1160
1161
1162 EncodedJSValue jsTestObjAttrWithGetterException(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1163 {
1164     UNUSED_PARAM(exec);
1165     UNUSED_PARAM(slotBase);
1166     UNUSED_PARAM(thisValue);
1167     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1168     if (UNLIKELY(!castedThis)) {
1169         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1170             return reportDeprecatedGetterError(*exec, "TestObj", "attrWithGetterException");
1171         return throwGetterTypeError(*exec, "TestObj", "attrWithGetterException");
1172     }
1173     ExceptionCode ec = 0;
1174     TestObj& impl = castedThis->impl();
1175     JSValue result = jsNumber(impl.attrWithGetterException(ec));
1176     setDOMException(exec, ec);
1177     return JSValue::encode(result);
1178 }
1179
1180
1181 EncodedJSValue jsTestObjAttrWithSetterException(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1182 {
1183     UNUSED_PARAM(exec);
1184     UNUSED_PARAM(slotBase);
1185     UNUSED_PARAM(thisValue);
1186     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1187     if (UNLIKELY(!castedThis)) {
1188         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1189             return reportDeprecatedGetterError(*exec, "TestObj", "attrWithSetterException");
1190         return throwGetterTypeError(*exec, "TestObj", "attrWithSetterException");
1191     }
1192     TestObj& impl = castedThis->impl();
1193     JSValue result = jsNumber(impl.attrWithSetterException());
1194     return JSValue::encode(result);
1195 }
1196
1197
1198 EncodedJSValue jsTestObjStringAttrWithGetterException(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1199 {
1200     UNUSED_PARAM(exec);
1201     UNUSED_PARAM(slotBase);
1202     UNUSED_PARAM(thisValue);
1203     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1204     if (UNLIKELY(!castedThis)) {
1205         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1206             return reportDeprecatedGetterError(*exec, "TestObj", "stringAttrWithGetterException");
1207         return throwGetterTypeError(*exec, "TestObj", "stringAttrWithGetterException");
1208     }
1209     ExceptionCode ec = 0;
1210     TestObj& impl = castedThis->impl();
1211     JSValue result = jsStringWithCache(exec, impl.stringAttrWithGetterException(ec));
1212     setDOMException(exec, ec);
1213     return JSValue::encode(result);
1214 }
1215
1216
1217 EncodedJSValue jsTestObjStringAttrWithSetterException(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1218 {
1219     UNUSED_PARAM(exec);
1220     UNUSED_PARAM(slotBase);
1221     UNUSED_PARAM(thisValue);
1222     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1223     if (UNLIKELY(!castedThis)) {
1224         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1225             return reportDeprecatedGetterError(*exec, "TestObj", "stringAttrWithSetterException");
1226         return throwGetterTypeError(*exec, "TestObj", "stringAttrWithSetterException");
1227     }
1228     TestObj& impl = castedThis->impl();
1229     JSValue result = jsStringWithCache(exec, impl.stringAttrWithSetterException());
1230     return JSValue::encode(result);
1231 }
1232
1233
1234 EncodedJSValue jsTestObjCustomAttr(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1235 {
1236     UNUSED_PARAM(exec);
1237     UNUSED_PARAM(slotBase);
1238     UNUSED_PARAM(thisValue);
1239     JSTestObj* castedThis = jsCast<JSTestObj*>(slotBase);
1240     return JSValue::encode(castedThis->customAttr(exec));
1241 }
1242
1243
1244 EncodedJSValue jsTestObjWithScriptStateAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1245 {
1246     UNUSED_PARAM(exec);
1247     UNUSED_PARAM(slotBase);
1248     UNUSED_PARAM(thisValue);
1249     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1250     if (UNLIKELY(!castedThis)) {
1251         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1252             return reportDeprecatedGetterError(*exec, "TestObj", "withScriptStateAttribute");
1253         return throwGetterTypeError(*exec, "TestObj", "withScriptStateAttribute");
1254     }
1255     TestObj& impl = castedThis->impl();
1256     JSValue result = jsNumber(impl.withScriptStateAttribute(exec));
1257     return JSValue::encode(result);
1258 }
1259
1260
1261 EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1262 {
1263     UNUSED_PARAM(exec);
1264     UNUSED_PARAM(slotBase);
1265     UNUSED_PARAM(thisValue);
1266     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1267     if (UNLIKELY(!castedThis)) {
1268         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1269             return reportDeprecatedGetterError(*exec, "TestObj", "withScriptExecutionContextAttribute");
1270         return throwGetterTypeError(*exec, "TestObj", "withScriptExecutionContextAttribute");
1271     }
1272     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
1273     if (!scriptContext)
1274         return JSValue::encode(jsUndefined());
1275     TestObj& impl = castedThis->impl();
1276     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAttribute(scriptContext)));
1277     return JSValue::encode(result);
1278 }
1279
1280
1281 EncodedJSValue jsTestObjWithScriptStateAttributeRaises(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1282 {
1283     UNUSED_PARAM(exec);
1284     UNUSED_PARAM(slotBase);
1285     UNUSED_PARAM(thisValue);
1286     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1287     if (UNLIKELY(!castedThis)) {
1288         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1289             return reportDeprecatedGetterError(*exec, "TestObj", "withScriptStateAttributeRaises");
1290         return throwGetterTypeError(*exec, "TestObj", "withScriptStateAttributeRaises");
1291     }
1292     ExceptionCode ec = 0;
1293     TestObj& impl = castedThis->impl();
1294     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptStateAttributeRaises(exec, ec)));
1295     setDOMException(exec, ec);
1296     return JSValue::encode(result);
1297 }
1298
1299
1300 EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1301 {
1302     UNUSED_PARAM(exec);
1303     UNUSED_PARAM(slotBase);
1304     UNUSED_PARAM(thisValue);
1305     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1306     if (UNLIKELY(!castedThis)) {
1307         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1308             return reportDeprecatedGetterError(*exec, "TestObj", "withScriptExecutionContextAttributeRaises");
1309         return throwGetterTypeError(*exec, "TestObj", "withScriptExecutionContextAttributeRaises");
1310     }
1311     ExceptionCode ec = 0;
1312     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
1313     if (!scriptContext)
1314         return JSValue::encode(jsUndefined());
1315     TestObj& impl = castedThis->impl();
1316     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAttributeRaises(scriptContext, ec)));
1317     setDOMException(exec, ec);
1318     return JSValue::encode(result);
1319 }
1320
1321
1322 EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1323 {
1324     UNUSED_PARAM(exec);
1325     UNUSED_PARAM(slotBase);
1326     UNUSED_PARAM(thisValue);
1327     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1328     if (UNLIKELY(!castedThis)) {
1329         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1330             return reportDeprecatedGetterError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateAttribute");
1331         return throwGetterTypeError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateAttribute");
1332     }
1333     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
1334     if (!scriptContext)
1335         return JSValue::encode(jsUndefined());
1336     TestObj& impl = castedThis->impl();
1337     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateAttribute(exec, scriptContext)));
1338     return JSValue::encode(result);
1339 }
1340
1341
1342 EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1343 {
1344     UNUSED_PARAM(exec);
1345     UNUSED_PARAM(slotBase);
1346     UNUSED_PARAM(thisValue);
1347     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1348     if (UNLIKELY(!castedThis)) {
1349         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1350             return reportDeprecatedGetterError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateAttributeRaises");
1351         return throwGetterTypeError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateAttributeRaises");
1352     }
1353     ExceptionCode ec = 0;
1354     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
1355     if (!scriptContext)
1356         return JSValue::encode(jsUndefined());
1357     TestObj& impl = castedThis->impl();
1358     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateAttributeRaises(exec, scriptContext, ec)));
1359     setDOMException(exec, ec);
1360     return JSValue::encode(result);
1361 }
1362
1363
1364 EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1365 {
1366     UNUSED_PARAM(exec);
1367     UNUSED_PARAM(slotBase);
1368     UNUSED_PARAM(thisValue);
1369     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1370     if (UNLIKELY(!castedThis)) {
1371         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1372             return reportDeprecatedGetterError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateWithSpacesAttribute");
1373         return throwGetterTypeError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateWithSpacesAttribute");
1374     }
1375     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
1376     if (!scriptContext)
1377         return JSValue::encode(jsUndefined());
1378     TestObj& impl = castedThis->impl();
1379     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateWithSpacesAttribute(exec, scriptContext)));
1380     return JSValue::encode(result);
1381 }
1382
1383
1384 EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1385 {
1386     UNUSED_PARAM(exec);
1387     UNUSED_PARAM(slotBase);
1388     UNUSED_PARAM(thisValue);
1389     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1390     if (UNLIKELY(!castedThis)) {
1391         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1392             return reportDeprecatedGetterError(*exec, "TestObj", "withScriptArgumentsAndCallStackAttribute");
1393         return throwGetterTypeError(*exec, "TestObj", "withScriptArgumentsAndCallStackAttribute");
1394     }
1395     TestObj& impl = castedThis->impl();
1396     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptArgumentsAndCallStackAttribute()));
1397     return JSValue::encode(result);
1398 }
1399
1400
1401 #if ENABLE(Condition1)
1402 EncodedJSValue jsTestObjConditionalAttr1(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1403 {
1404     UNUSED_PARAM(exec);
1405     UNUSED_PARAM(slotBase);
1406     UNUSED_PARAM(thisValue);
1407     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1408     if (UNLIKELY(!castedThis)) {
1409         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1410             return reportDeprecatedGetterError(*exec, "TestObj", "conditionalAttr1");
1411         return throwGetterTypeError(*exec, "TestObj", "conditionalAttr1");
1412     }
1413     TestObj& impl = castedThis->impl();
1414     JSValue result = jsNumber(impl.conditionalAttr1());
1415     return JSValue::encode(result);
1416 }
1417
1418 #endif
1419
1420 #if ENABLE(Condition1) && ENABLE(Condition2)
1421 EncodedJSValue jsTestObjConditionalAttr2(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1422 {
1423     UNUSED_PARAM(exec);
1424     UNUSED_PARAM(slotBase);
1425     UNUSED_PARAM(thisValue);
1426     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1427     if (UNLIKELY(!castedThis)) {
1428         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1429             return reportDeprecatedGetterError(*exec, "TestObj", "conditionalAttr2");
1430         return throwGetterTypeError(*exec, "TestObj", "conditionalAttr2");
1431     }
1432     TestObj& impl = castedThis->impl();
1433     JSValue result = jsNumber(impl.conditionalAttr2());
1434     return JSValue::encode(result);
1435 }
1436
1437 #endif
1438
1439 #if ENABLE(Condition1) || ENABLE(Condition2)
1440 EncodedJSValue jsTestObjConditionalAttr3(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1441 {
1442     UNUSED_PARAM(exec);
1443     UNUSED_PARAM(slotBase);
1444     UNUSED_PARAM(thisValue);
1445     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1446     if (UNLIKELY(!castedThis)) {
1447         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1448             return reportDeprecatedGetterError(*exec, "TestObj", "conditionalAttr3");
1449         return throwGetterTypeError(*exec, "TestObj", "conditionalAttr3");
1450     }
1451     TestObj& impl = castedThis->impl();
1452     JSValue result = jsNumber(impl.conditionalAttr3());
1453     return JSValue::encode(result);
1454 }
1455
1456 #endif
1457
1458 #if ENABLE(Condition1)
1459 EncodedJSValue jsTestObjConditionalAttr4Constructor(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1460 {
1461     UNUSED_PARAM(exec);
1462     UNUSED_PARAM(slotBase);
1463     UNUSED_PARAM(thisValue);
1464     JSTestObj* castedThis = jsCast<JSTestObj*>(slotBase);
1465     return JSValue::encode(JSTestObjectA::getConstructor(exec->vm(), castedThis->globalObject()));
1466 }
1467
1468 #endif
1469
1470 #if ENABLE(Condition1) && ENABLE(Condition2)
1471 EncodedJSValue jsTestObjConditionalAttr5Constructor(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1472 {
1473     UNUSED_PARAM(exec);
1474     UNUSED_PARAM(slotBase);
1475     UNUSED_PARAM(thisValue);
1476     JSTestObj* castedThis = jsCast<JSTestObj*>(slotBase);
1477     return JSValue::encode(JSTestObjectB::getConstructor(exec->vm(), castedThis->globalObject()));
1478 }
1479
1480 #endif
1481
1482 #if ENABLE(Condition1) || ENABLE(Condition2)
1483 EncodedJSValue jsTestObjConditionalAttr6Constructor(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1484 {
1485     UNUSED_PARAM(exec);
1486     UNUSED_PARAM(slotBase);
1487     UNUSED_PARAM(thisValue);
1488     JSTestObj* castedThis = jsCast<JSTestObj*>(slotBase);
1489     return JSValue::encode(JSTestObjectC::getConstructor(exec->vm(), castedThis->globalObject()));
1490 }
1491
1492 #endif
1493
1494 EncodedJSValue jsTestObjCachedAttribute1(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1495 {
1496     UNUSED_PARAM(exec);
1497     UNUSED_PARAM(slotBase);
1498     UNUSED_PARAM(thisValue);
1499     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1500     if (UNLIKELY(!castedThis)) {
1501         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1502             return reportDeprecatedGetterError(*exec, "TestObj", "cachedAttribute1");
1503         return throwGetterTypeError(*exec, "TestObj", "cachedAttribute1");
1504     }
1505     if (JSValue cachedValue = castedThis->m_cachedAttribute1.get())
1506         return JSValue::encode(cachedValue);
1507     TestObj& impl = castedThis->impl();
1508     JSValue result = (impl.cachedAttribute1().hasNoValue() ? jsNull() : impl.cachedAttribute1().jsValue());
1509     castedThis->m_cachedAttribute1.set(exec->vm(), castedThis, result);
1510     return JSValue::encode(result);
1511 }
1512
1513
1514 EncodedJSValue jsTestObjCachedAttribute2(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1515 {
1516     UNUSED_PARAM(exec);
1517     UNUSED_PARAM(slotBase);
1518     UNUSED_PARAM(thisValue);
1519     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1520     if (UNLIKELY(!castedThis)) {
1521         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1522             return reportDeprecatedGetterError(*exec, "TestObj", "cachedAttribute2");
1523         return throwGetterTypeError(*exec, "TestObj", "cachedAttribute2");
1524     }
1525     if (JSValue cachedValue = castedThis->m_cachedAttribute2.get())
1526         return JSValue::encode(cachedValue);
1527     TestObj& impl = castedThis->impl();
1528     JSValue result = (impl.cachedAttribute2().hasNoValue() ? jsNull() : impl.cachedAttribute2().jsValue());
1529     castedThis->m_cachedAttribute2.set(exec->vm(), castedThis, result);
1530     return JSValue::encode(result);
1531 }
1532
1533
1534 EncodedJSValue jsTestObjAnyAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1535 {
1536     UNUSED_PARAM(exec);
1537     UNUSED_PARAM(slotBase);
1538     UNUSED_PARAM(thisValue);
1539     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1540     if (UNLIKELY(!castedThis)) {
1541         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1542             return reportDeprecatedGetterError(*exec, "TestObj", "anyAttribute");
1543         return throwGetterTypeError(*exec, "TestObj", "anyAttribute");
1544     }
1545     TestObj& impl = castedThis->impl();
1546     JSValue result = (impl.anyAttribute().hasNoValue() ? jsNull() : impl.anyAttribute().jsValue());
1547     return JSValue::encode(result);
1548 }
1549
1550
1551 EncodedJSValue jsTestObjContentDocument(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1552 {
1553     UNUSED_PARAM(exec);
1554     UNUSED_PARAM(slotBase);
1555     UNUSED_PARAM(thisValue);
1556     JSTestObj* castedThis = jsCast<JSTestObj*>(slotBase);
1557     TestObj& impl = castedThis->impl();
1558     return JSValue::encode(shouldAllowAccessToNode(exec, impl.contentDocument()) ? toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.contentDocument())) : jsNull());
1559 }
1560
1561
1562 EncodedJSValue jsTestObjMutablePoint(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1563 {
1564     UNUSED_PARAM(exec);
1565     UNUSED_PARAM(slotBase);
1566     UNUSED_PARAM(thisValue);
1567     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1568     if (UNLIKELY(!castedThis)) {
1569         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1570             return reportDeprecatedGetterError(*exec, "TestObj", "mutablePoint");
1571         return throwGetterTypeError(*exec, "TestObj", "mutablePoint");
1572     }
1573     TestObj& impl = castedThis->impl();
1574     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(SVGStaticPropertyTearOff<TestObj, SVGPoint>::create(impl, impl.mutablePoint(), &TestObj::updateMutablePoint)));
1575     return JSValue::encode(result);
1576 }
1577
1578
1579 EncodedJSValue jsTestObjImmutablePoint(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1580 {
1581     UNUSED_PARAM(exec);
1582     UNUSED_PARAM(slotBase);
1583     UNUSED_PARAM(thisValue);
1584     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1585     if (UNLIKELY(!castedThis)) {
1586         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1587             return reportDeprecatedGetterError(*exec, "TestObj", "immutablePoint");
1588         return throwGetterTypeError(*exec, "TestObj", "immutablePoint");
1589     }
1590     TestObj& impl = castedThis->impl();
1591     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(SVGPropertyTearOff<SVGPoint>::create(impl.immutablePoint())));
1592     return JSValue::encode(result);
1593 }
1594
1595
1596 EncodedJSValue jsTestObjStrawberry(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1597 {
1598     UNUSED_PARAM(exec);
1599     UNUSED_PARAM(slotBase);
1600     UNUSED_PARAM(thisValue);
1601     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1602     if (UNLIKELY(!castedThis)) {
1603         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1604             return reportDeprecatedGetterError(*exec, "TestObj", "strawberry");
1605         return throwGetterTypeError(*exec, "TestObj", "strawberry");
1606     }
1607     TestObj& impl = castedThis->impl();
1608     JSValue result = jsNumber(impl.blueberry());
1609     return JSValue::encode(result);
1610 }
1611
1612
1613 EncodedJSValue jsTestObjStrictFloat(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1614 {
1615     UNUSED_PARAM(exec);
1616     UNUSED_PARAM(slotBase);
1617     UNUSED_PARAM(thisValue);
1618     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1619     if (UNLIKELY(!castedThis)) {
1620         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1621             return reportDeprecatedGetterError(*exec, "TestObj", "strictFloat");
1622         return throwGetterTypeError(*exec, "TestObj", "strictFloat");
1623     }
1624     TestObj& impl = castedThis->impl();
1625     JSValue result = jsNumber(impl.strictFloat());
1626     return JSValue::encode(result);
1627 }
1628
1629
1630 EncodedJSValue jsTestObjDescription(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1631 {
1632     UNUSED_PARAM(exec);
1633     UNUSED_PARAM(slotBase);
1634     UNUSED_PARAM(thisValue);
1635     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1636     if (UNLIKELY(!castedThis)) {
1637         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1638             return reportDeprecatedGetterError(*exec, "TestObj", "description");
1639         return throwGetterTypeError(*exec, "TestObj", "description");
1640     }
1641     TestObj& impl = castedThis->impl();
1642     JSValue result = jsNumber(impl.description());
1643     return JSValue::encode(result);
1644 }
1645
1646
1647 EncodedJSValue jsTestObjId(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1648 {
1649     UNUSED_PARAM(exec);
1650     UNUSED_PARAM(slotBase);
1651     UNUSED_PARAM(thisValue);
1652     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1653     if (UNLIKELY(!castedThis)) {
1654         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1655             return reportDeprecatedGetterError(*exec, "TestObj", "id");
1656         return throwGetterTypeError(*exec, "TestObj", "id");
1657     }
1658     TestObj& impl = castedThis->impl();
1659     JSValue result = jsNumber(impl.id());
1660     return JSValue::encode(result);
1661 }
1662
1663
1664 EncodedJSValue jsTestObjHash(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1665 {
1666     UNUSED_PARAM(exec);
1667     UNUSED_PARAM(slotBase);
1668     UNUSED_PARAM(thisValue);
1669     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1670     if (UNLIKELY(!castedThis)) {
1671         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1672             return reportDeprecatedGetterError(*exec, "TestObj", "hash");
1673         return throwGetterTypeError(*exec, "TestObj", "hash");
1674     }
1675     TestObj& impl = castedThis->impl();
1676     JSValue result = jsStringWithCache(exec, impl.hash());
1677     return JSValue::encode(result);
1678 }
1679
1680
1681 EncodedJSValue jsTestObjReplaceableAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1682 {
1683     UNUSED_PARAM(exec);
1684     UNUSED_PARAM(slotBase);
1685     UNUSED_PARAM(thisValue);
1686     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1687     if (UNLIKELY(!castedThis)) {
1688         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1689             return reportDeprecatedGetterError(*exec, "TestObj", "replaceableAttribute");
1690         return throwGetterTypeError(*exec, "TestObj", "replaceableAttribute");
1691     }
1692     TestObj& impl = castedThis->impl();
1693     JSValue result = jsNumber(impl.replaceableAttribute());
1694     return JSValue::encode(result);
1695 }
1696
1697
1698 EncodedJSValue jsTestObjNullableDoubleAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1699 {
1700     UNUSED_PARAM(exec);
1701     UNUSED_PARAM(slotBase);
1702     UNUSED_PARAM(thisValue);
1703     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1704     if (UNLIKELY(!castedThis)) {
1705         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1706             return reportDeprecatedGetterError(*exec, "TestObj", "nullableDoubleAttribute");
1707         return throwGetterTypeError(*exec, "TestObj", "nullableDoubleAttribute");
1708     }
1709     bool isNull = false;
1710     TestObj& impl = castedThis->impl();
1711     JSValue result = jsNumber(impl.nullableDoubleAttribute(isNull));
1712     if (isNull)
1713         return JSValue::encode(jsNull());
1714     return JSValue::encode(result);
1715 }
1716
1717
1718 EncodedJSValue jsTestObjNullableLongAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1719 {
1720     UNUSED_PARAM(exec);
1721     UNUSED_PARAM(slotBase);
1722     UNUSED_PARAM(thisValue);
1723     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1724     if (UNLIKELY(!castedThis)) {
1725         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1726             return reportDeprecatedGetterError(*exec, "TestObj", "nullableLongAttribute");
1727         return throwGetterTypeError(*exec, "TestObj", "nullableLongAttribute");
1728     }
1729     bool isNull = false;
1730     TestObj& impl = castedThis->impl();
1731     JSValue result = jsNumber(impl.nullableLongAttribute(isNull));
1732     if (isNull)
1733         return JSValue::encode(jsNull());
1734     return JSValue::encode(result);
1735 }
1736
1737
1738 EncodedJSValue jsTestObjNullableBooleanAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1739 {
1740     UNUSED_PARAM(exec);
1741     UNUSED_PARAM(slotBase);
1742     UNUSED_PARAM(thisValue);
1743     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1744     if (UNLIKELY(!castedThis)) {
1745         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1746             return reportDeprecatedGetterError(*exec, "TestObj", "nullableBooleanAttribute");
1747         return throwGetterTypeError(*exec, "TestObj", "nullableBooleanAttribute");
1748     }
1749     bool isNull = false;
1750     TestObj& impl = castedThis->impl();
1751     JSValue result = jsBoolean(impl.nullableBooleanAttribute(isNull));
1752     if (isNull)
1753         return JSValue::encode(jsNull());
1754     return JSValue::encode(result);
1755 }
1756
1757
1758 EncodedJSValue jsTestObjNullableStringAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1759 {
1760     UNUSED_PARAM(exec);
1761     UNUSED_PARAM(slotBase);
1762     UNUSED_PARAM(thisValue);
1763     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1764     if (UNLIKELY(!castedThis)) {
1765         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1766             return reportDeprecatedGetterError(*exec, "TestObj", "nullableStringAttribute");
1767         return throwGetterTypeError(*exec, "TestObj", "nullableStringAttribute");
1768     }
1769     bool isNull = false;
1770     TestObj& impl = castedThis->impl();
1771     JSValue result = jsStringWithCache(exec, impl.nullableStringAttribute(isNull));
1772     if (isNull)
1773         return JSValue::encode(jsNull());
1774     return JSValue::encode(result);
1775 }
1776
1777
1778 EncodedJSValue jsTestObjNullableLongSettableAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1779 {
1780     UNUSED_PARAM(exec);
1781     UNUSED_PARAM(slotBase);
1782     UNUSED_PARAM(thisValue);
1783     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1784     if (UNLIKELY(!castedThis)) {
1785         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1786             return reportDeprecatedGetterError(*exec, "TestObj", "nullableLongSettableAttribute");
1787         return throwGetterTypeError(*exec, "TestObj", "nullableLongSettableAttribute");
1788     }
1789     bool isNull = false;
1790     TestObj& impl = castedThis->impl();
1791     JSValue result = jsNumber(impl.nullableLongSettableAttribute(isNull));
1792     if (isNull)
1793         return JSValue::encode(jsNull());
1794     return JSValue::encode(result);
1795 }
1796
1797
1798 EncodedJSValue jsTestObjNullableStringValue(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1799 {
1800     UNUSED_PARAM(exec);
1801     UNUSED_PARAM(slotBase);
1802     UNUSED_PARAM(thisValue);
1803     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1804     if (UNLIKELY(!castedThis)) {
1805         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1806             return reportDeprecatedGetterError(*exec, "TestObj", "nullableStringValue");
1807         return throwGetterTypeError(*exec, "TestObj", "nullableStringValue");
1808     }
1809     ExceptionCode ec = 0;
1810     bool isNull = false;
1811     TestObj& impl = castedThis->impl();
1812     JSValue result = jsNumber(impl.nullableStringValue(isNull, ec));
1813     setDOMException(exec, ec);
1814     if (isNull)
1815         return JSValue::encode(jsNull());
1816     return JSValue::encode(result);
1817 }
1818
1819
1820 EncodedJSValue jsTestObjAttribute(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1821 {
1822     UNUSED_PARAM(exec);
1823     UNUSED_PARAM(slotBase);
1824     UNUSED_PARAM(thisValue);
1825     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1826     if (UNLIKELY(!castedThis)) {
1827         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1828             return reportDeprecatedGetterError(*exec, "TestObj", "attribute");
1829         return throwGetterTypeError(*exec, "TestObj", "attribute");
1830     }
1831     TestObj& impl = castedThis->impl();
1832     JSValue result = jsStringWithCache(exec, impl.attribute());
1833     return JSValue::encode(result);
1834 }
1835
1836
1837 EncodedJSValue jsTestObjAttributeWithReservedEnumType(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
1838 {
1839     UNUSED_PARAM(exec);
1840     UNUSED_PARAM(slotBase);
1841     UNUSED_PARAM(thisValue);
1842     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1843     if (UNLIKELY(!castedThis)) {
1844         if (jsDynamicCast<JSTestObjPrototype*>(slotBase))
1845             return reportDeprecatedGetterError(*exec, "TestObj", "attributeWithReservedEnumType");
1846         return throwGetterTypeError(*exec, "TestObj", "attributeWithReservedEnumType");
1847     }
1848     TestObj& impl = castedThis->impl();
1849     JSValue result = jsStringWithCache(exec, impl.attributeWithReservedEnumType());
1850     return JSValue::encode(result);
1851 }
1852
1853
1854 EncodedJSValue jsTestObjConstructor(ExecState* exec, JSObject* baseValue, EncodedJSValue, PropertyName)
1855 {
1856     JSTestObjPrototype* domObject = jsDynamicCast<JSTestObjPrototype*>(baseValue);
1857     if (!domObject)
1858         return throwVMTypeError(exec);
1859     return JSValue::encode(JSTestObj::getConstructor(exec->vm(), domObject->globalObject()));
1860 }
1861
1862 void setJSTestObjConstructorStaticStringAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue, EncodedJSValue encodedValue)
1863 {
1864     JSValue value = JSValue::decode(encodedValue);
1865     UNUSED_PARAM(baseObject);
1866     const String& nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec));
1867     if (UNLIKELY(exec->hadException()))
1868         return;
1869     TestObj::setStaticStringAttr(nativeValue);
1870 }
1871
1872
1873 void setJSTestObjTestSubObjEnabledBySettingConstructor(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
1874 {
1875     JSValue value = JSValue::decode(encodedValue);
1876     UNUSED_PARAM(baseObject);
1877     UNUSED_PARAM(thisValue);
1878     JSTestObj* castedThis = jsCast<JSTestObj*>(baseObject);
1879     UNUSED_PARAM(thisValue);
1880     UNUSED_PARAM(exec);
1881     // Shadowing a built-in constructor
1882     castedThis->putDirect(exec->vm(), Identifier(exec, "TestSubObjEnabledBySetting"), value);
1883 }
1884
1885
1886 void setJSTestObjEnumAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
1887 {
1888     JSValue value = JSValue::decode(encodedValue);
1889     UNUSED_PARAM(baseObject);
1890     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1891     if (UNLIKELY(!castedThis)) {
1892         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
1893             reportDeprecatedSetterError(*exec, "TestObj", "enumAttr");
1894         else
1895             throwSetterTypeError(*exec, "TestObj", "enumAttr");
1896         return;
1897     }
1898     TestObj& impl = castedThis->impl();
1899     const String nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec));
1900     if (UNLIKELY(exec->hadException()))
1901         return;
1902     if (nativeValue != "" && nativeValue != "EnumValue1" && nativeValue != "EnumValue2" && nativeValue != "EnumValue3")
1903         return;
1904     impl.setEnumAttr(nativeValue);
1905 }
1906
1907
1908 void setJSTestObjByteAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
1909 {
1910     JSValue value = JSValue::decode(encodedValue);
1911     UNUSED_PARAM(baseObject);
1912     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1913     if (UNLIKELY(!castedThis)) {
1914         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
1915             reportDeprecatedSetterError(*exec, "TestObj", "byteAttr");
1916         else
1917             throwSetterTypeError(*exec, "TestObj", "byteAttr");
1918         return;
1919     }
1920     TestObj& impl = castedThis->impl();
1921     int8_t nativeValue(toInt8(exec, value, NormalConversion));
1922     if (UNLIKELY(exec->hadException()))
1923         return;
1924     impl.setByteAttr(nativeValue);
1925 }
1926
1927
1928 void setJSTestObjOctetAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
1929 {
1930     JSValue value = JSValue::decode(encodedValue);
1931     UNUSED_PARAM(baseObject);
1932     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1933     if (UNLIKELY(!castedThis)) {
1934         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
1935             reportDeprecatedSetterError(*exec, "TestObj", "octetAttr");
1936         else
1937             throwSetterTypeError(*exec, "TestObj", "octetAttr");
1938         return;
1939     }
1940     TestObj& impl = castedThis->impl();
1941     uint8_t nativeValue(toUInt8(exec, value, NormalConversion));
1942     if (UNLIKELY(exec->hadException()))
1943         return;
1944     impl.setOctetAttr(nativeValue);
1945 }
1946
1947
1948 void setJSTestObjShortAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
1949 {
1950     JSValue value = JSValue::decode(encodedValue);
1951     UNUSED_PARAM(baseObject);
1952     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1953     if (UNLIKELY(!castedThis)) {
1954         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
1955             reportDeprecatedSetterError(*exec, "TestObj", "shortAttr");
1956         else
1957             throwSetterTypeError(*exec, "TestObj", "shortAttr");
1958         return;
1959     }
1960     TestObj& impl = castedThis->impl();
1961     int16_t nativeValue(toInt16(exec, value, NormalConversion));
1962     if (UNLIKELY(exec->hadException()))
1963         return;
1964     impl.setShortAttr(nativeValue);
1965 }
1966
1967
1968 void setJSTestObjUnsignedShortAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
1969 {
1970     JSValue value = JSValue::decode(encodedValue);
1971     UNUSED_PARAM(baseObject);
1972     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1973     if (UNLIKELY(!castedThis)) {
1974         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
1975             reportDeprecatedSetterError(*exec, "TestObj", "unsignedShortAttr");
1976         else
1977             throwSetterTypeError(*exec, "TestObj", "unsignedShortAttr");
1978         return;
1979     }
1980     TestObj& impl = castedThis->impl();
1981     uint16_t nativeValue(toUInt16(exec, value, NormalConversion));
1982     if (UNLIKELY(exec->hadException()))
1983         return;
1984     impl.setUnsignedShortAttr(nativeValue);
1985 }
1986
1987
1988 void setJSTestObjLongAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
1989 {
1990     JSValue value = JSValue::decode(encodedValue);
1991     UNUSED_PARAM(baseObject);
1992     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
1993     if (UNLIKELY(!castedThis)) {
1994         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
1995             reportDeprecatedSetterError(*exec, "TestObj", "longAttr");
1996         else
1997             throwSetterTypeError(*exec, "TestObj", "longAttr");
1998         return;
1999     }
2000     TestObj& impl = castedThis->impl();
2001     int nativeValue(toInt32(exec, value, NormalConversion));
2002     if (UNLIKELY(exec->hadException()))
2003         return;
2004     impl.setLongAttr(nativeValue);
2005 }
2006
2007
2008 void setJSTestObjLongLongAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2009 {
2010     JSValue value = JSValue::decode(encodedValue);
2011     UNUSED_PARAM(baseObject);
2012     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2013     if (UNLIKELY(!castedThis)) {
2014         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2015             reportDeprecatedSetterError(*exec, "TestObj", "longLongAttr");
2016         else
2017             throwSetterTypeError(*exec, "TestObj", "longLongAttr");
2018         return;
2019     }
2020     TestObj& impl = castedThis->impl();
2021     long long nativeValue(toInt64(exec, value, NormalConversion));
2022     if (UNLIKELY(exec->hadException()))
2023         return;
2024     impl.setLongLongAttr(nativeValue);
2025 }
2026
2027
2028 void setJSTestObjUnsignedLongLongAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2029 {
2030     JSValue value = JSValue::decode(encodedValue);
2031     UNUSED_PARAM(baseObject);
2032     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2033     if (UNLIKELY(!castedThis)) {
2034         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2035             reportDeprecatedSetterError(*exec, "TestObj", "unsignedLongLongAttr");
2036         else
2037             throwSetterTypeError(*exec, "TestObj", "unsignedLongLongAttr");
2038         return;
2039     }
2040     TestObj& impl = castedThis->impl();
2041     unsigned long long nativeValue(toUInt64(exec, value, NormalConversion));
2042     if (UNLIKELY(exec->hadException()))
2043         return;
2044     impl.setUnsignedLongLongAttr(nativeValue);
2045 }
2046
2047
2048 void setJSTestObjStringAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2049 {
2050     JSValue value = JSValue::decode(encodedValue);
2051     UNUSED_PARAM(baseObject);
2052     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2053     if (UNLIKELY(!castedThis)) {
2054         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2055             reportDeprecatedSetterError(*exec, "TestObj", "stringAttr");
2056         else
2057             throwSetterTypeError(*exec, "TestObj", "stringAttr");
2058         return;
2059     }
2060     TestObj& impl = castedThis->impl();
2061     const String& nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec));
2062     if (UNLIKELY(exec->hadException()))
2063         return;
2064     impl.setStringAttr(nativeValue);
2065 }
2066
2067
2068 void setJSTestObjTestObjAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2069 {
2070     JSValue value = JSValue::decode(encodedValue);
2071     UNUSED_PARAM(baseObject);
2072     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2073     if (UNLIKELY(!castedThis)) {
2074         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2075             reportDeprecatedSetterError(*exec, "TestObj", "testObjAttr");
2076         else
2077             throwSetterTypeError(*exec, "TestObj", "testObjAttr");
2078         return;
2079     }
2080     TestObj& impl = castedThis->impl();
2081     TestObj* nativeValue(JSTestObj::toWrapped(value));
2082     if (UNLIKELY(exec->hadException()))
2083         return;
2084     impl.setTestObjAttr(nativeValue);
2085 }
2086
2087
2088 void setJSTestObjXMLObjAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2089 {
2090     JSValue value = JSValue::decode(encodedValue);
2091     UNUSED_PARAM(baseObject);
2092     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2093     if (UNLIKELY(!castedThis)) {
2094         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2095             reportDeprecatedSetterError(*exec, "TestObj", "XMLObjAttr");
2096         else
2097             throwSetterTypeError(*exec, "TestObj", "XMLObjAttr");
2098         return;
2099     }
2100     TestObj& impl = castedThis->impl();
2101     TestObj* nativeValue(JSTestObj::toWrapped(value));
2102     if (UNLIKELY(exec->hadException()))
2103         return;
2104     impl.setXMLObjAttr(nativeValue);
2105 }
2106
2107
2108 void setJSTestObjCreate(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2109 {
2110     JSValue value = JSValue::decode(encodedValue);
2111     UNUSED_PARAM(baseObject);
2112     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2113     if (UNLIKELY(!castedThis)) {
2114         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2115             reportDeprecatedSetterError(*exec, "TestObj", "create");
2116         else
2117             throwSetterTypeError(*exec, "TestObj", "create");
2118         return;
2119     }
2120     TestObj& impl = castedThis->impl();
2121     bool nativeValue(value.toBoolean(exec));
2122     if (UNLIKELY(exec->hadException()))
2123         return;
2124     impl.setCreate(nativeValue);
2125 }
2126
2127
2128 void setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2129 {
2130     JSValue value = JSValue::decode(encodedValue);
2131     UNUSED_PARAM(baseObject);
2132     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2133     if (UNLIKELY(!castedThis)) {
2134         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2135             reportDeprecatedSetterError(*exec, "TestObj", "reflectedStringAttr");
2136         else
2137             throwSetterTypeError(*exec, "TestObj", "reflectedStringAttr");
2138         return;
2139     }
2140     TestObj& impl = castedThis->impl();
2141     const String& nativeValue(valueToStringWithNullCheck(exec, value));
2142     if (UNLIKELY(exec->hadException()))
2143         return;
2144     impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedstringattrAttr, nativeValue);
2145 }
2146
2147
2148 void setJSTestObjReflectedIntegralAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2149 {
2150     JSValue value = JSValue::decode(encodedValue);
2151     UNUSED_PARAM(baseObject);
2152     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2153     if (UNLIKELY(!castedThis)) {
2154         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2155             reportDeprecatedSetterError(*exec, "TestObj", "reflectedIntegralAttr");
2156         else
2157             throwSetterTypeError(*exec, "TestObj", "reflectedIntegralAttr");
2158         return;
2159     }
2160     TestObj& impl = castedThis->impl();
2161     int nativeValue(toInt32(exec, value, NormalConversion));
2162     if (UNLIKELY(exec->hadException()))
2163         return;
2164     impl.setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, nativeValue);
2165 }
2166
2167
2168 void setJSTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2169 {
2170     JSValue value = JSValue::decode(encodedValue);
2171     UNUSED_PARAM(baseObject);
2172     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2173     if (UNLIKELY(!castedThis)) {
2174         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2175             reportDeprecatedSetterError(*exec, "TestObj", "reflectedUnsignedIntegralAttr");
2176         else
2177             throwSetterTypeError(*exec, "TestObj", "reflectedUnsignedIntegralAttr");
2178         return;
2179     }
2180     TestObj& impl = castedThis->impl();
2181     unsigned nativeValue(toUInt32(exec, value, NormalConversion));
2182     if (UNLIKELY(exec->hadException()))
2183         return;
2184     impl.setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, nativeValue);
2185 }
2186
2187
2188 void setJSTestObjReflectedBooleanAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2189 {
2190     JSValue value = JSValue::decode(encodedValue);
2191     UNUSED_PARAM(baseObject);
2192     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2193     if (UNLIKELY(!castedThis)) {
2194         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2195             reportDeprecatedSetterError(*exec, "TestObj", "reflectedBooleanAttr");
2196         else
2197             throwSetterTypeError(*exec, "TestObj", "reflectedBooleanAttr");
2198         return;
2199     }
2200     TestObj& impl = castedThis->impl();
2201     bool nativeValue(value.toBoolean(exec));
2202     if (UNLIKELY(exec->hadException()))
2203         return;
2204     impl.setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, nativeValue);
2205 }
2206
2207
2208 void setJSTestObjReflectedURLAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2209 {
2210     JSValue value = JSValue::decode(encodedValue);
2211     UNUSED_PARAM(baseObject);
2212     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2213     if (UNLIKELY(!castedThis)) {
2214         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2215             reportDeprecatedSetterError(*exec, "TestObj", "reflectedURLAttr");
2216         else
2217             throwSetterTypeError(*exec, "TestObj", "reflectedURLAttr");
2218         return;
2219     }
2220     TestObj& impl = castedThis->impl();
2221     const String& nativeValue(valueToStringWithNullCheck(exec, value));
2222     if (UNLIKELY(exec->hadException()))
2223         return;
2224     impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedurlattrAttr, nativeValue);
2225 }
2226
2227
2228 void setJSTestObjReflectedStringAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2229 {
2230     JSValue value = JSValue::decode(encodedValue);
2231     UNUSED_PARAM(baseObject);
2232     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2233     if (UNLIKELY(!castedThis)) {
2234         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2235             reportDeprecatedSetterError(*exec, "TestObj", "reflectedStringAttr");
2236         else
2237             throwSetterTypeError(*exec, "TestObj", "reflectedStringAttr");
2238         return;
2239     }
2240     TestObj& impl = castedThis->impl();
2241     const String& nativeValue(valueToStringWithNullCheck(exec, value));
2242     if (UNLIKELY(exec->hadException()))
2243         return;
2244     impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentStringAttrAttr, nativeValue);
2245 }
2246
2247
2248 void setJSTestObjReflectedCustomIntegralAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2249 {
2250     JSValue value = JSValue::decode(encodedValue);
2251     UNUSED_PARAM(baseObject);
2252     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2253     if (UNLIKELY(!castedThis)) {
2254         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2255             reportDeprecatedSetterError(*exec, "TestObj", "reflectedCustomIntegralAttr");
2256         else
2257             throwSetterTypeError(*exec, "TestObj", "reflectedCustomIntegralAttr");
2258         return;
2259     }
2260     TestObj& impl = castedThis->impl();
2261     int nativeValue(toInt32(exec, value, NormalConversion));
2262     if (UNLIKELY(exec->hadException()))
2263         return;
2264     impl.setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, nativeValue);
2265 }
2266
2267
2268 void setJSTestObjReflectedCustomBooleanAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2269 {
2270     JSValue value = JSValue::decode(encodedValue);
2271     UNUSED_PARAM(baseObject);
2272     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2273     if (UNLIKELY(!castedThis)) {
2274         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2275             reportDeprecatedSetterError(*exec, "TestObj", "reflectedCustomBooleanAttr");
2276         else
2277             throwSetterTypeError(*exec, "TestObj", "reflectedCustomBooleanAttr");
2278         return;
2279     }
2280     TestObj& impl = castedThis->impl();
2281     bool nativeValue(value.toBoolean(exec));
2282     if (UNLIKELY(exec->hadException()))
2283         return;
2284     impl.setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, nativeValue);
2285 }
2286
2287
2288 void setJSTestObjReflectedCustomURLAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2289 {
2290     JSValue value = JSValue::decode(encodedValue);
2291     UNUSED_PARAM(baseObject);
2292     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2293     if (UNLIKELY(!castedThis)) {
2294         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2295             reportDeprecatedSetterError(*exec, "TestObj", "reflectedCustomURLAttr");
2296         else
2297             throwSetterTypeError(*exec, "TestObj", "reflectedCustomURLAttr");
2298         return;
2299     }
2300     TestObj& impl = castedThis->impl();
2301     const String& nativeValue(valueToStringWithNullCheck(exec, value));
2302     if (UNLIKELY(exec->hadException()))
2303         return;
2304     impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentURLAttrAttr, nativeValue);
2305 }
2306
2307
2308 void setJSTestObjTypedArrayAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2309 {
2310     JSValue value = JSValue::decode(encodedValue);
2311     UNUSED_PARAM(baseObject);
2312     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2313     if (UNLIKELY(!castedThis)) {
2314         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2315             reportDeprecatedSetterError(*exec, "TestObj", "typedArrayAttr");
2316         else
2317             throwSetterTypeError(*exec, "TestObj", "typedArrayAttr");
2318         return;
2319     }
2320     TestObj& impl = castedThis->impl();
2321     RefPtr<Float32Array> nativeValue(toFloat32Array(value));
2322     if (UNLIKELY(exec->hadException()))
2323         return;
2324     impl.setTypedArrayAttr(nativeValue.get());
2325 }
2326
2327
2328 void setJSTestObjAttrWithGetterException(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2329 {
2330     JSValue value = JSValue::decode(encodedValue);
2331     UNUSED_PARAM(baseObject);
2332     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2333     if (UNLIKELY(!castedThis)) {
2334         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2335             reportDeprecatedSetterError(*exec, "TestObj", "attrWithGetterException");
2336         else
2337             throwSetterTypeError(*exec, "TestObj", "attrWithGetterException");
2338         return;
2339     }
2340     TestObj& impl = castedThis->impl();
2341     int nativeValue(toInt32(exec, value, NormalConversion));
2342     if (UNLIKELY(exec->hadException()))
2343         return;
2344     impl.setAttrWithGetterException(nativeValue);
2345 }
2346
2347
2348 void setJSTestObjAttrWithSetterException(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2349 {
2350     JSValue value = JSValue::decode(encodedValue);
2351     UNUSED_PARAM(baseObject);
2352     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2353     if (UNLIKELY(!castedThis)) {
2354         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2355             reportDeprecatedSetterError(*exec, "TestObj", "attrWithSetterException");
2356         else
2357             throwSetterTypeError(*exec, "TestObj", "attrWithSetterException");
2358         return;
2359     }
2360     TestObj& impl = castedThis->impl();
2361     ExceptionCode ec = 0;
2362     int nativeValue(toInt32(exec, value, NormalConversion));
2363     if (UNLIKELY(exec->hadException()))
2364         return;
2365     impl.setAttrWithSetterException(nativeValue, ec);
2366     setDOMException(exec, ec);
2367 }
2368
2369
2370 void setJSTestObjStringAttrWithGetterException(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2371 {
2372     JSValue value = JSValue::decode(encodedValue);
2373     UNUSED_PARAM(baseObject);
2374     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2375     if (UNLIKELY(!castedThis)) {
2376         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2377             reportDeprecatedSetterError(*exec, "TestObj", "stringAttrWithGetterException");
2378         else
2379             throwSetterTypeError(*exec, "TestObj", "stringAttrWithGetterException");
2380         return;
2381     }
2382     TestObj& impl = castedThis->impl();
2383     const String& nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec));
2384     if (UNLIKELY(exec->hadException()))
2385         return;
2386     impl.setStringAttrWithGetterException(nativeValue);
2387 }
2388
2389
2390 void setJSTestObjStringAttrWithSetterException(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2391 {
2392     JSValue value = JSValue::decode(encodedValue);
2393     UNUSED_PARAM(baseObject);
2394     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2395     if (UNLIKELY(!castedThis)) {
2396         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2397             reportDeprecatedSetterError(*exec, "TestObj", "stringAttrWithSetterException");
2398         else
2399             throwSetterTypeError(*exec, "TestObj", "stringAttrWithSetterException");
2400         return;
2401     }
2402     TestObj& impl = castedThis->impl();
2403     ExceptionCode ec = 0;
2404     const String& nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec));
2405     if (UNLIKELY(exec->hadException()))
2406         return;
2407     impl.setStringAttrWithSetterException(nativeValue, ec);
2408     setDOMException(exec, ec);
2409 }
2410
2411
2412 void setJSTestObjCustomAttr(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2413 {
2414     JSValue value = JSValue::decode(encodedValue);
2415     UNUSED_PARAM(baseObject);
2416     UNUSED_PARAM(thisValue);
2417     JSTestObj* castedThis = jsCast<JSTestObj*>(baseObject);
2418     UNUSED_PARAM(thisValue);
2419     UNUSED_PARAM(exec);
2420     castedThis->setCustomAttr(exec, value);
2421 }
2422
2423
2424 void setJSTestObjWithScriptStateAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2425 {
2426     JSValue value = JSValue::decode(encodedValue);
2427     UNUSED_PARAM(baseObject);
2428     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2429     if (UNLIKELY(!castedThis)) {
2430         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2431             reportDeprecatedSetterError(*exec, "TestObj", "withScriptStateAttribute");
2432         else
2433             throwSetterTypeError(*exec, "TestObj", "withScriptStateAttribute");
2434         return;
2435     }
2436     TestObj& impl = castedThis->impl();
2437     int nativeValue(toInt32(exec, value, NormalConversion));
2438     if (UNLIKELY(exec->hadException()))
2439         return;
2440     impl.setWithScriptStateAttribute(exec, nativeValue);
2441 }
2442
2443
2444 void setJSTestObjWithScriptExecutionContextAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2445 {
2446     JSValue value = JSValue::decode(encodedValue);
2447     UNUSED_PARAM(baseObject);
2448     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2449     if (UNLIKELY(!castedThis)) {
2450         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2451             reportDeprecatedSetterError(*exec, "TestObj", "withScriptExecutionContextAttribute");
2452         else
2453             throwSetterTypeError(*exec, "TestObj", "withScriptExecutionContextAttribute");
2454         return;
2455     }
2456     TestObj& impl = castedThis->impl();
2457     TestObj* nativeValue(JSTestObj::toWrapped(value));
2458     if (UNLIKELY(exec->hadException()))
2459         return;
2460     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
2461     if (!scriptContext)
2462         return;
2463     impl.setWithScriptExecutionContextAttribute(scriptContext, nativeValue);
2464 }
2465
2466
2467 void setJSTestObjWithScriptStateAttributeRaises(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2468 {
2469     JSValue value = JSValue::decode(encodedValue);
2470     UNUSED_PARAM(baseObject);
2471     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2472     if (UNLIKELY(!castedThis)) {
2473         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2474             reportDeprecatedSetterError(*exec, "TestObj", "withScriptStateAttributeRaises");
2475         else
2476             throwSetterTypeError(*exec, "TestObj", "withScriptStateAttributeRaises");
2477         return;
2478     }
2479     TestObj& impl = castedThis->impl();
2480     TestObj* nativeValue(JSTestObj::toWrapped(value));
2481     if (UNLIKELY(exec->hadException()))
2482         return;
2483     impl.setWithScriptStateAttributeRaises(exec, nativeValue);
2484 }
2485
2486
2487 void setJSTestObjWithScriptExecutionContextAttributeRaises(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2488 {
2489     JSValue value = JSValue::decode(encodedValue);
2490     UNUSED_PARAM(baseObject);
2491     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2492     if (UNLIKELY(!castedThis)) {
2493         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2494             reportDeprecatedSetterError(*exec, "TestObj", "withScriptExecutionContextAttributeRaises");
2495         else
2496             throwSetterTypeError(*exec, "TestObj", "withScriptExecutionContextAttributeRaises");
2497         return;
2498     }
2499     TestObj& impl = castedThis->impl();
2500     TestObj* nativeValue(JSTestObj::toWrapped(value));
2501     if (UNLIKELY(exec->hadException()))
2502         return;
2503     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
2504     if (!scriptContext)
2505         return;
2506     impl.setWithScriptExecutionContextAttributeRaises(scriptContext, nativeValue);
2507 }
2508
2509
2510 void setJSTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2511 {
2512     JSValue value = JSValue::decode(encodedValue);
2513     UNUSED_PARAM(baseObject);
2514     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2515     if (UNLIKELY(!castedThis)) {
2516         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2517             reportDeprecatedSetterError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateAttribute");
2518         else
2519             throwSetterTypeError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateAttribute");
2520         return;
2521     }
2522     TestObj& impl = castedThis->impl();
2523     TestObj* nativeValue(JSTestObj::toWrapped(value));
2524     if (UNLIKELY(exec->hadException()))
2525         return;
2526     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
2527     if (!scriptContext)
2528         return;
2529     impl.setWithScriptExecutionContextAndScriptStateAttribute(exec, scriptContext, nativeValue);
2530 }
2531
2532
2533 void setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2534 {
2535     JSValue value = JSValue::decode(encodedValue);
2536     UNUSED_PARAM(baseObject);
2537     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2538     if (UNLIKELY(!castedThis)) {
2539         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2540             reportDeprecatedSetterError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateAttributeRaises");
2541         else
2542             throwSetterTypeError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateAttributeRaises");
2543         return;
2544     }
2545     TestObj& impl = castedThis->impl();
2546     TestObj* nativeValue(JSTestObj::toWrapped(value));
2547     if (UNLIKELY(exec->hadException()))
2548         return;
2549     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
2550     if (!scriptContext)
2551         return;
2552     impl.setWithScriptExecutionContextAndScriptStateAttributeRaises(exec, scriptContext, nativeValue);
2553 }
2554
2555
2556 void setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2557 {
2558     JSValue value = JSValue::decode(encodedValue);
2559     UNUSED_PARAM(baseObject);
2560     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2561     if (UNLIKELY(!castedThis)) {
2562         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2563             reportDeprecatedSetterError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateWithSpacesAttribute");
2564         else
2565             throwSetterTypeError(*exec, "TestObj", "withScriptExecutionContextAndScriptStateWithSpacesAttribute");
2566         return;
2567     }
2568     TestObj& impl = castedThis->impl();
2569     TestObj* nativeValue(JSTestObj::toWrapped(value));
2570     if (UNLIKELY(exec->hadException()))
2571         return;
2572     ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
2573     if (!scriptContext)
2574         return;
2575     impl.setWithScriptExecutionContextAndScriptStateWithSpacesAttribute(exec, scriptContext, nativeValue);
2576 }
2577
2578
2579 void setJSTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2580 {
2581     JSValue value = JSValue::decode(encodedValue);
2582     UNUSED_PARAM(baseObject);
2583     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2584     if (UNLIKELY(!castedThis)) {
2585         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2586             reportDeprecatedSetterError(*exec, "TestObj", "withScriptArgumentsAndCallStackAttribute");
2587         else
2588             throwSetterTypeError(*exec, "TestObj", "withScriptArgumentsAndCallStackAttribute");
2589         return;
2590     }
2591     TestObj& impl = castedThis->impl();
2592     TestObj* nativeValue(JSTestObj::toWrapped(value));
2593     if (UNLIKELY(exec->hadException()))
2594         return;
2595     impl.setWithScriptArgumentsAndCallStackAttribute(nativeValue);
2596 }
2597
2598
2599 #if ENABLE(Condition1)
2600 void setJSTestObjConditionalAttr1(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2601 {
2602     JSValue value = JSValue::decode(encodedValue);
2603     UNUSED_PARAM(baseObject);
2604     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2605     if (UNLIKELY(!castedThis)) {
2606         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2607             reportDeprecatedSetterError(*exec, "TestObj", "conditionalAttr1");
2608         else
2609             throwSetterTypeError(*exec, "TestObj", "conditionalAttr1");
2610         return;
2611     }
2612     TestObj& impl = castedThis->impl();
2613     int nativeValue(toInt32(exec, value, NormalConversion));
2614     if (UNLIKELY(exec->hadException()))
2615         return;
2616     impl.setConditionalAttr1(nativeValue);
2617 }
2618
2619 #endif
2620
2621 #if ENABLE(Condition1) && ENABLE(Condition2)
2622 void setJSTestObjConditionalAttr2(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2623 {
2624     JSValue value = JSValue::decode(encodedValue);
2625     UNUSED_PARAM(baseObject);
2626     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2627     if (UNLIKELY(!castedThis)) {
2628         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2629             reportDeprecatedSetterError(*exec, "TestObj", "conditionalAttr2");
2630         else
2631             throwSetterTypeError(*exec, "TestObj", "conditionalAttr2");
2632         return;
2633     }
2634     TestObj& impl = castedThis->impl();
2635     int nativeValue(toInt32(exec, value, NormalConversion));
2636     if (UNLIKELY(exec->hadException()))
2637         return;
2638     impl.setConditionalAttr2(nativeValue);
2639 }
2640
2641 #endif
2642
2643 #if ENABLE(Condition1) || ENABLE(Condition2)
2644 void setJSTestObjConditionalAttr3(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2645 {
2646     JSValue value = JSValue::decode(encodedValue);
2647     UNUSED_PARAM(baseObject);
2648     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2649     if (UNLIKELY(!castedThis)) {
2650         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2651             reportDeprecatedSetterError(*exec, "TestObj", "conditionalAttr3");
2652         else
2653             throwSetterTypeError(*exec, "TestObj", "conditionalAttr3");
2654         return;
2655     }
2656     TestObj& impl = castedThis->impl();
2657     int nativeValue(toInt32(exec, value, NormalConversion));
2658     if (UNLIKELY(exec->hadException()))
2659         return;
2660     impl.setConditionalAttr3(nativeValue);
2661 }
2662
2663 #endif
2664
2665 #if ENABLE(Condition1)
2666 void setJSTestObjConditionalAttr4Constructor(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2667 {
2668     JSValue value = JSValue::decode(encodedValue);
2669     UNUSED_PARAM(baseObject);
2670     UNUSED_PARAM(thisValue);
2671     JSTestObj* castedThis = jsCast<JSTestObj*>(baseObject);
2672     UNUSED_PARAM(thisValue);
2673     UNUSED_PARAM(exec);
2674     // Shadowing a built-in constructor
2675     castedThis->putDirect(exec->vm(), Identifier(exec, "conditionalAttr4"), value);
2676 }
2677
2678 #endif
2679
2680 #if ENABLE(Condition1) && ENABLE(Condition2)
2681 void setJSTestObjConditionalAttr5Constructor(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2682 {
2683     JSValue value = JSValue::decode(encodedValue);
2684     UNUSED_PARAM(baseObject);
2685     UNUSED_PARAM(thisValue);
2686     JSTestObj* castedThis = jsCast<JSTestObj*>(baseObject);
2687     UNUSED_PARAM(thisValue);
2688     UNUSED_PARAM(exec);
2689     // Shadowing a built-in constructor
2690     castedThis->putDirect(exec->vm(), Identifier(exec, "conditionalAttr5"), value);
2691 }
2692
2693 #endif
2694
2695 #if ENABLE(Condition1) || ENABLE(Condition2)
2696 void setJSTestObjConditionalAttr6Constructor(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2697 {
2698     JSValue value = JSValue::decode(encodedValue);
2699     UNUSED_PARAM(baseObject);
2700     UNUSED_PARAM(thisValue);
2701     JSTestObj* castedThis = jsCast<JSTestObj*>(baseObject);
2702     UNUSED_PARAM(thisValue);
2703     UNUSED_PARAM(exec);
2704     // Shadowing a built-in constructor
2705     castedThis->putDirect(exec->vm(), Identifier(exec, "conditionalAttr6"), value);
2706 }
2707
2708 #endif
2709
2710 void setJSTestObjAnyAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2711 {
2712     JSValue value = JSValue::decode(encodedValue);
2713     UNUSED_PARAM(baseObject);
2714     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2715     if (UNLIKELY(!castedThis)) {
2716         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2717             reportDeprecatedSetterError(*exec, "TestObj", "anyAttribute");
2718         else
2719             throwSetterTypeError(*exec, "TestObj", "anyAttribute");
2720         return;
2721     }
2722     TestObj& impl = castedThis->impl();
2723     Deprecated::ScriptValue nativeValue(exec->vm(), value);
2724     if (UNLIKELY(exec->hadException()))
2725         return;
2726     impl.setAnyAttribute(nativeValue);
2727 }
2728
2729
2730 void setJSTestObjMutablePoint(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2731 {
2732     JSValue value = JSValue::decode(encodedValue);
2733     UNUSED_PARAM(baseObject);
2734     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2735     if (UNLIKELY(!castedThis)) {
2736         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2737             reportDeprecatedSetterError(*exec, "TestObj", "mutablePoint");
2738         else
2739             throwSetterTypeError(*exec, "TestObj", "mutablePoint");
2740         return;
2741     }
2742     TestObj& impl = castedThis->impl();
2743     SVGPropertyTearOff<SVGPoint>* nativeValue(JSSVGPoint::toWrapped(value));
2744     if (UNLIKELY(exec->hadException()))
2745         return;
2746     impl.setMutablePoint(nativeValue);
2747 }
2748
2749
2750 void setJSTestObjImmutablePoint(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2751 {
2752     JSValue value = JSValue::decode(encodedValue);
2753     UNUSED_PARAM(baseObject);
2754     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2755     if (UNLIKELY(!castedThis)) {
2756         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2757             reportDeprecatedSetterError(*exec, "TestObj", "immutablePoint");
2758         else
2759             throwSetterTypeError(*exec, "TestObj", "immutablePoint");
2760         return;
2761     }
2762     TestObj& impl = castedThis->impl();
2763     SVGPropertyTearOff<SVGPoint>* nativeValue(JSSVGPoint::toWrapped(value));
2764     if (UNLIKELY(exec->hadException()))
2765         return;
2766     impl.setImmutablePoint(nativeValue);
2767 }
2768
2769
2770 void setJSTestObjStrawberry(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2771 {
2772     JSValue value = JSValue::decode(encodedValue);
2773     UNUSED_PARAM(baseObject);
2774     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2775     if (UNLIKELY(!castedThis)) {
2776         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2777             reportDeprecatedSetterError(*exec, "TestObj", "strawberry");
2778         else
2779             throwSetterTypeError(*exec, "TestObj", "strawberry");
2780         return;
2781     }
2782     TestObj& impl = castedThis->impl();
2783     int nativeValue(toInt32(exec, value, NormalConversion));
2784     if (UNLIKELY(exec->hadException()))
2785         return;
2786     impl.setBlueberry(nativeValue);
2787 }
2788
2789
2790 void setJSTestObjStrictFloat(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2791 {
2792     JSValue value = JSValue::decode(encodedValue);
2793     UNUSED_PARAM(baseObject);
2794     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2795     if (UNLIKELY(!castedThis)) {
2796         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2797             reportDeprecatedSetterError(*exec, "TestObj", "strictFloat");
2798         else
2799             throwSetterTypeError(*exec, "TestObj", "strictFloat");
2800         return;
2801     }
2802     TestObj& impl = castedThis->impl();
2803     float nativeValue(value.toFloat(exec));
2804     if (UNLIKELY(exec->hadException()))
2805         return;
2806     impl.setStrictFloat(nativeValue);
2807 }
2808
2809
2810 void setJSTestObjId(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2811 {
2812     JSValue value = JSValue::decode(encodedValue);
2813     UNUSED_PARAM(baseObject);
2814     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2815     if (UNLIKELY(!castedThis)) {
2816         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2817             reportDeprecatedSetterError(*exec, "TestObj", "id");
2818         else
2819             throwSetterTypeError(*exec, "TestObj", "id");
2820         return;
2821     }
2822     TestObj& impl = castedThis->impl();
2823     int nativeValue(toInt32(exec, value, NormalConversion));
2824     if (UNLIKELY(exec->hadException()))
2825         return;
2826     impl.setId(nativeValue);
2827 }
2828
2829
2830 void setJSTestObjReplaceableAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2831 {
2832     JSValue value = JSValue::decode(encodedValue);
2833     UNUSED_PARAM(baseObject);
2834     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2835     if (UNLIKELY(!castedThis)) {
2836         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2837             reportDeprecatedSetterError(*exec, "TestObj", "replaceableAttribute");
2838         else
2839             throwSetterTypeError(*exec, "TestObj", "replaceableAttribute");
2840         return;
2841     }
2842     // Shadowing a built-in object
2843     castedThis->putDirect(exec->vm(), Identifier(exec, "replaceableAttribute"), value);
2844 }
2845
2846
2847 void setJSTestObjNullableLongSettableAttribute(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2848 {
2849     JSValue value = JSValue::decode(encodedValue);
2850     UNUSED_PARAM(baseObject);
2851     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2852     if (UNLIKELY(!castedThis)) {
2853         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2854             reportDeprecatedSetterError(*exec, "TestObj", "nullableLongSettableAttribute");
2855         else
2856             throwSetterTypeError(*exec, "TestObj", "nullableLongSettableAttribute");
2857         return;
2858     }
2859     TestObj& impl = castedThis->impl();
2860     int nativeValue(toInt32(exec, value, NormalConversion));
2861     if (UNLIKELY(exec->hadException()))
2862         return;
2863     impl.setNullableLongSettableAttribute(nativeValue);
2864 }
2865
2866
2867 void setJSTestObjNullableStringValue(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2868 {
2869     JSValue value = JSValue::decode(encodedValue);
2870     UNUSED_PARAM(baseObject);
2871     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2872     if (UNLIKELY(!castedThis)) {
2873         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2874             reportDeprecatedSetterError(*exec, "TestObj", "nullableStringValue");
2875         else
2876             throwSetterTypeError(*exec, "TestObj", "nullableStringValue");
2877         return;
2878     }
2879     TestObj& impl = castedThis->impl();
2880     int nativeValue(toInt32(exec, value, NormalConversion));
2881     if (UNLIKELY(exec->hadException()))
2882         return;
2883     impl.setNullableStringValue(nativeValue);
2884 }
2885
2886
2887 void setJSTestObjAttributeWithReservedEnumType(ExecState* exec, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
2888 {
2889     JSValue value = JSValue::decode(encodedValue);
2890     UNUSED_PARAM(baseObject);
2891     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(JSValue::decode(thisValue));
2892     if (UNLIKELY(!castedThis)) {
2893         if (jsDynamicCast<JSTestObjPrototype*>(JSValue::decode(thisValue)))
2894             reportDeprecatedSetterError(*exec, "TestObj", "attributeWithReservedEnumType");
2895         else
2896             throwSetterTypeError(*exec, "TestObj", "attributeWithReservedEnumType");
2897         return;
2898     }
2899     TestObj& impl = castedThis->impl();
2900     const String nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec));
2901     if (UNLIKELY(exec->hadException()))
2902         return;
2903     if (nativeValue != "" && nativeValue != "OptionalValue1" && nativeValue != "OptionalValue2" && nativeValue != "OptionalValue3")
2904         return;
2905     impl.setAttributeWithReservedEnumType(nativeValue);
2906 }
2907
2908
2909 JSValue JSTestObj::getConstructor(VM& vm, JSGlobalObject* globalObject)
2910 {
2911     return getDOMConstructor<JSTestObjConstructor>(vm, jsCast<JSDOMGlobalObject*>(globalObject));
2912 }
2913
2914 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethod(ExecState* exec)
2915 {
2916     JSValue thisValue = exec->thisValue();
2917     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
2918     if (UNLIKELY(!castedThis))
2919         return throwThisTypeError(*exec, "TestObj", "voidMethod");
2920     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
2921     TestObj& impl = castedThis->impl();
2922     impl.voidMethod();
2923     return JSValue::encode(jsUndefined());
2924 }
2925
2926 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethodWithArgs(ExecState* exec)
2927 {
2928     JSValue thisValue = exec->thisValue();
2929     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
2930     if (UNLIKELY(!castedThis))
2931         return throwThisTypeError(*exec, "TestObj", "voidMethodWithArgs");
2932     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
2933     TestObj& impl = castedThis->impl();
2934     if (exec->argumentCount() < 3)
2935         return throwVMError(exec, createNotEnoughArgumentsError(exec));
2936     int longArg(toInt32(exec, exec->argument(0), NormalConversion));
2937     if (UNLIKELY(exec->hadException()))
2938         return JSValue::encode(jsUndefined());
2939     const String& strArg(exec->argument(1).isEmpty() ? String() : exec->argument(1).toString(exec)->value(exec));
2940     if (UNLIKELY(exec->hadException()))
2941         return JSValue::encode(jsUndefined());
2942     TestObj* objArg(JSTestObj::toWrapped(exec->argument(2)));
2943     if (UNLIKELY(exec->hadException()))
2944         return JSValue::encode(jsUndefined());
2945     impl.voidMethodWithArgs(longArg, strArg, objArg);
2946     return JSValue::encode(jsUndefined());
2947 }
2948
2949 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionByteMethod(ExecState* exec)
2950 {
2951     JSValue thisValue = exec->thisValue();
2952     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
2953     if (UNLIKELY(!castedThis))
2954         return throwThisTypeError(*exec, "TestObj", "byteMethod");
2955     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
2956     TestObj& impl = castedThis->impl();
2957     JSValue result = jsNumber(impl.byteMethod());
2958     return JSValue::encode(result);
2959 }
2960
2961 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionByteMethodWithArgs(ExecState* exec)
2962 {
2963     JSValue thisValue = exec->thisValue();
2964     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
2965     if (UNLIKELY(!castedThis))
2966         return throwThisTypeError(*exec, "TestObj", "byteMethodWithArgs");
2967     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
2968     TestObj& impl = castedThis->impl();
2969     if (exec->argumentCount() < 3)
2970         return throwVMError(exec, createNotEnoughArgumentsError(exec));
2971     int8_t byteArg(toInt8(exec, exec->argument(0), NormalConversion));
2972     if (UNLIKELY(exec->hadException()))
2973         return JSValue::encode(jsUndefined());
2974     const String& strArg(exec->argument(1).isEmpty() ? String() : exec->argument(1).toString(exec)->value(exec));
2975     if (UNLIKELY(exec->hadException()))
2976         return JSValue::encode(jsUndefined());
2977     TestObj* objArg(JSTestObj::toWrapped(exec->argument(2)));
2978     if (UNLIKELY(exec->hadException()))
2979         return JSValue::encode(jsUndefined());
2980     JSValue result = jsNumber(impl.byteMethodWithArgs(byteArg, strArg, objArg));
2981     return JSValue::encode(result);
2982 }
2983
2984 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOctetMethod(ExecState* exec)
2985 {
2986     JSValue thisValue = exec->thisValue();
2987     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
2988     if (UNLIKELY(!castedThis))
2989         return throwThisTypeError(*exec, "TestObj", "octetMethod");
2990     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
2991     TestObj& impl = castedThis->impl();
2992     JSValue result = jsNumber(impl.octetMethod());
2993     return JSValue::encode(result);
2994 }
2995
2996 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOctetMethodWithArgs(ExecState* exec)
2997 {
2998     JSValue thisValue = exec->thisValue();
2999     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3000     if (UNLIKELY(!castedThis))
3001         return throwThisTypeError(*exec, "TestObj", "octetMethodWithArgs");
3002     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3003     TestObj& impl = castedThis->impl();
3004     if (exec->argumentCount() < 3)
3005         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3006     uint8_t octetArg(toUInt8(exec, exec->argument(0), NormalConversion));
3007     if (UNLIKELY(exec->hadException()))
3008         return JSValue::encode(jsUndefined());
3009     const String& strArg(exec->argument(1).isEmpty() ? String() : exec->argument(1).toString(exec)->value(exec));
3010     if (UNLIKELY(exec->hadException()))
3011         return JSValue::encode(jsUndefined());
3012     TestObj* objArg(JSTestObj::toWrapped(exec->argument(2)));
3013     if (UNLIKELY(exec->hadException()))
3014         return JSValue::encode(jsUndefined());
3015     JSValue result = jsNumber(impl.octetMethodWithArgs(octetArg, strArg, objArg));
3016     return JSValue::encode(result);
3017 }
3018
3019 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionLongMethod(ExecState* exec)
3020 {
3021     JSValue thisValue = exec->thisValue();
3022     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3023     if (UNLIKELY(!castedThis))
3024         return throwThisTypeError(*exec, "TestObj", "longMethod");
3025     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3026     TestObj& impl = castedThis->impl();
3027     JSValue result = jsNumber(impl.longMethod());
3028     return JSValue::encode(result);
3029 }
3030
3031 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionLongMethodWithArgs(ExecState* exec)
3032 {
3033     JSValue thisValue = exec->thisValue();
3034     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3035     if (UNLIKELY(!castedThis))
3036         return throwThisTypeError(*exec, "TestObj", "longMethodWithArgs");
3037     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3038     TestObj& impl = castedThis->impl();
3039     if (exec->argumentCount() < 3)
3040         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3041     int longArg(toInt32(exec, exec->argument(0), NormalConversion));
3042     if (UNLIKELY(exec->hadException()))
3043         return JSValue::encode(jsUndefined());
3044     const String& strArg(exec->argument(1).isEmpty() ? String() : exec->argument(1).toString(exec)->value(exec));
3045     if (UNLIKELY(exec->hadException()))
3046         return JSValue::encode(jsUndefined());
3047     TestObj* objArg(JSTestObj::toWrapped(exec->argument(2)));
3048     if (UNLIKELY(exec->hadException()))
3049         return JSValue::encode(jsUndefined());
3050     JSValue result = jsNumber(impl.longMethodWithArgs(longArg, strArg, objArg));
3051     return JSValue::encode(result);
3052 }
3053
3054 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(ExecState* exec)
3055 {
3056     JSValue thisValue = exec->thisValue();
3057     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3058     if (UNLIKELY(!castedThis))
3059         return throwThisTypeError(*exec, "TestObj", "objMethod");
3060     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3061     TestObj& impl = castedThis->impl();
3062     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.objMethod()));
3063     return JSValue::encode(result);
3064 }
3065
3066 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(ExecState* exec)
3067 {
3068     JSValue thisValue = exec->thisValue();
3069     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3070     if (UNLIKELY(!castedThis))
3071         return throwThisTypeError(*exec, "TestObj", "objMethodWithArgs");
3072     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3073     TestObj& impl = castedThis->impl();
3074     if (exec->argumentCount() < 3)
3075         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3076     int longArg(toInt32(exec, exec->argument(0), NormalConversion));
3077     if (UNLIKELY(exec->hadException()))
3078         return JSValue::encode(jsUndefined());
3079     const String& strArg(exec->argument(1).isEmpty() ? String() : exec->argument(1).toString(exec)->value(exec));
3080     if (UNLIKELY(exec->hadException()))
3081         return JSValue::encode(jsUndefined());
3082     TestObj* objArg(JSTestObj::toWrapped(exec->argument(2)));
3083     if (UNLIKELY(exec->hadException()))
3084         return JSValue::encode(jsUndefined());
3085     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.objMethodWithArgs(longArg, strArg, objArg)));
3086     return JSValue::encode(result);
3087 }
3088
3089 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithSequenceArg(ExecState* exec)
3090 {
3091     JSValue thisValue = exec->thisValue();
3092     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3093     if (UNLIKELY(!castedThis))
3094         return throwThisTypeError(*exec, "TestObj", "methodWithSequenceArg");
3095     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3096     TestObj& impl = castedThis->impl();
3097     if (exec->argumentCount() < 1)
3098         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3099     Vector<RefPtr<ScriptProfile>> sequenceArg((toRefPtrNativeArray<ScriptProfile, JSScriptProfile>(exec, exec->argument(0), &JSScriptProfile::toWrapped)));
3100     if (UNLIKELY(exec->hadException()))
3101         return JSValue::encode(jsUndefined());
3102     impl.methodWithSequenceArg(sequenceArg);
3103     return JSValue::encode(jsUndefined());
3104 }
3105
3106 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodReturningSequence(ExecState* exec)
3107 {
3108     JSValue thisValue = exec->thisValue();
3109     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3110     if (UNLIKELY(!castedThis))
3111         return throwThisTypeError(*exec, "TestObj", "methodReturningSequence");
3112     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3113     TestObj& impl = castedThis->impl();
3114     if (exec->argumentCount() < 1)
3115         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3116     int longArg(toInt32(exec, exec->argument(0), NormalConversion));
3117     if (UNLIKELY(exec->hadException()))
3118         return JSValue::encode(jsUndefined());
3119     JSValue result = jsArray(exec, castedThis->globalObject(), impl.methodReturningSequence(longArg));
3120     return JSValue::encode(result);
3121 }
3122
3123 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithEnumArg(ExecState* exec)
3124 {
3125     JSValue thisValue = exec->thisValue();
3126     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3127     if (UNLIKELY(!castedThis))
3128         return throwThisTypeError(*exec, "TestObj", "methodWithEnumArg");
3129     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3130     TestObj& impl = castedThis->impl();
3131     if (exec->argumentCount() < 1)
3132         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3133     const String enumArg(exec->argument(0).isEmpty() ? String() : exec->argument(0).toString(exec)->value(exec));
3134     if (UNLIKELY(exec->hadException()))
3135         return JSValue::encode(jsUndefined());
3136     if (enumArg != "" && enumArg != "EnumValue1" && enumArg != "EnumValue2" && enumArg != "EnumValue3")
3137         return throwArgumentMustBeEnumError(*exec, 0, "enumArg", "TestObj", "methodWithEnumArg", "\"\", \"EnumValue1\", \"EnumValue2\", \"EnumValue3\"");
3138     impl.methodWithEnumArg(enumArg);
3139     return JSValue::encode(jsUndefined());
3140 }
3141
3142 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(ExecState* exec)
3143 {
3144     JSValue thisValue = exec->thisValue();
3145     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3146     if (UNLIKELY(!castedThis))
3147         return throwThisTypeError(*exec, "TestObj", "methodThatRequiresAllArgsAndThrows");
3148     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3149     TestObj& impl = castedThis->impl();
3150     if (exec->argumentCount() < 2)
3151         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3152     ExceptionCode ec = 0;
3153     const String& strArg(exec->argument(0).isEmpty() ? String() : exec->argument(0).toString(exec)->value(exec));
3154     if (UNLIKELY(exec->hadException()))
3155         return JSValue::encode(jsUndefined());
3156     TestObj* objArg(JSTestObj::toWrapped(exec->argument(1)));
3157     if (UNLIKELY(exec->hadException()))
3158         return JSValue::encode(jsUndefined());
3159     JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.methodThatRequiresAllArgsAndThrows(strArg, objArg, ec)));
3160
3161     setDOMException(exec, ec);
3162     return JSValue::encode(result);
3163 }
3164
3165 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(ExecState* exec)
3166 {
3167     JSValue thisValue = exec->thisValue();
3168     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3169     if (UNLIKELY(!castedThis))
3170         return throwThisTypeError(*exec, "TestObj", "serializedValue");
3171     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3172     TestObj& impl = castedThis->impl();
3173     if (exec->argumentCount() < 1)
3174         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3175     RefPtr<SerializedScriptValue> serializedArg(SerializedScriptValue::create(exec, exec->argument(0), 0, 0));
3176     if (UNLIKELY(exec->hadException()))
3177         return JSValue::encode(jsUndefined());
3178     impl.serializedValue(serializedArg);
3179     return JSValue::encode(jsUndefined());
3180 }
3181
3182 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(ExecState* exec)
3183 {
3184     JSValue thisValue = exec->thisValue();
3185     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3186     if (UNLIKELY(!castedThis))
3187         return throwThisTypeError(*exec, "TestObj", "optionsObject");
3188     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3189     TestObj& impl = castedThis->impl();
3190     if (exec->argumentCount() < 1)
3191         return throwVMError(exec, createNotEnoughArgumentsError(exec));
3192     Dictionary oo(exec, exec->argument(0));
3193     if (UNLIKELY(exec->hadException()))
3194         return JSValue::encode(jsUndefined());
3195     Dictionary ooo(exec, exec->argument(1));
3196     if (UNLIKELY(exec->hadException()))
3197         return JSValue::encode(jsUndefined());
3198     impl.optionsObject(oo, ooo);
3199     return JSValue::encode(jsUndefined());
3200 }
3201
3202 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(ExecState* exec)
3203 {
3204     JSValue thisValue = exec->thisValue();
3205     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3206     if (UNLIKELY(!castedThis))
3207         return throwThisTypeError(*exec, "TestObj", "methodWithException");
3208     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3209     TestObj& impl = castedThis->impl();
3210     ExceptionCode ec = 0;
3211     impl.methodWithException(ec);
3212     setDOMException(exec, ec);
3213     return JSValue::encode(jsUndefined());
3214 }
3215
3216 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(ExecState* exec)
3217 {
3218     JSValue thisValue = exec->thisValue();
3219     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3220     if (UNLIKELY(!castedThis))
3221         return throwThisTypeError(*exec, "TestObj", "customMethod");
3222     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3223     return JSValue::encode(castedThis->customMethod(exec));
3224 }
3225
3226 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(ExecState* exec)
3227 {
3228     JSValue thisValue = exec->thisValue();
3229     JSTestObj* castedThis = jsDynamicCast<JSTestObj*>(thisValue);
3230     if (UNLIKELY(!castedThis))
3231         return throwThisTypeError(*exec, "TestObj", "customMethodWithArgs");
3232     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
3233     return JSValue::encode(castedThis->customMethodWithArgs(exec));
3234 }
3235
3236 EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(ExecState* exec)